什么是 RGBA 和透明度?CSS 半透明颜色写法大全

Alpha 通道到底是什么,rgba()/hsla() 怎么写,opacity 和 rgba 差在哪,附半透明配色实例

想给卡片压一层蒙版,顺手写了 opacity: 0.5,结果卡片里的文字跟着一起变淡了。你要的其实是背景透、文字清楚,这种场合该用 rgba。CSS 里表达透明度的写法有好几种,用错了就会出现上面这种莫名其妙的效果。

本文内容

一、Alpha 通道是什么

RGB 回答的是"这是什么颜色",Alpha 回答的是"它有多透"。0 完全看不见,1 是实心,0.5 就是半透。

可以把它想成调色时多加的一个浓度旋钮:玻璃、水、烟雾,颜色本身没变,变的是这层"浓度"。

A=0完全透明

看不见,但位置还占着,周围的布局不会挪动。

A=0.5半透明

底下一半透出来,蒙层和高光基本都用这个区间。

A=1不透明

实心,跟不写 Alpha 没区别。

别搞混:Alpha 只决定透不透,颜色本身是另一回事。rgba(0,0,0,0.5) 是压暗,rgba(255,255,255,0.5) 是提亮,看起来完全是两种东西。

二、RGBA/HSLA 语法详解

在 RGB 后面再加一个用逗号隔开的数,就是 Alpha。注意范围是 0 到 1,不是 0–255,也不是百分比。

/* 黑色半透明蒙层 */
background: rgba(0, 0, 0, 0.5);

/* 同一个效果用 HSL 写 */
background: hsla(0, 0%, 0%, 0.5);

/* 8 位 HEX 也行 */
background: #00000080;  /* 80 ≈ 0.5 */

三种写法怎么选

  • rgba():最常见,习惯 RGB 的人上手最顺,兼容性也最稳。
  • hsla():需要顺手调亮度的时候用,配合 HSL 变量很自然。
  • 8 位 HEX:写死样式、少打几个字的时候方便,但可读性差,别人接手容易看不懂。
不确定 0.5 对应哪个 HEX?颜色转换工具 输入 rgba 就能拿到 8 位 HEX;带 Alpha 的单位换算可以去颜色代码转换。

三、opacity 与 rgba 的区别

这两个最容易混。opacity 管的是整个元素,rgba 只管当前这个颜色,作用层级不一样:

维度opacityrgba
作用对象整个元素,连文字和子元素一起只有这个颜色值
子元素能否"逃出来"不能,跟着一起透能,只透这一层
典型用途整块淡出、hover 时整体弱化背景蒙层、半透明边框
/* 文字也跟着变淡,多半不是你要的 */
.card { opacity: 0.5; }

/* 只有背景半透明,文字照常清楚 */
.card { background: rgba(0, 0, 0, 0.5); }
一条经验:元素里只要还有不想变透的东西(文字、图标、按钮),就选 rgba,别碰 opacity。

四、透明度叠层的常见坑

半透明用起来很顺手,但下面这几个坑基本人人都踩过。

  • 两层 0.5 叠不出 1:叠在一起底下还是会透出来,看起来永远到不了实心。
  • 滚动时背景穿帮:固定的半透明蒙层后面如果有内容在滚,会隐约透出来,通常不是设计想要的效果。
  • 性能:大面积半透明会让浏览器多开合成层,低端机上可能掉帧,别滥用。
  • 对比度:半透明文字压在花哨的背景上会看不清,该留的对比度还是要留。
想要"看着像实心"的蒙层:直接把 Alpha 拉到 0.85–0.95,别叠两层 0.5,叠出来只会更脏。

五、半透明配色实例

下面是几个实际项目里常见的用法,可以照着改:

蒙层图片 / 弹窗遮罩

rgba(0,0,0,0.6) 把背景压暗,让内容更聚焦。

高光卡片 hover 高光

rgba(255,255,255,0.12) 叠在深色卡片上,不会太抢眼。

描边半透明描边

rgba(255,255,255,0.2) 是玻璃拟态里最常用的一档。

标签浅色标签底

rgba(0,130,143,0.1) 拿品牌色做 10% 的底色。

/* 玻璃拟态:半透底 + 浅描边 + 模糊 */
.glass {
  background: rgba(255, 255, 255, 0.1);
  border: 1px solid rgba(255, 255, 255, 0.2);
  backdrop-filter: blur(10px);
}

挑数值其实有规律:蒙层想压得住,就往 0.6 以上走;只是点缀、要若有若无,就压在 0.1–0.2。记住这个区间比背具体数字管用。

透明度不是越低越好看。rgba 管单层颜色,opacity 管整个元素,把这条界线分清,很多"怎么又糊了"的问题自然就没了。剩下的就是按场景选 Alpha:蒙层、高光、描边各有各的舒服区间,多试几次就有感觉了。