CSS颜色模块级别4将可能支持4和8位十六进制RGBA符号!
三周前(2014年12月18日),CSS颜色模块4级编辑的草案提交给了CSS W3C工作组。尽管当前的文档版本很容易发生变化,但它意味着在不久的将来CSS将同时支持4位和8位十六进制RGBA表示法。
注意:下面的引用被删去了不相关的部分,当你读到这篇文章时,来源可能已经被严重修改了(如上所述,这是编辑的草稿,而不是最终的文件)。如果事情发生了很大的变化,请留下评论让我知道,这样我就可以更新这个答案!
§ 4.2. The RGB hexadecimal notations: #RRGGBB
The syntax of a <hex-color> is a <hash-token> token whose value consists of 3, 4, 6, or 8 hexadecimal digits. In other words, a hex color is written as a hash character, "#", followed by some number of digits 0-9 or letters a-f (the case of the letters doesn’t matter - #00ff00 is identical to #00FF00).
8 digits
The first 6 digits are interpreted identically to the 6-digit notation. The last pair of digits, interpreted as a hexadecimal number, specifies the alpha channel of the color, where 00 represents a fully transparent color and ff represent a fully opaque color.
Example 3In other words, #0000ffcc represents the same color as rgba(0, 0, 100%, 80%) (a slightly-transparent blue).
4 digits
This is a shorter variant of the 8-digit notation, "expanded" in the same way as the 3-digit notation is. The first digit, interpreted as a hexadecimal number, specifies the red channel of the color, where 0 represents the minimum value and f represents the maximum. The next three digits represent the green, blue, and alpha channels, respectively.
这对CSS颜色的未来意味着什么?
这意味着假设这没有完全从4级文档中删除,我们很快就能在支持颜色模块4级语法的浏览器中以十六进制格式定义我们的RGBA颜色(或者HSLA颜色,如果你是其中之一的话)。
例子
elem {
background: rgb(0, 0, 0); /* RGB notation (no alpha). */
background: #000; /* 3-digit hexadecimal notation (no alpha). */
background: #000000; /* 6-digit hexadecimal notation (no alpha). */
background: rgba(0, 0, 0, 1.0); /* RGBA notation. */
/* The new 4 and 8-digit hexadecimal notation. */
background: #0000; /* 4-digit hexadecimal notation. */
background: #00000000; /* 8-digit hexadecimal notation. */
}
我什么时候能在面向客户的产品中使用它?
开玩笑的是:现在只是2015年的开始,所以在很长一段时间内这些功能都不会在任何浏览器中得到支持——即使你的产品只设计在最新的浏览器上运行,你也可能不会很快在产品浏览器中看到这些功能。
查看当前浏览器对#RRGGBBAA颜色符号的支持
然而,也就是说,CSS的工作方式意味着我们今天就可以开始使用这些!如果你真的想现在就开始使用它们,只要你添加了一个后退,任何不支持的浏览器都会简单地忽略这些新属性,直到它们被认为有效:
图{
保证金:0;
填充:4 px;
/*后退(…不支持alpha透明的浏览器)。* /
背景:# FEFE7F;
颜色:# 3 f3ffe;
/*当前的“现代”浏览器支持。* /
背景:rgba(255,255,0, 0.5);
颜色:rgba(0, 0, 255, 0.75);
/ *下降……前进牌汽车?* /
背景:# ffff007F;/*或者更准确地说,#ff08 */
颜色:# 0000 ffbe;/*或#00fc */
}
<人物>你好,世界!图> < /
只要你在一个支持CSS中的背景和颜色属性的浏览器上查看这个答案,上面代码片段的<figure>元素的结果将看起来非常相似:
使用最新版本的Chrome on Windows (v39.0.2171)检查<figure>元素,我们将看到以下内容:
rgba()值覆盖了6位十六进制回退,我们的8位十六进制值被忽略,因为它们目前被Chrome的CSS解析器视为无效。只要我们的浏览器支持这些8位数的值,它们就会覆盖rgba()的值。
更新2018-07-04:Firefox, Chrome和Safari现在都支持这个符号,Edge还没有,但可能会跟上(https://caniuse.com/#feat=css-rrggbbaa)。