【发布时间】:2021-04-09 11:38:21
【问题描述】:
我正在使用clip-path 属性来制作不规则形状的元素,如下所示:
#triangle {
background-color: indigo;
clip-path: url(#shape);
height: 200px;
width: 400px;
}
<div id="triangle"></div>
<svg width="0" height="0">
<defs>
<clipPath clipPathUnits="objectBoundingBox" id="shape">
<polygon points="0 0, 1 0, 1 1"></polygon>
</clipPath>
</defs>
</svg>
但碰巧页面上具有这种形状的元素之一也应用了box-shadow:
#triangle {
background-color: indigo;
clip-path: url(#shape);
height: 200px;
width: 400px;
box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
}
<div id="triangle"></div>
<svg width="0" height="0">
<defs>
<clipPath clipPathUnits="objectBoundingBox" id="shape">
<polygon points="0 0, 1 0, 1 1"></polygon>
</clipPath>
</defs>
</svg>
阴影显然是不可见的,因为clip-path 剪掉了它。当我在 MS Edge 或 Chrome 中使用它时,一切都很好,有一个带有锐角的三角形,没有应有的可见阴影。在 Firefox 上,第一个 sn-p 的工作方式相同,就好了。但是第二个 sn-p 在 Firefox 上呈现梯形而不是三角形,就像在图像上一样。一旦box-shadow 属性被禁用,它就会消失。而box-shadow 甚至不是像三角形那样的indigo 颜色,它是透明的黑色
这是一个Firefox的错误,有没有办法避免它?当然我可以删除box-shadow,因为它无论如何都被剪掉了,但是看看是什么原因造成的仍然很有趣。
【问题讨论】:
-
对我来说似乎是一个新错误,投影也失败了。
-
@G-Cyrillus,我也这么认为,我发现
clip-path就像box-shadow是这个div的一部分一样。我要把它归档到 Firefox 错误跟踪器 -
clip-path:polygon( 0 0 , 100% 0 , 100% 100%, 0 0);而 svg 与投影有相同的问题,盒子阴影根本没有绘制(和以前一样);) -
对于解决方法,您可以查看此答案:stackoverflow.com/questions/40552950/…