切到暗色主题后文字变白了,导航图标还是黑色,和背景的对比度只有 1.4:1,几乎看不见,同一个 SVG 在亮色下显示正常。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
svg.icon { fill: currentColor; }
[data-theme='dark'] .nav-icon { color: #e5e5e5; }
图标文件里 fill 写死了 #000,父级设的 color 传不进去,currentColor 只有在 SVG 内部用 fill='currentColor' 时才生效。这一点先确认清楚,后面就不用反复试。
「暗色模式图标」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。把这次用到的命令存进笔记,比记住结论有用,换个环境还能照着走。
改完隔一天再看一次,当场正常不代表能稳住。测试环境和线上的差别,往往就在版本号和那几行被忽略的配置上。
具体做法是,把 SVG 源码里的 fill 改成 currentColor 硬编码的色值全部去掉;确认引用方式是内联或者 symbol 外链样式能穿透 img 标签不行;暗色模式下给图标单独设颜色 用 CSS 变量统一管理。
改完照着核一遍,切换暗色后导航图标跟着变白,两种主题下都能看清。
