设计稿里的图标本地打开很好看,放进页面用 img 引用之后颜色和线宽全变成默认值,导出的样式像是被丢掉了。第一次遇到会往复杂处想,其实漏掉的多是个小前提。
npx svgo --convertStyleToAttrs a.svg -o a.min.svg # 样式已转成行内属性
以 img 方式引用的矢量图是隔离的,外部样式表和字体都不会加载,样式只认文件内部定义的那一份,外层怎么写都进不去里面。这一点先确认清楚,后面就不用反复试。
「SVG 外链样式」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。把复现步骤压到三条以内,交给同事也能跑出来,才算真的定位清楚。
改动写完就同步给同事,下一个人踩同一个坑,成本还是你的。
具体做法是,把样式直接写进文件内部 或者全部转成行内属性;如果需要跟随主题变色 就改成内联插入的方式;导出的时候顺便把图标里的文字全部转成路径。
改完照着核一遍,图标在页面里显示出来的颜色和线宽都能与设计稿保持一致。
