当您获得元素的当前颜色时,您获得的颜色会因浏览器而有所不同。你提到的格式,rgb(0,0,0) 可以很容易地转换成#000000 样式:rbg 代表“红、绿、蓝”,数字是十进制的,所以只需要一点解析。您可能还希望允许 rgba(0,0,0,0) 忽略第四个数字。
要解析rgb(0,0,0),您可以使用正则表达式:
var match, red, green, blue, code;
match = str.match(/rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)/);
if (match) {
red = parseInt(match[1], 10);
green = parseInt(match[2], 10);
blue = parseInt(match[3], 10);
code = '#' +
zeroPad(red.toString(16), 2) +
zeroPad(green.toString(16), 2) +
zeroPad(blue.toString(16), 2);
}
...zeroPad 是一个在左侧补零的实用函数:
function zeroPad(str, width) {
while (str.length < width) {
str = '0' + str;
}
return str;
}
Example using text input