有没有办法把单词颜色(红色,蓝色,绿色)转换成#123456的值?

Is there a way to convert word colors ("red", "blue", "green") into #123456 values?

本文关键字:转换 绿色 #123456 的值 蓝色 有没有 单词 颜色 红色      更新时间:2023-09-26

我已经纠结了一段时间了。我一直在尝试比较元素的颜色,但即使颜色相同,代表它们的值也不相同。一个是#000,另一个是"黑色"。我怎么把"黑色"变成#000呢?话虽如此,我如何将任何单词颜色转换成数字呢?

我以前见过有人问这个问题,我想你可以在这里找到一个好的脚本。

这个脚本来自一个伟大的javascript程序员,实际上他做了一个单词查找,我认为没有其他方法可以做到。

我不确定它是可能的x浏览器没有预定义的颜色列表。在支持window.getComputedStyle():

的浏览器中,这很简单
function getColorFromName(name) {
    var rgb,
        tmp = document.body.appendChild(document.createElement("div"));
    tmp.style.backgroundColor = name;
    rgb = window.getComputedStyle(div, null);
    //-> returns format "rgb(r, g, b)", which can be parsed and converted to hex
}

对于不支持此功能的浏览器,您唯一的选择是使用对象映射并自己定义值:

var colours = {
    aliceblue:      "#F0F8FF",
    antiquewhite:   "#FAEBD7",
    aqua:           "#00FFFF"
    //...etc
}
// and lookup
alert(colours[document.getElementById("div").style.backgroundColor.toLowerCase()]);

CSS3中支持的颜色的完整列表可从http://www.w3.org/TR/css3-color/#svg-color获得。

当然,列表方法的缺点是,如果规范发生变化,需要维护列表,因此您可能希望合并两种方法-即如果 getComputedStyle()可用,则使用,否则退回到列表。这确保了旧浏览器和新浏览器的兼容性,而无需更新列表。

既然你正在使用javascript,你可以使用一个" javascript关联数组",并有关联"colorName <-> colorCode"你需要。

您可以在这里找到所有官方颜色名称:http://www.w3schools.com/cssref/css_colornames.asp

下面是一些代码:
var colors= new Array();
colors["black"] = "#000";
colors["AliceBlue"] = "#F0F8FF";
colors["AntiqueWhite"] = "#FAEBD7";
var mycolor = 'black'
alert('the code of '+mycolor +' is:'+colors[mycolor]);

如果你设置了一个CSS color属性到你的颜色字符串,然后获得该属性,大多数(至少一些)现代浏览器会给你一个"规范化"的颜色字符串。Firefox似乎喜欢"rgb(n, n, n)"表示法。

编辑本;@Andy E注意到这在很多浏览器中不起作用