你应该使用rgba(0,0,0,0)或rgba(255,255,255,0)来提高CSS的透明度吗?

Joe*_*Joe 33 css colors css3

你应该使用CSS rgba(0, 0, 0, 0)还是rgba(255, 255, 255, 0)透明度?

各自的优点和缺点是什么?

Cᴏʀ*_*ᴏʀʏ 63

rgba()函数的最后一个参数是"alpha"或"opacity"参数.如果你把它设置为0那将意味着"完全透明",和前三个参数(red,green,和blue信道)并不重要,因为你将无法看到的颜色呢.

考虑到这一点,我会选择rgba(0, 0, 0, 0)因为:

  1. 打字少了,
  2. 它会从CSS文件中保留一些额外的字节,并且
  3. 如果alpha值变为不合需要的东西,你会看到一个明显的问题.

可以rgba完全避免使用该模型,transparent而是使用关键字,根据w3.org,它相当于"透明黑色",应该计算到rgba(0, 0, 0, 0).例如:

h1 {
    background-color: transparent;
}
Run Code Online (Sandbox Code Playgroud)

这样可以节省你的另外几个字节,而你的使用透明度的意图是显而易见的(如果一个人不熟悉RGBA).

从CSS3开始,您可以transparent对任何接受颜色的CSS属性使用关键字.


Mar*_*som 9

有两种用alpha存储颜色的方法.第一个就是你所看到的,每个组件都是原样.第二种是使用预乘的alpha,其中颜色值在将其转换为0.0-1.0的范围后乘以alpha; 这样做是为了使合成更容易.通常情况下,您不应该注意或关注任何特定引擎实现哪种方式,但有些情况可能会出现,例如,如果您尝试增加颜色的不透明度.如果你使用,rgba(0, 0, 0, 0)你不太可能看到两种方法之间的差异.

  • 这是正确的答案.具体来说,当使用渐变时,如"你试图增加颜色的不透明度"那样的"有角落情况"的部分尤其如此,如图像值模块[要求](http:// www .w3.org/TR/css3-images /#color-stop-syntax)渐变颜色在预乘的RGBA空间中计算.但请注意,不同浏览器的实现方式仍然不同 - 特别是,某些最新版本仍然违反规范中的要求(尽管公平地说,我认为直到最近的修订版才会指定). (4认同)