在具有背景(图像或纯色均可)的元素上:
<header id="block-header"></header>
我正在尝试使用SVG应用剪辑路径。为了实现这一点,我将SVG内联到与此元素相同的元素中,方法如下:
<header id="block-header">
…
<svg width="100%" height="100%" viewBox="0 0 4000 1696" preserveAspectRatio="none">
<defs>
<clipPath id="myClip">
<path d="M0 1568.18V0h4000v1568.18S3206.25 1696 2000 1696C984.37 1696 0 1568.18 0 1568.18z"/>
</clipPath>
</defs>
</svg>
…
</header>
你可以运行下面的代码片段或查看JSFiddle。你可以看到原始的SVG图像(黑色)放在内联,底部呈现出曲线并具有响应性。相比之下,红色矩形显示了相同的图像作为clip-path
被应用(或者说未被应用)的效果。我猜我误解了
viewBox
或preserveAspectRatio
属性,但无法找到具体错误所在。任何帮助将不胜感激。#block-header {
background: Red;
min-height: 100px;
-webkit-clip-path: url(#myClip);
clip-path: url(#myClip);
}
<h1>SVG image</h1>
<svg xmlns="http://www.w3.org/2000/svg" width="100%" height="100" viewBox="0 0 4000 1696" preserveAspectRatio="none"><path d="M0 1568.18V0h4000v1568.18S3206.25 1696 2000 1696C984.37 1696 0 1568.18 0 1568.18z"/></svg>
<h1><code>clip-path</code> using the same SVG</h1>
<header id="block-header">
<svg width="100%" height="100" viewBox="0 0 4000 1696" preserveAspectRatio="none">
<defs>
<clipPath id="myClip">
<path d="M0 1568.18V0h4000v1568.18S3206.25 1696 2000 1696C984.37 1696 0 1568.18 0 1568.18z"/>
</clipPath>
</defs>
</svg>
</header>
clipPathUnits="objectBoundingBox"
时,坐标应该在0..1的范围内。将它们视为边界框的百分比。(0,0)是元素的左上角,(1,1)是元素的右下角。 - Paul LeBeaud="M0 1568.18V0h4000v1568.18S3206.25 1696 2000 1696C984.37 1696 0 1568.18 0 1568.18z"
转换为d="M0,0 1,0 1,0.9 C 1,0.9, 0.77,1, 0.5,1 0.23,1, 0,0.9,0,0.9z"
?谢谢! - Jordi Nebot