问题描述(Fiddle):
我尝试在PNG周围制作一个透明的实心边框,所以box-shadow
不是一个选项(因为它只会给图像的方形角落蒙上阴影)。
如何让filter: drop-shadow()
在整个元素周围创建一个边框,而不用模糊或扩散阴影?我可以对同一个元素应用多个滤镜来实现这个效果吗?或者有其他方法来实现这个效果吗?
代码:
#object {
position: absolute;
left: 50%;
top: 50%;
margin-left: -211px;
margin-top: -120px;
}
.shadow {
-webkit-filter: drop-shadow(5px 5px white);
}
5条答案
按热度按时间rxztt3cl1#
更新Oh look I did something!...我的答案依然有效
因此,听起来您真正要问的问题是 “如何使用CSS向非方形图像添加笔划”,而我的答案是- * 您不能 *。正如您所发现的,webkit似乎能够使用
filter
、but that won't work on Firefox or IE、所以我真的看不出进一步探索过滤器的意义(除非你的所有观众都在使用Webkit/Blink)。我的建议是自己编辑图像,也许你可以招募一个服务器端库,如GD或ImageMagick(可能是糟糕的解决方案,但这是我对PHP的全部了解)来处理自动化。
dfty9e192#
我同意@Ian的观点,但是如果你不关心don't support CSS过滤器的 * 非Webkit * Web浏览器,你可以复制图像,并使用
grayscale()
和brightness()
函数的组合来伪造效果。例如:
Example Here.
kyvafyod3#
此后,微软宣布从2021年开始不再支持IE 11。
所以,如果你想继续使用过滤器,你总是可以多次使用它。
此处为:http://jsfiddle.net/ErickXavier/cw46Lso5/
hmtdttj44#
下面是我找到的解决方案:
过滤器可以被链接,但是它们也会应用到之前过滤器的结果中。这就是为什么Erick的解决方案不起作用。
Ian/Hashem的缩放技术只适用于没有孔洞的凸图像,即使如此,除非你的图像是一个圆形,否则边界的厚度不会是均匀的。
另外,也不用费心添加厂商前缀了,2023年各大浏览器都支持CSS filter属性:https://caniuse.com/css-filters
cidc1ykv5#
你能做到的!!请检查Codepen. https://codepen.io/anon/pen/vzYGML