使用 SVG 剪辑路径

Posted

技术标签:

【中文标题】使用 SVG 剪辑路径【英文标题】:Clip Path with SVG 【发布时间】:2019-09-25 00:34:00 【问题描述】:

我用 SVG 创建了下面的 CSS Clip 路径。我想知道如何使它成为一些独特的形状而不是普通的六角形面具?我也想给边缘的边界半径。任何帮助将不胜感激。

提前致谢。

http://ktdev.khaleejtimes.ae/bg/bg-shapenw1.html

.svg_pan 
    width: 90%;
    height: 600px;
    border-radius: 50px;




<svg class="svg-graphic svg_pan"   viewBox="0 0 560 645" xmlns="http://www.w3.org/2000/svg" xlink="http://www.w3.org/1999/xlink" version="1.1">
    <g>
       <clipPath id="hexagonal-mask">
          <polygon points="130,0 0,160 0,485 270,645 560,485 460,160" />
       </clipPath>
    </g> 
    <a xlink:href="#">
     <image clip-path="url(#hexagonal-mask)"   xlink:href="al-seef.jpg" />
    </a>
</svg>

【问题讨论】:

您不能为此使用多边形。您必须使用路径,因为它涉及的不仅仅是直线。 嗨,Paulie,你能给我看一些例子吗? 不……那是给你研究的。 - tutorials.jenkov.com/svg/path-element.html 您考虑过使用 InkScape 吗?它允许您完全创建和编辑 SVG 【参考方案1】:

您需要计算路径的 d 属性 - 带有圆角的多边形。在这种情况下,我将二次贝塞尔曲线用于圆角。希望对你有帮助。

.svg_pan 
  border:1px solid;
<svg class="svg-graphic svg_pan"   viewBox="0 0 560 645" xmlns="http://www.w3.org/2000/svg" xlink="http://www.w3.org/1999/xlink" version="1.1">

 <defs> 
 <clipPath id="hexagonal-mask-rounded"> 
  <path d="M147.996,8.725 Q130,0 117.388,15.522L12.612,144.478 Q0,160 0.000,180.000L0.000,465.000 Q0,485 17.206,495.196L252.794,634.804 Q270,645 287.512,635.338L542.488,494.662 Q560,485 554.118,465.884L465.882,179.116 Q460,160 442.004,151.275Z" />
   </clipPath>
  
  </defs>
    <a xlink:href="#">
     <image clip-path="url(#hexagonal-mask-rounded)"   xlink:href="https://s3-us-west-2.amazonaws.com/s.cdpn.io/222579/beagle400.jpg" />
    </a>
</svg>

这是一个您可以使用多边形的点属性计算路径的d 属性的工具:https://enxaneta.github.io/SVG_polygon_with_rounded_corners/

【讨论】:

以上是关于使用 SVG 剪辑路径的主要内容,如果未能解决你的问题,请参考以下文章

使用 Safari 应用 SVG 剪辑路径时遇到问题

使用剪辑路径从圆圈中的 4 条 svg 线中删除 37px

css 剪辑路径: url ();不适用于 svg 文件源

为啥带有 SVG 的 CSS 剪辑路径在 Safari 中不起作用?

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

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