San*_*ord 7 javascript css colors cssom getcomputedstyle
我正在解析返回的颜色字符串,getComputedStyle以从中获取R、G、B和A值。
到目前为止(在 Chrome 和 Firefox 中),颜色值似乎总是以易于解析的rgb或格式返回:rgba
const [, r, g, b, a] = str.replace(/\s/g, "").match(/rgba?\((\d+(?:\.\d+)?),(\d+(?:\.\d+)?),(\d+(?:\.\d+)?)(?:,(\d+(?:\.\d+)?))?\)/i);
Run Code Online (Sandbox Code Playgroud)
然而,我无法在其MDN 页面上列出的任何规格中找到有关颜色格式的任何承诺。getComputedStyle
颜色格式有保证吗getComputedStyle?还是完全取决于浏览器的实现?
我不想检查 HEX 和 HSLA 值(实际上还有其他可能的值 - 我不完全确定)。
用于在控制台中测试颜色值的快速代码片段:
const [, r, g, b, a] = str.replace(/\s/g, "").match(/rgba?\((\d+(?:\.\d+)?),(\d+(?:\.\d+)?),(\d+(?:\.\d+)?)(?:,(\d+(?:\.\d+)?))?\)/i);
Run Code Online (Sandbox Code Playgroud)
CSSOM 没有直接说明这一点,而是引用了css-color-4:
\n\n\n序列化CSS组件值取决于组件,如下:
\n<color>
\n
\n如果 <color> 是解析值的组成部分,请参阅CSS Color 4 \xc2\xa74.6 解析 <color> 值。如果 <color> 是计算值的组成部分,请参阅CSS Color 4 \xc2\xa74.7 序列化 <color> 值。
\n
出于 的目的getComputedStyle(),以上两行含义相同。具体来说,第 4.7.2 节涵盖了大多数常用格式:
\n\n4.7.2. 序列化 sRGB 值
\n以下 sRGB 值的序列化形式:
\n\n
\n- 十六进制颜色
\n- \n
rgb()和rgba()价值观- \n
hsl()和hsla()价值观- \n
hwb()价值观- 命名颜色
\n是从计算值导出的,因此使用 或
\nrgb()形式rgba()(取决于 alpha 是否恰好为 1),函数名称采用小写字母。
第 4.7.6 节介绍了系统颜色(计算为小写)、transparent(计算为rgba(0, 0, 0, 0))和currentColor(计算为小写currentcolor)。
由于 css-color-4 引入了几种指定颜色的新方法,因此还存在其他格式的其他部分,例如用于 LCH 值的\xc2\xa74.7.3 、用于函数的\xc2\xa74.7.4color()等等。
这意味着仅当指定值采用 \xc2\xa74.7.2 中的任何格式时,getComputedStyle()才保证颜色值采用 或rgb()格式rgba(),具体取决于 alpha 值。但 \xc2\xa74.7.2 和 \xc2\xa74.7.6 涵盖了日常 CSS 中的绝大多数用例,因此它们仍然可以信赖。考虑到其他外来格式尚未在任何地方得到真正支持,因此在它们享受任何主流用途之前可能不值得对其进行测试。
| 归档时间: |
|
| 查看次数: |
1898 次 |
| 最近记录: |