【发布时间】:2017-10-20 18:31:00
【问题描述】:
我正在尝试使用 SVG 来屏蔽图像。
<svg version="1.1" xmlns="http://www.w3.org/2000/svg" width=500 height=300>
<defs>
<clipPath id="clip">
<path d="M2.16,1.363h23.699c13.739,0,24.899,10.74,24.899,23.999s-11.16...
<img width="500" style="clip-path: url(#clip);-webkit-clip-path: url(#clip);" />
它可以工作,但我希望 clipPath 的大小与媒体相匹配。在 Chrome 中,我可以使用 CSS 控制 clipPath 的大小,但在 FF 中,clipPath 保持较小。在 Safari 中,一个资产什么都没有出现,而另一个资产则出现偏离中心。
我读过其他关于使用clipPathUnits 的问题:
<clipPath id="clip" clipPathUnits="objectBoundingBox">
但我根本无法让它工作。显然它希望路径单位是小数...但是我的形状太复杂而无法手写,而且我不知道任何支持该格式的设计软件。
更新
按照 Robert 的 cmets,我尝试向 clipPath 添加 CSS 变换以“翻译”单位...
#clip {
-webkit-transform:scale(0.004195862879,0.005554321262);
transform:scale(0.004195862879,0.005554321262);
}
这允许objectBoundingBox 在 Chrome 中按预期工作。但是Safari或FF仍然没有运气。看来 Safari 仍将 clipPath 呈现在要剪辑的元素之外......使其不可见。 FF 开发者工具使得它在哪里放置 clipPath 变得不太清楚。
【问题讨论】:
-
objectBoundingBox 单位介于 0 和 1 之间。
-
@RobertLongson 我认为问题中已经说明了这一点,不是吗?
-
你给我们的是一个不完整的例子,所以我们无法解决这个问题,我们剩下的就是将概括性作为答案,你不希望这样,那你怎么办想要答案吗?
-
@RobertLongson 你能澄清我的问题中遗漏了什么吗?我从我的项目中复制/粘贴了它。我只是省略了 path 元素的 d 属性以节省空间。看起来我也错过了 img 的 href ......你还想让我包括什么?也欢迎笼统......我只是因为你重复了这个问题而感到困惑。
-
缺少minimal reproducible example。请创建一个我们可以更正的缩短的有效路径。