这些东西非常相似,我发现很难区分它们。这是 viewBox 的一个很好的解释(多么酷的名字和 URL,我希望他们能继续保持下去)。
最主要的区别在于 clipPath
(SVG 中的元素,以及 CSS 中的 clip-path
)是矢量的,当它被应用时,任何你正在裁剪的内容要么是 **在内要么在外**。使用 mask,你还可以实现部分透明度,这意味着你可以使用渐变来,例如,淡出你正在遮罩的内容。因此,我想到 mask 更有力,因为它可以做到 clip path 可以做的一切以及更多。
Sarah 也有一篇 完整的文章 专门介绍这一点。
mask 总是让我感到困惑的一点是,它们可以是 luminance
样式,这意味着白色是透明的,黑色是不透明的,介于两者之间的颜色是部分透明的。或者它们可以是 alpha
样式,其中像素的 alpha 通道是 mask 的 alpha 值。写出来感觉比较清楚,但是当你将其应用于元素时,就会感觉完全相反并且令人困惑。
感谢 Chris 和 Sarah!
我相信 mask 和 clipPaths 之间简单的区别在于:一个裁剪形状,另一个裁剪灰度。
mask 被解释为“白色隐藏,黑色显示”。
路径被解释为……好吧,“形状”。
因此,由于它们都“裁剪图形信息”,所以区别在于它们实现它的方式:阴影和形状。