如何调整 SVG 剪辑路径的大小?

Posted

技术标签:

【中文标题】如何调整 SVG 剪辑路径的大小?【英文标题】:How to resize SVG clip-path? 【发布时间】:2016-03-08 00:04:45 【问题描述】:

我正在使用 SVG 作为图像的蒙版,并且正在尝试调整它的大小。我尝试指示宽度和高度(到 100),但它仍然无法缩放。只是保持原来的大小。

Codepen Demo

这是 SVG 代码:

<svg  >
  <defs>
    <clipPath id="svgPath">
      <path fill="#EDEBEA" d="M468.855,234.292H244.117V9.439L468.855,234.292z" />
      <path fill="#EDEBEA" d="M6.864,8.939h224.73v224.733L6.864,8.939z" />
      <path fill="#EDEBEA" d="M244.118,469.73V245.005h224.737L244.118,469.73z" />
      <path fill="#EDEBEA" d="M231.594,245.005V469.73H6.863L231.594,245.005z" />
    </clipPath>
  </defs>
</svg>

【问题讨论】:

您可能需要提供 SVG viewbox information 而不是高度/宽度...然后它应该可以正确缩放。 【参考方案1】:

首先,当您将 width 和 height 属性设置为 100 时,它会使 svg 的高宽为 100px。如果你想让 svg 是全宽的,你需要给它 100% 的宽度。

其次,正如@Paulie_D 所评论的,您需要为viewbox attribute 提供一个值,以便为您的svg 中的元素提供比例和坐标系。这是viewbox="0 0 500 500"width="30%" : 的示例

<svg viewbox="0 0 500 500"  >
  <defs>
    <clipPath id="svgPath">
      <path fill="#EDEBEA" d="M468.855,234.292H244.117V9.439L468.855,234.292z" />
      <path fill="#EDEBEA" d="M6.864,8.939h224.73v224.733L6.864,8.939z" />
      <path fill="#EDEBEA" d="M244.118,469.73V245.005h224.737L244.118,469.73z" />
      <path fill="#EDEBEA" d="M231.594,245.005V469.73H6.863L231.594,245.005z" />
    </clipPath>
  </defs>
  <image xlink:href="http://i.stack.imgur.com/3DR2G.jpg" x="0" y="0"   style="clip-path: url(#svgPath);"/>
</svg>

输出:

【讨论】:

是的,这行得通!但是,如果我想将 标记放在剪辑路径 之外,就像我的 codepen 示例中那样?这可能吗?

以上是关于如何调整 SVG 剪辑路径的大小?的主要内容,如果未能解决你的问题,请参考以下文章

在 FabricJS 中调整窗口大小时如何始终将剪切区域居中?

如何使用 svg 剪辑路径?

如何在 SVG 剪辑路径中居中对齐图像?

使用 SVG 剪辑路径

可以将 SVG 剪辑路径相对于其容器居中吗?

除了数据 url 之外,如何让伪元素上的剪辑路径 SVG 在 IE11/Edge 中工作?