【发布时间】:2020-03-19 18:22:48
【问题描述】:
在 MDN 上有一个关于如何在图像上使用剪辑路径 svg 的示例。相同的剪辑路径似乎不适用于div 元素。有人可以澄清一下:
- 为什么此代码不能按预期工作
- 一种使 svg 剪辑路径在 div 上工作的方法
剪切图像的示例代码 (based on MDN docs)
#clipped {
clip-path: url(#cross);
}
<img id="clipped" src="https://mdn.mozillademos.org/files/12668/MDN.svg"
alt="MDN logo">
<svg height="0" width="0">
<defs>
<clipPath id="cross">
<rect y="110" x="137" width="90" height="90"/>
<rect x="0" y="110" width="90" height="90"/>
<rect x="137" y="0" width="90" height="90"/>
<rect x="0" y="0" width="90" height="90"/>
</clipPath>
</defs>
</svg>
div 上的相同剪辑路径(似乎不起作用)
#clipped {
width: 100px;
height: 100px;
background: black;
clip-path: url(#cross);
}
<div id="clipped"></div>
<svg height="0" width="0">
<defs>
<clipPath id="cross">
<rect y="110" x="137" width="90" height="90"/>
<rect x="0" y="110" width="90" height="90"/>
<rect x="137" y="0" width="90" height="90"/>
<rect x="0" y="0" width="90" height="90"/>
</clipPath>
</defs>
</svg>
【问题讨论】:
-
Browser compatibility 该页面下方的部分列出了“在 HTML 元素上”在几个非 MS 浏览器中的工作 - 但也将其标记为“实验性。预计未来行为会发生变化。” // caniuse.com/#feat=css-clip-path 进一步说明了不同浏览器的支持级别。
-
@04FS Firefox 70 根据 caniuse 表应该有完全支持。该示例在那里也不起作用。关于实验阶段的公平点。如果一致认为这是一个(部分)未实现/未记录的功能,我会在 MDN 上留下一条注释。
-
Firefox 确实支持使用 SVG clipPath 剪切 div
-
请将div的大小改为
width: 300px; height: 300px; -
@enxaneta 很好。像素大小似乎与 svg 中的一个单位相关 :)。如果您发布答案,我可以接受并关闭问题;)。