CSS颜色模块级别4 可能会支持4和8位十六进制RGBA表示法!
三周前(2014年12月18日),CSS颜色模块4级编辑器的草案已提交给CSS W3C工作组。尽管这在很大程度上容易受到变化的状态下,文件的当前版本意味着,在一定程度上不久的将来CSS将同时支持4位和8位十六进制RGBA符号。
注意:以下引号中有不相关的部分被删节,在您阅读本文时,源可能已被重大修改(如上所述,这是编辑的草稿,而不是定稿的文件)。
如果情况发生了重大变化,请发表评论告知我,以便我更新此答案!
§4.2。RGB十六进制表示法:#RRGGBB
a的语法<hex-color>
是<hash-token>
令牌,其值由3、4、6或8个十六进制数字组成。换句话说,十六进制颜色被写为哈希字符“#”,后跟一些数字0-9
或字母a-f
(字母的大小无关紧要- #00ff00
与相同#00FF00
)。
8位数字
前6位数字的解释与6位数字的解释相同。最后一对数字(解释为十六进制数字)指定颜色的Alpha通道,其中00
代表完全透明的颜色而ff
代表完全不透明的颜色。
示例3
换句话说,#0000ffcc
表示与rgba(0, 0, 100%, 80%)
(略透明的蓝色)相同的颜色。
4位数
这是8位数字表示法的较短变体,以与3位数字表示法相同的方式“扩展”。第一位解释为十六进制数,指定颜色的红色通道,其中0
代表最小值,f
代表最大值。接下来的三个数字分别代表绿色,蓝色和Alpha通道。
这对CSS颜色的未来意味着什么?
这意味着,假设这是没有完全从4级文档中删除,我们很快就可以定义我们的RGBA颜色(或颜色HSLA,如果你是一个那些家伙)在浏览器中以十六进制格式支持的颜色模块级别4的语法。
例
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的工作方式意味着我们实际上可以从今天开始使用它们!如果您真的想立即开始使用它们,只要添加一个回退,所有不支持的浏览器都将忽略新属性,直到它们被视为有效:
figure {
margin: 0;
padding: 4px;
/* Fall back (...to browsers which don't support alpha transparency). */
background: #FEFE7F;
color: #3F3FFE;
/* Current 'modern' browser support. */
background: rgba(255, 255, 0, 0.5);
color: rgba(0, 0, 255, 0.75);
/* Fall... foward? */
background: #ffff007F; /* Or, less accurately, #ff08 */
color: #0000ffbe; /* Or #00fc */
}
<figure>Hello, world!</figure>
只要您在支持CSS中的background
和color
属性的浏览器上查看此答案,<figure>
上述代码段中的元素看起来都将与此非常相似:
使用Windows上的最新版本的Chrome(v39.0.2171)检查我们的<figure>
元素,我们将看到以下内容:
这些rgba()
值会覆盖6位数的十六进制回退值,而我们的8位数的十六进制值会被忽略,因为Chrome的CSS解析器目前认为它们无效。只要我们的浏览器支持这些8位数的值,这些值就会覆盖它们rgba()
。
更新2018-07-04: Firefox,Chrome和Safari现在支持此表示法,但Edge仍不见了,但可能会跟随(https://caniuse.com/#feat=css-rrggbbaa)。
rgb(0xff,\x80,#44)
惊人的八进制表示似乎纽约一点点rgb(0100, 0200,0300)
的#4080C0