svg 蒙版(mask)和剪切(clipPath)用法(转)

发布时间 2023-06-13 15:36:30作者: 看风景就

clipPath 剪切

clipPath 剪切路径范围内是显示的,否则是不显示的

<svg xmlns="http://www.w3.org/2000/svg">
    
    <defs>
        <!-- 定义一个clipPath,值为moon -->
        <clipPath id="moon">
            <circle cx='40' cy="40" r="20" fill="red" style="transform:translate(10px, 10px)"/>        
        </clipPath>
    </defs>
    <!-- 正常显示的全部面积是一个圆,使用id为moon的clip,即clipPath重合的部分就显示 -->
    <circle cx='40' cy="40" r="20" fill="yellow" style="clip-path:url(#moon);"/>
    
    <!-- 模拟上面使用 clip 的效果 -->
    <circle cx='100' cy="100" r="20" fill="green" style="transform:translate(10px, 10px)"/>
    <circle cx='100' cy="100" r="20" fill="red" />
</svg>

mask 蒙版

mask 蒙版黑色的部分是不透明(不显示),白色是全透明(全部显示)

<svg xmlns="http://www.w3.org/2000/svg" height="400" width="400">
    
    <defs>
    <!-- mask 如果是黑色表示不透明
    white 表示是完全透明
    蒙版的左上角和使用蒙版的左上角重合,白色就是显示不分,黑色就是隐藏部分 -->
        <mask id="moon">
            <circle cx='40' cy="40" r="20" fill="white"  />        
            <circle cx='40' cy="40" r="20" fill="black" style="transform:translate(10px, 10px)" />
        </mask>
    </defs>

    <!-- 实际需要显示的内容,使用了mask id为moon-->
    <circle cx='40' cy="40" r="20" fill="green" mask="url(#moon)" />

    <!-- 模拟 mask 显示的效果,白色就是会显示的内容,黑色就是看不见的内容 -->
    <circle cx='100' cy="100" r="20" fill="white"  />        
    <circle cx='100' cy="100" r="20" fill="black" style="transform:translate(10px, 10px)" />
</svg>

 

 

出处: https://blog.csdn.net/hbiao68/article/details/103950906