使用" Ultimate Color Converter"就像要做的事情,我可以得到颜色模型转换为HSL但由于某种原因,当我转换HSL,整个事情打破。我甚至无法再提交它。
我还在代码中添加了一堆调试行,但它没有报告给控制台。
我可以在此处找到我当前的项目:http://codepen.io/spedwards/pen/ikJxH或http://jsfiddle.net/spedwards/se5yU/
由于代码很长,我不会发布整个内容,而只是发布它的一部分。
else if (type == 'hsl') {
hsl = type;console.debug(hsl = type);
/* START RGB */
c = type.slice(4).split(',');console.debug('Removed first 4 chars');
c[2] = c[2].substring(0, c[2].length - 1);console.debug('Removed last bracket');
c = hslToRgb(c[0],c[1],c[2]);console.debug('Convert to RGB');
rgb = 'rgb(' + c.join() + ')';console.debug('Sets RGB');
/* END RGB */
/* START RGBA */
rgba = (rgb.substring(0, rgb.length - 1) + ',1)').splice(3,0,'a');console.debug('Sets RGBA');
/* END RGBA */
/* START HEX */
hex = '#';console.debug('Starts hex');
for (i=0;i<3;i++) {
c[i] = +c[i];console.debug('Coerces to number: ' + i);
hex += (c[i] < 16 ? "0" : "") + c[i].toString(16).toUpperCase();console.debug('Sets hex part: ' + i);
}
/* END HEX */
}
function hslToRgb(h, s, l){
var r, g, b;
if(s == 0){
r = g = b = l; // achromatic
}else{
function hue2rgb(p, q, t){
if(t < 0) t += 1;
if(t > 1) t -= 1;
if(t < 1/6) return p + (q - p) * 6 * t;
if(t < 1/2) return q;
if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;
return p;
}
var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
var p = 2 * l - q;
r = hue2rgb(p, q, h + 1/3);
g = hue2rgb(p, q, h);
b = hue2rgb(p, q, h - 1/3);
}
return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];
}
我应该注意,type
以hsl(0,0,1)
或其他任何内容输入。
答案 0 :(得分:0)
我发现了我的问题。我忘记将type == 'hsl'
更改为colourType == 'hsl'
。
现在一切正常。