请考虑以下事项:
.HTML
<div class="info_bubble">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque ornare ligula et nulla auctor vitae tincidunt erat congue.</p>
</div>
.CSS
.info_bubble {
padding: 0 15px;
margin: 1em 0 3em;
border: 5px solid #FFF;
background: #A6CE39;
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
border-radius: 10px;
width: 200px;
box-shadow: 0 0 10px #000;
color: #FFF;
position: absolute;
left: 50px;
top: 50px;
}
.info_bubble::before {
content: "";
position: absolute;
bottom: -20px;
left: 40px;
border-width: 20px 20px 0;
border-style: solid;
display: block;
width: 0;
top: 10px;
bottom: auto;
left: -23px;
border-width: 15px 23px 15px 0;
border-color: transparent #FFF;
}
.info_bubble::after {
content: "";
position: absolute;
bottom: -13px;
left: 47px;
border-width: 13px 13px 0;
border-style: solid;
display: block;
width: 0;
top: 16px;
bottom: auto;
left: -15px;
border-width: 9px 15px 9px 0;
border-color: transparent #A6CE39;
}
示例:http://jsfiddle.net/ysqQV/2/
上面会生成一个"语音气泡",左侧有一个三角形的"箭头"。箭头是从边框创建的,部分透明,部分不透明。
我想在语音气泡后面使用一个框阴影,但这在箭头周围有点时髦,因为它从整个元素而不仅仅是不透明部分掉落阴影。
示例:http://jsfiddle.net/ysqQV/1/
我知道这是正常行为,而不是错误,但我希望能够将框阴影剪辑到箭头的不透明部分。
我不能将单个图像用于语音气泡,因为内容可以是任何高度,我想避免使用多个图像拼凑在一起,因为这个解决方案要干净得多。
谁能想到可行的解决方法?
使用投影滤镜:
filter: drop-shadow(0 0 30px #333);
你所追求的是不可能的。但是,我知道一些解决方法:
首先也是最简单的,松开箭头上的阴影。它仍然会看起来不错。
其次,使用图像并在阴影中烘烤箭头。可能不理想,但它有效。
第三种选择,只需制作一个 20 x 20 的正方形,具有所有这些样式,然后通过变换旋转它。你会得到一颗钻石,所以下一步是使用蒙版来隐藏你不需要的边缘。我以前做过这个,但它在这个过程中肯定有点模糊,所以我实际上最终选择了第一个选项。如果您不能使用掩码,则可以将箭头包装在div/span或其他东西中,并将其设置为隐藏溢出。额外的代码,但相同的结果。
如果你需要,我可以为最后一个选项提供一个示例,但要到今晚我才有机会。
就个人而言,我会选择第一种选择。
希望对:)有所帮助
为时已晚,但我已使用您的代码使其适用于我的网站。所以,我在这里分享它。
它只需要一个额外的,就像在HTML中一样,以及一些CSS更改:
<div class="arrow_mask"></div>
http://jsfiddle.net/ysqQV/123/