使用SVG遮罩和裁剪路径将图像裁剪为特定形状

霞舞
发布: 2025-09-07 22:30:12
原创
687人浏览过

使用svg遮罩和裁剪路径将图像裁剪为特定形状

本文档详细介绍了如何使用SVG的遮罩(mask)和裁剪路径(clip-path)功能,将图像裁剪为特定的SVG形状,例如三角形。我们将通过示例代码,一步步讲解如何实现这一效果,并对比两种方法的优劣。

使用裁剪路径(Clip Path)

裁剪路径通过定义一个矢量路径来决定哪些部分应该显示,哪些部分应该隐藏。 位于裁剪路径内部的区域将被显示,外部的区域将被裁剪掉。

步骤:

  1. 定义裁剪路径: 在<defs>标签内创建一个<clipPath>元素,并为其指定一个唯一的id。 在<clipPath>内部,使用<path>或其他形状元素定义裁剪路径。 clip-rule="evenodd"属性用于定义填充规则,控制复杂形状的显示效果。
  2. 应用裁剪路径: 在需要裁剪的元素(例如<image>)上,使用clip-path属性,并将其值设置为url(#your-clip-path-id),其中your-clip-path-id是你在第一步中定义的clipPath的id。

示例代码:

<svg width="300" viewBox="0 0 284 178" xmlns="http://www.w3.org/2000/svg">
  <defs>
    <clipPath id="cp1">
      <path clip-rule="evenodd"
      d="M104.5 0L0.143921 142.5H208.856L104.5 0ZM104.5 10.1551L11.9747 136.5H197.025L104.5 10.1551Z" />
    </clipPath>
   </defs>
   <image width="100%" height="100%"
   href="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQU69UnQwUGs3VTS51AEM2MRTHED0PRl0rMLVw3hdS_95xNdTPqY5_7E3N-pzgp49lrdkY&usqp=CAU"
   clip-path="url(#cp1)"/>
</svg>
登录后复制

代码解释:

剪映
剪映

一款全能易用的桌面端剪辑软件

剪映 490
查看详情 剪映
  • <svg width="300" viewBox="0 0 284 178" ...>:定义了SVG画布的宽度和viewBox,viewBox定义了SVG内容的可视区域。保持viewBox的宽高比与图像一致,可以确保图像完整地填充SVG空间。
  • <defs>:用于定义可重用的元素,例如裁剪路径。
  • <clipPath id="cp1">:定义了一个id为cp1的裁剪路径。
  • <path clip-rule="evenodd" d="...">:定义了三角形的路径。 clip-rule="evenodd" 指定了奇偶规则用于确定路径的哪些部分应该被裁剪。
  • <image width="100%" height="100%" ... clip-path="url(#cp1)"/>:将图像的宽度和高度设置为100%,使其填充整个SVG空间,并将裁剪路径cp1应用到图像上。

使用遮罩(Mask)

遮罩通过灰度值来控制元素的透明度。 白色区域完全不透明,黑色区域完全透明,灰色区域则根据灰度值呈现不同程度的透明度。

步骤:

  1. 定义遮罩: 在<defs>标签内创建一个<mask>元素,并为其指定一个唯一的id。 在<mask>内部,使用形状元素(例如<path>,<rect>,<circle>等)来定义遮罩的形状。 形状的填充颜色决定了对应区域的透明度:白色表示不透明,黑色表示透明。
  2. 应用遮罩: 在需要遮罩的元素(例如<image>)上,使用mask属性,并将其值设置为url(#your-mask-id),其中your-mask-id是你在第一步中定义的mask的id。

示例代码:

<svg width="300" viewBox="0 0 284 178" xmlns="http://www.w3.org/2000/svg">
  <defs>
    <mask id="m1">
      <path d="M104.5 0L0.143921 142.5H208.856L104.5 0ZM104.5 10.1551L11.9747 136.5H197.025L104.5 10.1551Z"
      fill="white"/>
    </mask>
   </defs>
   <image width="100%" height="100%"
   href="https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcQU69UnQwUGs3VTS51AEM2MRTHED0PRl0rMLVw3hdS_95xNdTPqY5_7E3N-pzgp49lrdkY&usqp=CAU"
   mask="url(#m1)"/>
</svg>
登录后复制

代码解释:

  • <svg width="300" viewBox="0 0 284 178" ...>:与裁剪路径示例相同,定义SVG画布的尺寸和可视区域。
  • <defs>:用于定义可重用的元素,例如遮罩。
  • <mask id="m1">:定义了一个id为m1的遮罩。
  • <path d="..." fill="white"/>:定义了三角形的路径,并将其填充颜色设置为白色,表示该区域完全不透明。
  • <image width="100%" height="100%" ... mask="url(#m1)"/>:将图像的宽度和高度设置为100%,使其填充整个SVG空间,并将遮罩m1应用到图像上。

裁剪路径 vs 遮罩

特性 裁剪路径 (Clip Path) 遮罩 (Mask)

以上就是使用SVG遮罩和裁剪路径将图像裁剪为特定形状的详细内容,更多请关注php中文网其它相关文章!

相关标签:
svg
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号