rgba 中的透明度如何工作?

How does transparency in rgba work?

我最近在 css 中学习了 rgba 来设置颜色。我很好奇透明通道实际工作的技术方面。

例如,如果我将两个单独的 headers 的值设置为 rgba(15, 34, 160, 1) 和 rgba(15 34, 160, 0.5),则它们被称为具有相同的颜色,但具有不同的不透明度值。我想知道这些颜色是否实际上相同。我的意思是,就从像素发出的光而言,它们肯定是不同的,以便创建 headers 的两种不同外观。这是否意味着 alpha 值实际上用于以某种特定方式更改颜色?

干杯!

RGB 值是一种颜色,RGBA 值是颜色加透明度。当您将它叠加在彩色背景上时,它会产生不同的外观颜色。所以是的,它们是相同的颜色,但根据它们所在的位置可能会产生不同的颜色。

因为你可以 "half see" 半透明元素后面的元素的颜色,它会与那个颜色混合(如果背景是白色,它会显得更亮,如果是黑色,则更暗,如果是另一种颜色,也会有颜色的混合。

因此,从技术上讲,它是具有不同透明度的相同颜色,但感知结果将是不同的颜色(除非碰巧透明元素后面的元素具有相同的颜色)

看看这个JSFiddle

播放顶部 CSS 属性 看起来像这样:

background-color: rgba(225, 225, 225, 0.7);

最后一个值是从 0 到 1 测量的不透明度(与透明度相反)。0 是完全透明的,1 是完全不透明的。前三个值就像一个普通的 rgb() CSS 属性.

通过设置一个RGBA颜色值。您实际上只是在设置颜色和一个单独的不透明度值。这可以通过使用 RGB 设置颜色,然后分别设置不透明度和不透明度来实现,但 RGBA 将两者组合成一个函数。使用 RGBA 更短,但分别设置 RGBA 和不透明度可以让您分别控制值。

因此,您的两个示例为颜色设置了相同的值,但对该颜色应用了两种不同级别的不透明度。