深色模式上线后SVG图标集体消失,问题多半不在图标文件本身

深色模式上线后,常有一类反馈反复出现:图标在浅色背景里显示正常,一切到深色背景就几乎消失。很多人的第一反应是文件出了问题,于是重新导出SVG再上传,但情况往往没有变化。问题多半不在文件本身,而在于颜色的来源、引入的方式和验收的环节没有统一。按下面四个层面逐项核对,比反复重传文件更省时间。

第一层:看SVG内部有没有把填充色固定住

打开SVG源码,检查fill属性是否被写成某个具体的深色值,比如fill=”#222222″或fill=”#333″。这种写死的颜色不会跟随页面主题变化,放到深色背景上自然难以辨认。更稳妥的方式是把图形填充改为fill=”currentColor”,让图标继承所在文字的颜色。两者的差别很直接:固定色值是图标自带颜色,currentColor则跟随上下文。如果图标由多个路径组成,还要确认每个path都改到位,只改外层通常不起作用。

第二层:看有没有用CSS滤镜或混合模式强行改色

有些实现为了省事,用filter: invert或mix-blend-mode统一处理图标颜色。这种做法在浅色背景下可能看不出异常,但会带来副作用:品牌色图标被一并反转,描边与填充的对比关系被打乱,图标与相邻文字的明暗关系也可能失衡。核对时要确认是否存在这类全局规则,并判断它是否只作用于特定图标。能用颜色变量解决的地方,尽量不要依赖滤镜。

第三层:看图标的引入方式

如果图标通过img标签引入,SVG会作为独立文档渲染,页面文字颜色无法传递进去,currentColor也就失效了。这种情况下要么改为内联SVG,要么在构建阶段生成深浅两套文件并按主题切换。两种方式各有代价:内联便于控制颜色,但会增加页面结构;双套文件实现简单,但需要维护两份资源。核对时先确认引入方式,再决定改法。

第四层:看设计稿与前端是否共用一套颜色变量

图标看不见,有时是设计侧定义了深色模式专用色,前端却仍按浅色稿实现。核对时把设计稿中的图标颜色标注与代码里的变量名对照一遍,确认命名一致、取值一致、适用范围一致。缺少这层约定,后续每加一个图标都可能重演同样的问题。

上线前的图标核对清单

一是在浅色背景截屏,确认图标轮廓清晰、与文字对比正常。二是切换深色背景再截屏,逐项比对同一组图标。三是检查图标在悬停、禁用、选中三种状态下的颜色表现。四是确认图标与相邻文字的颜色来源一致。五是保留一份图标颜色使用说明,注明哪些图标跟随文字色、哪些使用固定品牌色。

维护流程中,主题适配应当作为验收项固定下来,而不是上线后被动修补。it数运在交付资料中会标注每个图标的颜色使用方式,便于后续新增页面时对照执行。把这一项写进验收清单,深色模式下图标消失的反馈会明显减少。

© 版权声明
THE END
点赞6 分享