2015-04-03 44 views
1

所以我與創建長長的影子,但在紋理背景任務。網上的其他教程都是如何用堅實的背景來做到這一點,該背景對於背景紋理或圖像看起來非常糟糕。CSS透明的長影

我非常接近它,嘗試一些不同的技術,但是我來到了兩種可能性,每一個問題,因此,如果任何人都可以幫我調試它要麼將不勝感激。這些不是跨瀏覽器,我只是想找出最低限度,如果它是可行的,所以請忽略缺乏前綴等。

類型1:純CSS 在CSS中使用Skew選項我能夠添加兩個塊在左側和底部有一個漸變。然後,每個傾斜45度,我得到接近預期的效果,但有一條線在那裏之間的陰影並不完全符合,我不能去走不重疊: http://jsfiddle.net/mfeola/4bfrkagu/

.block:before, .block:after{ 
    content:"";position:absolute; display:block; 
} 

.block:before{top:0; left:100%; height:100%; width:0; padding-right:100%; 
    transform-origin: 0% 0%; 
    transform: skew(0deg, 45deg); 
    background: linear-gradient(to right, rgba(0,0,0,0.5) 0%,rgba(0,0,0,0) 50%,rgba(0,0,0,0) 100%); 
} 
.block:after{top:100%; left:0; width:100%; height:0; padding-top:100%; 
    transform-origin: 0% 0%; 
    transform: skew(45deg, 0deg); 
    background: linear-gradient(to bottom, rgba(0,0,0,0.5) 0%,rgba(0,0,0,0) 50%,rgba(0,0,0,0) 100%); 
} 

2型:Javascript 隨着旋轉數學的計算出來,我可以旋轉漸變盒做出完美的陰影。問題是如果盒子的大小發生變化,陰影的角度會發生變化,並且這對我所要做的事情不起作用。我希望它能夠普遍運作。當我計算出數學時,我在這個包括了一個textarea: http://jsfiddle.net/mfeola/tpdhLqs1/

+0

如果您將右側陰影的寬度更改爲200x,容器的高度,線性漸變將在對角線上匹配得更好http://jsfiddle.net/teddyrised/4bfrkagu/6/ – Terry 2015-04-03 19:32:19

+0

我會這麼做,謝謝:)陰影真的排隊好得多這種方式 – 2015-04-03 19:49:48

+0

我做了什麼,使底部陰影一個正方形(響應與高度0填充頂部100%)得出了相同的結果。事實上,現在它可以自動處理任何高度!非常感謝你帶領我朝着正確的方向前進!我會更新問題 – 2015-04-03 21:13:30

回答

0

您可以嘗試添加邊界漸變來填補空白。

從這個鏈接想出來:https://css-tricks.com/examples/GradientBorder/

無法得到確切的顏色正確的,但我認爲你應該能夠做到這一點使用一些邊界梯度的格式如下:

.top-to-bottom { 
    border-right: 0 !important; 
    border-left: 0 !important; 
    border-top: 0 !important; 
    border: 1px solid; 
    -webkit-border-image: 
     -webkit-gradient(linear, 0 0, 0 100%, from(rgba(0,0,0,0.5)), to(rgba(0,0,0,1))) 1 100%; 
    -webkit-border-image: 
     -webkit-linear-gradient(rgba(0,0,0,0.5), rgba(0, 0, 0, 1)) 1 100%; 
    -moz-border-image: 
     -moz-linear-gradient(rgba(0,0,0,0.5), rgba(0, 0, 0, 1)) 1 100%;  
    -o-border-image: 
     -o-linear-gradient(rgba(0,0,0,0.5), rgba(0, 0, 0, 1)) 1 100%; 
    border-image: 
     linear-gradient(to bottom, rgba(0,0,0,0.5), rgba(0, 0, 0, 1)) 1 100%; 
} 

在這裏搞了一些:http://jsfiddle.net/4bfrkagu/13/,但無法得到正確的着色 - 我想我可以把它留給你。

+0

似乎沒有工作,現在我一直有一條黑線,而不是一條空線 – 2015-04-07 18:07:30

+0

哦,我想我明白髮生了什麼......它幾乎就像邊界,當在兩個透明背景重疊的背景,所以你看到的是如果你添加了兩個不透明的圖像。 - 看看這個小提琴,我擺脫了所有的邊界垃圾,並將僞元素向下移動1px。這是一樣的效果。所以我建議不要使用'rgba'並選擇不透明度,只需用'rgb'選擇明確的顏色過渡。那麼你應該能夠使用邊界漸變技巧 – Adjit 2015-04-07 20:05:29

+0

使用任何東西,但透明度不會在帶紋理的背景上看起來不錯。我更新了小提琴,看起來更像是我需要做的事情。我認爲如果我將透明度從黑暗的起始不透明度降低到較輕的透明度,則線條几乎不會引起注意,因此現在應該沒問題。如果我沒有在顏色中使用阿爾法,那麼無論如何我都會在那裏使用奇怪的顏色。 – 2015-04-08 17:28:19