2012-10-12 40 views
25

海蘭那裏,自定義形狀周圍的CSS框陰影?

我需要創建一個div它看起來像這樣:

screenshot http://imageshack.us/a/img19/8223/bubblep.png

我所想出到目前爲止是這樣的: http://jsfiddle.net/suamikim/ft33k/

.bubble { 
    position: relative; 
    width: 80px; 
    height: 160px; 
    border: 1px solid #33A7F4; 
    border-radius: 9px; 
    margin: 100px; 
    -webkit-box-shadow: 0px 0px 20px 2px #33A7F4; 
    -moz-box-shadow: 0px 0px 20px 2px #33A7F4; 
    -ms-box-shadow: 0px 0px 20px 2px #33A7F4; 
    -o-box-shadow: 0px 0px 20px 2px #33A7F4; 
    box-shadow: 0px 0px 20px 2px #33A7F4; 

} 

.bubble:after, .bubble:before { 
    content: ' '; 
    position: absolute; 
    width: 0; 
    height: 0; 
    border: 17px solid transparent; 
    right: 100%; 
} 

.bubble-left:before { 
    border-top-color: #33A7F4; 
    border-right-color: #33A7F4; 
    top: 60px; 
} 

.bubble-left:after { 
    border-width: 16px; 
    border-top-color: black; 
    border-right-color: black; 
    top: 61px; 
} 

正如你所看到的,「唯一」的問題是泡沫尾部(三角箭頭)周圍的陰影。

我也試過不使用before-&之後的僞類,但使用第二個div只保存三角形(與轉換,旋轉,...),但很明顯,這並沒有導致我沒有任何成功。

靜態圖片是沒有選擇的,因爲矩形本身的大小和尾部的位置都是動態的,並且可以在「運行時」期間更改。

我也想出了一個解決方案,我用動態生成的svg創建邊界&陰影。如果找不到其他選項,我會堅持使用此解決方案,但感覺像「黑客」一樣強大。我不在這裏發佈這個解決方案,因爲它涉及2個JavaScript-framworks(extjs & raphael),這個問題應該是關於HTML & css。 儘管如此,如果有人對它感興趣,我仍然可以提供它...

最後一件事:瀏覽器兼容性並不是什麼大事。如果它工作在大的(火狐,Chrome,歌劇,即10,......),一切都很好的最新版本;)

感謝,

MIK

回答

5

它可能不是你的這樣做的最大利益,我會保持原樣。

http://css-tricks.com/triangle-with-shadow/

你可以跳過了「兩廂法」,它顯示了這樣做使用:before:after(你已經用完使得泡沫)與transform的幫助非常手動方式。如果你真的想這樣做,你可以將箭頭向左浮動,並通過僞元素應用陰影。

+0

尼斯的鏈接,可以用幾個元素被應用到他的情況下,非因90度三角形開放。我想建議使用邊框圖像,但是這更靈活:) – xception

+0

我之前已經找到了這個鏈接,並且能夠按照我想要的方式創建三角形,但是我無法調整它的盒子陰影所以它只會顯示在左邊......無論如何感謝鏈接! – suamikim