You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用SVG将clipPath设置为图案?问题求助

用SVG图案实现图片的遮罩效果

问题根源

你原来用<clipPath>的思路行不通——clipPath只识别元素的几何轮廓,不管给元素填充什么图案、渐变,它只会把元素的形状范围作为裁剪区域,所以图案完全起不了作用。要实现图案样式的遮罩,得用<mask>元素,它支持基于像素透明度的遮罩,填充的图案、渐变都会生效。

修正后的代码

<svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="600" height="600">  

    <pattern id="cube" x="0" y="10" width="20" height="20" patternUnits="userSpaceOnUse">   
        <!-- 给矩形填充黑色,mask里黑色区域会显示图片,透明区域隐藏 -->
        <rect x="0" y="0" width="10" height="10" fill="black"/>
        <rect x="10" y="10" width="10" height="10" fill="black"/>
    </pattern> 

    <!-- 把clipPath换成mask -->
    <mask id="msk1">
        <!-- 用图案填充圆形,这个填充效果会作为遮罩规则 -->
        <circle fill="url(#cube)" cx="50%" cy="50%" r="200" /> 
    </mask>    

    <!-- 把clip-path属性换成mask -->
    <image xlink:href="wave.jpg" width="100%" height="100%" mask="url(#msk1)"/> 
</svg>    

关键说明

  • <mask>的遮罩规则:白色(或不透明色)区域会显示下方的图片,黑色(或透明色)区域会隐藏图片,灰色则会让图片半透明显示。
  • 如果你想实现反向遮罩(图案区域隐藏图片,其他地方显示),可以把pattern里的矩形填充改成白色,同时给mask里的圆形添加fill="white",再把pattern的背景设为黑色。
  • 注意给<image>加上width="100%",避免图片只显示一部分。

内容的提问来源于stack exchange,提问作者Tesla Fake

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 22:20:46