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

如何让SVG填充与背景色相反的颜色?

实现SVG在双色背景上自动反转填充色

要让SVG在黑色背景显示白色填充、白色背景显示黑色填充,只需调整SVG的填充色并保留现有混合模式即可,以下是修改后的完整代码:

修改后的HTML

<div>
   <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 16 16">
      <path fill="white" d="M10.97 4.97a.75.75 0 0 1 1.07 1.05l-3.99 4.99a.75.75 0 0 1-1.08.02L4.324 8.384a.75.75 0 1 1 1.06-1.06l2.094 2.093 3.473-4.425a.267.267 0 0 1 .02-.022z"/>
   </svg>
</div>

修改后的CSS

:root {
  --norm-col: #000;
  --bg-color: #fff;
}

div {
  background: linear-gradient(
                to bottom right, 
                var(--norm-col) 0%, 
                var(--norm-col) 50%, 
                var(--bg-color) 50%, 
                var(--bg-color) 100%);
  width: fit-content;
  padding: 8px;
}

div svg {
  width: 30px;
  height: 30px;
  mix-blend-mode: difference;
}

原理说明

  • 给SVG路径设置fill="white"作为基础填充色
  • mix-blend-mode: difference会计算前景与背景的颜色差值:
    • 黑色背景下,白色与黑色的差值为白色,直接显示白色填充
    • 白色背景下,白色与白色的差值为黑色,自动反转成黑色填充
  • 补充:root变量定义和容器的宽、内边距,让效果更直观

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 16:30:15