JavaScript getComputedStyle不适用于颜色名称?
我只是问我做错了什么,因为我以前做过,我不记得怎么做了,我一定是丢失了旧代码 Firefox有一个名为JavaScript getComputedStyle不适用于颜色名称?,javascript,css,windows,dom,colors,Javascript,Css,Windows,Dom,Colors,我只是问我做错了什么,因为我以前做过,我不记得怎么做了,我一定是丢失了旧代码 Firefox有一个名为-moz-win-accentcolor的未记录颜色值,可用于获取Windows 10的重音颜色 如果我直接在样式表中使用该颜色名称(在我的扩展中,以匹配系统的主题),效果会很好,但是我需要将颜色调暗或调亮一点,如果不获取颜色数据本身,我就无法做到这一点 这就是我得到的,我使用window.getComputedStyle和getPropertyValue来获取颜色数据。我不管它是十六进制还是R
-moz-win-accentcolor
的未记录颜色值,可用于获取Windows 10的重音颜色
如果我直接在样式表中使用该颜色名称(在我的扩展中,以匹配系统的主题),效果会很好,但是我需要将颜色调暗或调亮一点,如果不获取颜色数据本身,我就无法做到这一点
这就是我得到的,我使用window.getComputedStyle
和getPropertyValue
来获取颜色数据。我不管它是十六进制还是RGBA,见鬼,我不管它是二进制。我只需要能够git颜色来操作颜色数据
function getComputedAccent() {
let fakeEl = document.createElement("div");
fakeEl.style = "background: -moz-win-accentcolor";
return window.getComputedStyle(fakeEl).getPropertyValue("background");
}
但这只是返回一个空字符串。知道我忘了什么吗
(是的,我知道这是一个黑客,我不在乎。)嗯,我是在装傻。代码确实有效,只是做了一点小改动
function getComputedAccent() {
let fakeEl = document.createElement("div");
fakeEl.style = "background-color: -moz-win-accentcolor";
return window.getComputedStyle(fakeEl).getPropertyValue("background-color");
}
getComputedAccent()
"rgb(55, 60, 72)"
它以空字符串响应,因为background
属性并不总是一种颜色。它可以是一个图像。把它改成背景色,你就没事了
编辑以添加更有用的代码
function getComputedAccent() {
let fakeEl = document.createElement("div");
fakeEl.setAttribute("style", "background-color: -moz-win-accentcolor");
let color = window.getComputedStyle(fakeEl).getPropertyValue("background-color");
color = color.match(/rgb\((\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*\)/);
color.shift();
color = color.map((value) => parseInt(value, 10));
return color;
}
“知道我忘记了什么吗?”
background
只是多个属性的快捷名称,如background color
、background image
、background position
,这些属性分别存储在CSSDOM对象中,即background
属性本身不存在。@Teemu请参见下面的答案。在你30分钟前发布。但是“我忘记了什么”这个问题没有答案。这也是部分错误,“背景属性不是…”因为它不存在,而不是它将包含更多的内容。