【发布时间】:2020-06-17 10:04:06
【问题描述】:
const box = document.getElementById('rb');
console.log(box.computedStyleMap().get('background-color'))
.red {
background-color: #FF0000;
}
.box {
width: 100px;
height: 100px;
}
<div id="rb" class="box red"></div>
使用新的 CSS 类型对象模型,我正在尝试获取此 div 的背景颜色。它给了我一个CSSStyleValue,它似乎只有一个toString() 方法。我希望它将颜色解析为 RGB 三元组或其他有用的东西,就像它对宽度所做的那样。
是否有用于解析颜色的 API,或者尚未指定?
(我知道我可以手动解析字符串,这不是问题)
【问题讨论】:
-
我认为没有任何 API 可以做到这一点。 JS也没有任何指定的格式。你可能会得到
”red”或rgb()或hex... -
一个问题:你还不知道背景颜色的原因是什么?就像,如果你控制项目,你的 javascript 应该已经知道背景是什么颜色。
-
@Akxe
getComputedStyle返回rgb(255, 0, 0)无论我在 Chrome 和 Firefox 中使用“red”、rgb() 还是 hex,但我不确定这是符合规范还是巧合 - - 但这确实是这个问题的核心 - 应该有一个 API,以便我们可以以一致的方式操纵颜色。 -
@frodo2975 取决于值的来源。如果我控制一切,那么是的,绝对,我只是将它们作为数字存储在内存中,而不会费心检查 DOM。但是,在某些情况下,我需要使用不受控制的 DOM 元素。
标签: javascript css cssom css-houdini