【问题标题】:Firefox clip-path + box-shadow bugFirefox 剪辑路径 + 框阴影错误
【发布时间】: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/…

标签: css svg firefox clip-path


【解决方案1】:

事实证明,这确实是 Firefox 中的一个错误。 Here 是 bugzilla 问题

【讨论】:

  • 是吗?什么规范这么说的?我接受 Chrome 和 Firefox 有不同的渲染。你能解释一下为什么 Chrome 是正确的吗?
  • @RobertLongson,好吧,众所周知,clip-path 不适用于box-shadow,因为后者正在被剪辑,互联网上有文章。 specification 表示“如果没有指定参考框,border-box 将用作参考框。”而border-box 不包括box-shadow,所以这是一个错误
猜你喜欢
  • 2020-10-16
  • 2011-09-17
  • 2015-10-24
  • 1970-01-01
  • 2023-03-12
  • 2015-06-27
  • 1970-01-01
  • 2015-01-12
  • 1970-01-01
相关资源
最近更新 更多