如何通过CSS或属性实现SVG图标白色区域的透明覆盖效果?
无需修改SVG路径的镂空效果解决方案
你需要让SVG内的白色区域变为透明(挖空下方黑色像素,透出背景),可以通过以下CSS方案实现,完全不需要修改SVG路径:
方案1:使用混合模式(简洁高效)
选中SVG中的白色路径(第三个<path>元素),设置mix-blend-mode: clear,该属性会清除目标区域的像素,直接透出背景:
svg path:nth-child(3) { mix-blend-mode: clear; }
效果说明
设置后,原本的白色区域会完全透明,下方的黑色像素也会被清除,无论是纯色背景还是图片背景,都能透过该区域正常显示,完全匹配你的预期效果。
方案2:CSS遮罩(兼容性更优)
如果需要兼容不支持clear混合模式的旧版浏览器,可以使用CSS遮罩复合实现:
svg { /* 创建遮罩,排除白色路径区域 */ mask: linear-gradient(#000, #000) content-box, linear-gradient(#000, #000); mask-composite: exclude; } /* 将白色路径填充改为黑色,配合遮罩实现镂空 */ svg path:nth-child(3) { fill: #000; }
效果对比
- 预期效果:白色区域透出背景,与下方黑色路径形成镂空效果
- 移除白色后的效果:仅保留黑色路径,无中间遮挡块
- 当前未处理效果:白色区域覆盖黑色路径,无法透出背景
内容的提问来源于stack exchange,提问作者Husker
相关产品推荐
相关产品推荐

