当我试图用jQuery Color做一个简单的HSL到RGB的转换时,
$.colors('hsl(100,100%,50%)').toString('rgb');我注意到HSL结构中的一些奇怪之处: Hue可以设置为从0到100,它不接受这个范围之外的值,所以在理论上是hsl(100,100%,50%) === hsl(0,100%,50%) === red
但在转换为RGB后,我得到的是hsl(100,100%,50%) === red和hsl(0,100%,50%) === yellowish-green,如果色调是理论上的1-360,这将是真的。
这是怎么回事,我如何使用HSL获得完整的颜色圆圈?
发布于 2011-10-20 21:13:28
看看the source,色调的预期范围确实是0-360。
“色调可以设置为从0到100,它不接受超出此范围的值”
这是因为在validation code中有一个错误的。这一行应该是:
if ((a == 1 && result[a] <= 360) || (a > 1 && result[a] <= 100)) {a[1]保存第一个正则表达式模式(匹配第一个参数,H)的捕获值,而不是a[0]。为了说明这一点,这里有一个难题:http://jsfiddle.net/vMLZ2/
p.s.我已经提交了一个带有修复的pull request。同时,此演示展示了建议的修改按预期工作:http://jsfiddle.net/Gh9kQ/
P.P.S pull request has been merged,因此应该在最新版本的代码中修复。
https://stackoverflow.com/questions/7835200
复制相似问题