有没有办法把单词颜色(红色,蓝色,绿色)转换成#123456的值?
Is there a way to convert word colors ("red", "blue", "green") into #123456 values?
我已经纠结了一段时间了。我一直在尝试比较元素的颜色,但即使颜色相同,代表它们的值也不相同。一个是#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注意到这在很多浏览器中不起作用
- 如何在JavaScript中将字符串转换为函数引用
- 如何在Javascript中将JSon对象转换为数组
- 使用JS将数组转换为json对象
- 如何使用json将对象列表从java转换为javascript
- 偶尔结结巴巴地说“;堆叠的”;translate()上的转换(v4.0.0-alpha40)
- 为什么在单独的函数中应用时转换会闪烁/断断续续(D3)
- 在Javascript中转换对象数组
- 将数字转换为一定数量的硬币
- 将纯文本URL转换为可单击链接
- 当图像转换为本地存储的DataURL时,EXIF被删除
- 如何使用js将SNAPSHOT内部版本号转换为3位数的整数
- 如何将TypeScript对象转换为普通对象
- 检测个位数整数时正在转换毫秒
- 从javascript到jquery的转换
- DOM事件通过JSON转换为java
- 将圆柱体转换为弯管
- 混合 ui-sref 和 $state.go 在 Angular ui-router 中进行状态转换
- JavaScript代码问题:我正在将对象转换为数组
- 如何将字母转换为二进制代码
- 有没有办法把单词颜色(红色,蓝色,绿色)转换成#123456的值?