2011-10-20 74 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,因此應固定在代碼的最新版本。