2011-10-20 43 views
3

当我试图做一个简单的HSL到RGB转换与jQuery ColorjQuery的颜色插件HSL模式

$.colors('hsl(100,100%,50%)').toString('rgb'); 

我发现了一些在HSL结构怪异:色相可以从0设置为100,它不接受超出此范围的值, 所以理论上hsl(100,100%,50%) === hsl(0,100%,50%) === red

但我转换为RGB后得到的是hsl(100,100%,50%) === redhsl(0,100%,50%) === yellowish-green 这将是真实的,如果色调是1-360作为理论。

这怎么可能,以及如何使用HSL获得全色圆?

回答

5

看着the source,Hue的预期范围确实是0-360。

这是因为有validation code的错误“色相可以从0设置为100,它不超出该范围的接受值”。该行应该是:

if ((a == 1 && result[a] <= 360) || (a > 1 && result[a] <= 100)) { 

a[1]保持用于所述第一正则表达式模式所捕获的值(匹配第一ARG,H),不a[0]。为了说明这一点,这里有一个小提琴:http://jsfiddle.net/vMLZ2/


附:我已提交pull request修复程序。在此期间,该演示展示了所建议的修改如预期工作:http://jsfiddle.net/Gh9kQ/

p.p.s拉入请求has been merged,因此应固定在代码的最新版本。