如何缩放' clip-path: path ' ?



我有一个clip-path,它剪切出一个特定的形状。问题是它是在绝对坐标系中设置的。如果我把%放在这里,它就中断了。如何缩放它,使其适合画布边界,并与画布一起拉伸?

.canvas {
width: 200px;
height: 200px;
background-color: black;
}
.clip {
width: 100%;
height: 100%;
background-color: orange;
content: "";
clip-path: path('M 100 50 A 75 75 0 0 1 0 50 A 75 75 0 0 1 100 50 z');
}
<div class="canvas"><div class="clip">sadf</div></div>

您可以使用另一个svg并将clipPathUnits="objectBoundingBox"添加到它

更多信息在这里

.canvas {
width: 200px;
height: 200px;
background-color: black;
}
.clip {
width: 100%;
height: 100%;
background-color: orange;
clip-path: url(#path);
}
<svg height="0" width="0">
<defs>
<clipPath id="path"  clipPathUnits="objectBoundingBox">
<path d="M 0,0.5
Q 0.50,0.15 1,0.50
Q 0.50,0.85 0,0.50">
</path>
</clipPath>
</defs>
</svg>
<div class="canvas">
<div class="clip">sadf</div>
</div>

我发现的一种方法是将剪辑路径移动到SVG元素并在CSS中引用它。这样的路径可以设置clipPathUnits="objectBoundingBox",这是相对于元素的大小。

.canvas {
width: 200px;
height: 200px;
background-color: black;
}
.clip {
width: 100%;
height: 100%;
background-color: orange;
content: "";
clip-path: url(#eyePath);
}
<div class="canvas"><div class="clip">sadf</div></div>
<svg viewBox="0 0 100 100" width="100" height="100">
<clipPath id="eyePath" clipPathUnits="objectBoundingBox">
<path d="M 1 0.5 A .75 .75 0 0 1 0 .50 A .75 .75 0 0 1 1 0.5 z" />
</clipPath>
</svg>

仍然有几个问题:

  • SVG在HTML中而不是CSS中。
  • SVG元素在HTML中占用空间,它应该被隐藏。

一个很好的解决方案是将SVG移动到另一个文件并引用路径,例如(source - MDN cip-path)

clip-path: url(eye.svg#c1);

相关内容

  • 没有找到相关文章

最新更新