//转换公式参考自 http://en.wikipedia.org/wiki/HSL_color_space.
//r, g, 和 b 需要在 [0, 255] 范围内
//返回的 h, s, 和 l 在 [0, 1] 之间
//Number r 红色色值
//Number g 绿色色值
//Number b 蓝色色值
//Array HSL各值数组
function RgbToHsl(r, g, b) {
r /= 255, g /= 255, b /= 255
var max = Math.max(r, g, b), min = Math.min(r, g, b)
var h, s, l = (max + min) / 2
if (max == min) {
h = s = 0
} else {
var d = max - min
s = l > 0.5 ? d / (2 - max - min) : d / (max + min)
switch (max) {
case r: h = (g - b) / d + (g < b ? 6 : 0) break
case g: h = (b - r) / d + 2 break
case b: h = (r - g) / d + 4 break
}
h /= 6
}
return [Math.floor(h * 100), Math.round(s * 100) + "%", Math.round(l * 100) + "%"]
}
参考改写的,希望对你有用。
很难实现,像chrome浏览器的,基本你背景色写的是单词,但是浏览器已经转换为了rgb色,所以你读出来的不会是单词。如果你写在html里的话,可以用读取整个标签,然后用正则提取出来,但这个方法不建议使用,使用css样式表的基本就无法使用了。建议你用一个rgb色,十六进制色和名字组成的数组或者字典,然后查询颜色会比较好。