只有每组两位十六进制数完全相同时(如#ff6600→#f60),#rrggbb才能无损缩写为#rgb;否则会因解析错误导致色值偏差、可访问性失败或自动化流程隐性失效。

#rgb 缩写本身不造成精度损失——但**误用缩写**会。
真正出问题的,是把本不该缩写的六位值强行压成三位,或者把三位写法当成“高位补零”来理解。浏览器不会报错,它会按规则硬解析,结果却和你脑内预期完全不符。
哪些 #rrggbb 值能安全缩写为 #rgb
只有当每组两位十六进制数完全相同时,才可无损缩写:
-
#ff6600→ 可缩为#f60(因为ff、66、00都是双同字符) -
#aabbcc→ 可缩为#abc -
#000000、#ffffff、#333333等全重复值都 OK -
#fe0123→ 不可缩(fe≠ff或ee,01≠00或11)
#8b4 当作 #88bb44,而设计稿给的是 #8b4513,差得离谱。
#999 不等于 #909090:单字复制不是补零
这是最常踩的坑:
-
#999展开为#999999(R=G=B=153) -
#909090是 R=G=B=144 的中灰 -
#f0a→#ff00aa,不是#f000aa,也不是#fa00aa
缩写在协作与自动化流程中隐性失效
- Git diff 里
#333和#333333看似一样,但前者是简写,后者是完整值;如果某人手抖把#333334改成#334,实际变成#333344,视觉几乎看不出,却已偏离原设计 - CSS 预处理器(Sass/Less)默认不展开三位写法,输出仍是
#fff;但 JS 里调用getComputedStyle(el).color返回的是rgb(255, 255, 255),原始写法信息彻底丢失 - 压缩工具(如 cssnano)只对合规缩写做转换,不会校验你手动写的
#8b4是否合法——它照单全收,然后渲染出错色
RRGGGBB 三组各自重复的规则来;否则,老老实实写六位。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











