css - Firefox 需要 SVG <mask> 标记,但在 Chrome 中似乎会破坏 CSS 掩码

标签 css firefox svg mask

我正在尝试使用外部 SVG 图像来屏蔽内容,如下所示:

#homepage-banner .desktop-slider.masked {
  -webkit-mask:url(news-panel-mask.svg) left top no-repeat; /* Chrome/Safari (Webkit) */
  mask: url(news-panel-mask.svg#mask); /* Firefox */
}

news-panel-mask.svg 文件包含以下内容:

<?xml version="1.0" encoding="utf-8"?>
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
 width="1170px" height="494px" viewBox="0 0 1170 494" enable-background="new 0 0 1170 494" xml:space="preserve">
  <defs>
    <mask id="mask" maskUnits="userSpaceOnUse">
      <path fill="white" d="M1170.001,494V0h-352v141.605c0,2.2-0.521,5.274-2.075,6.832l-21.725,21.393c-1.554,1.557-3.2,4.631-3.2,6.832v131.692
    c0,2.2,2.021,5.274,3.575,6.832l20.975,21.393c1.554,1.557,2.45,4.631,2.45,6.831V494H1170.001z"/>
    </mask>
  </defs>
</svg>

这适用于 Firefox,但我需要删除 <defs><mask> svg 文件中的标记以使其在 Chrome 上运行。有没有办法解决这个问题,以便我可以为两种浏览器使用相同的 svg 文件?

感谢您的帮助。

最佳答案

如我上面评论中所链接,解决方案是在 .svg 文件中为每个浏览器使用单独的路径:

<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1170px" height="494px" viewBox="0 0 1170 494" enable-background="new 0 0 1170 494" xml:space="preserve">

  <!-- Webkit -->
  <path fill="white" d="M1170.001,494V0h-352v141.605c0,2.2-0.521,5.274-2.075,6.832l-21.725,21.393c-1.554,1.557-3.2,4.631-3.2,6.832v131.692
c0,2.2,2.021,5.274,3.575,6.832l20.975,21.393c1.554,1.557,2.45,4.631,2.45,6.831V494H1170.001z"/>

  <!-- Firefox -->
  <defs>
    <mask id="mask" maskUnits="userSpaceOnUse">
      <path fill="white" d="M1170.001,494V0h-352v141.605c0,2.2-0.521,5.274-2.075,6.832l-21.725,21.393c-1.554,1.557-3.2,4.631-3.2,6.832v131.692
c0,2.2,2.021,5.274,3.575,6.832l20.975,21.393c1.554,1.557,2.45,4.631,2.45,6.831V494H1170.001z"/>
    </mask>
  </defs>

</svg>

关于css - Firefox 需要 SVG <mask> 标记,但在 Chrome 中似乎会破坏 CSS 掩码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20600608/

相关文章:

jquery - 将鼠标悬停在 div 上会中断定位 jquery css

javascript - 将鼠标事件分配给 svg :text in d3. js

jquery - <svg> 掩码在用于在 react.js 中显示 svg <image> 时不起作用

javascript - Datalist 箭头不在 ie 和 firefox 中

css - SVG 在 WebKit 和 Firefox 中的位置不同

JavaScript。如果数组包含重复数字,则 Array .sort() 方法为 Chrome 和 Firefox 返回不同的结果

objective-c - 需要建议在 iOS 中处理大型矢量图形

c# - 解析 HTML/CSS/PHP 文件

eclipse - 为什么即使我删除了@font-face 代码并从我的机器上卸载了字体,我的@font-face 字体仍能正常工作?

css - 如何忽略真正 100% 宽度的 parent 填充?