在支持 CSS3 的浏览器中,无需将 HSL 颜色转换为 RGB,因为您可以像这样分配它们:
function rand(min, max) {
return min + Math.random() * (max - min);
}
function get_random_color() {
var h = rand(1, 360);
var s = rand(0, 100);
var l = rand(0, 100);
return 'hsl(' + h + ',' + s + '%,' + l + '%)';
}
http://jsfiddle.net/5V8mV/1/ http://jsfiddle.net/5V8mV/1/
使用该算法,您可以轻松地将颜色限制为蓝色色调,例如:http://jsfiddle.net/DH2Bk/ http://jsfiddle.net/DH2Bk/
如果您需要 RGB 转换算法(例如,对于 IE8),您可以直接在规范中找到它:http://www.w3.org/TR/css3-color/#hsl-color http://www.w3.org/TR/css3-color/#hsl-color
HOW TO RETURN hsl.to.rgb(h, s, l):
SELECT:
l<=0.5: PUT l*(s+1) IN m2
ELSE: PUT l+s-l*s IN m2
PUT l*2-m2 IN m1
PUT hue.to.rgb(m1, m2, h+1/3) IN r
PUT hue.to.rgb(m1, m2, h ) IN g
PUT hue.to.rgb(m1, m2, h-1/3) IN b
RETURN (r, g, b)
HOW TO RETURN hue.to.rgb(m1, m2, h):
IF h<0: PUT h+1 IN h
IF h>1: PUT h-1 IN h
IF h*6<1: RETURN m1+(m2-m1)*h*6
IF h*2<1: RETURN m2
IF h*3<2: RETURN m1+(m2-m1)*(2/3-h)*6
RETURN m1
Edit:
我刚刚找到了一个不错的 JS 库,有更多选项https://github.com/davidmerfield/randomColor https://github.com/davidmerfield/randomColor