2012-10-12 42 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