八位HEX颜色必须严格写为#rrggbbaa小写8字符格式,如#ff000080;其alpha值AA是十六进制不透明度(00全透、FF全不透),非百分比;旧浏览器不支持且无自动降级,需前置rgba()fallback;#RGBA简写仅适用于每两位相同的颜色。

八位HEX颜色必须写满8位小写字母数字
浏览器对 #RRGGBBAA 格式校验极严,少一位、多一位、大写、空格、引号,整条声明就静默失效——控制台不报错,样式也不渲染。常见错误包括:#ff00008(7位)、#FF000080(大写)、#ff0000 80(空格)、"#ff000080"(引号)。这些都会让颜色回退到继承值或默认色,调试时容易误判为“CSS没生效”。
正确写法只有一种:#ff000080,全部小写、无空格、无引号、严格8字符。它等价于 rgba(255, 0, 0, 0.502),不是 0.5,因为 0x80 = 128,而 128 / 255 ≈ 0.502。
透明度值AA不是百分比,是十六进制不透明度
很多人把 80 当成“80%透明”,实际它是“约50%不透明”。AA 表示 alpha 通道值,范围 00(完全透明)到 FF(完全不透明),数值越小越透明。别用直觉硬凑:0.5 不等于 50(那是十进制 50 → 十六进制 32,对应不透明度仅 12.5%);真正 50% 不透明度应填 7F(十进制 127)。
-
00→ 完全透明(看不见) -
33→ 约 80% 透明(不透明度 20%) -
7F→ 约 50% 透明(不透明度 50%,更准) -
80→ 约 49.8% 透明(不透明度 50.2%,常被当作 50% 用) -
CC→ 约 20% 透明(不透明度 80%) -
FF→ 完全不透明(等价于六位写法)
必须手动 fallback,浏览器不会自动降级
#RRGGBBAA 在 IE 和 Safari 12.0 及更早版本中完全不识别,且 CSS 不会自动回退到 rgba()。如果只写 color: #00000080,旧浏览器会跳过这条规则,可能显示为黑色或继承父背景,造成视觉偏差。
立即学习“前端免费学习笔记(深入)”;
安全写法是显式声明两次,顺序不能反:
color: rgba(0, 0, 0, 0.5); color: #00000080;
现代浏览器读到第二行会覆盖第一行,旧浏览器只认第一行,从而实现兼容。注意:不能写成 color: #00000080; color: rgba(...);,否则旧浏览器会忽略第一行但执行第二行,现代浏览器则永远用不上 rgba()。
简写形式#RGBA仅对特定颜色安全
八位色值没有通用简写,#RGBA(如 #f008)仅在原色可压缩时才合法:比如 #f00 → #ff0000,那么 #f008 才等价于 #ff000088。但 #ff6b35 无法简写——写成 #f635 或 #f63580 都会被解析为错误颜色(如 #ff663355),结果完全不可控。
所以除非你确定颜色是 #RRGGBB 形式且每两位相同(#f0f、#fff、#000),否则一律用满8位写法。别贪省那几个字符,换来的是难以排查的色差问题。


















