以下是將rgb轉換爲十六進制顏色的功能。但這不完全正確。用(0,255,0)(#00ff00)。它返回ff00,所以它不是有效的顏色。我需要幫助來修改它以返回正確的十六進制值。將RGB轉換爲十六進制顏色
function rgbToHex(r, g, b) {
var rgb = b | (g << 8) | (r << 16);
return rgb.toString(16);
}
以下是將rgb轉換爲十六進制顏色的功能。但這不完全正確。用(0,255,0)(#00ff00)。它返回ff00,所以它不是有效的顏色。我需要幫助來修改它以返回正確的十六進制值。將RGB轉換爲十六進制顏色
function rgbToHex(r, g, b) {
var rgb = b | (g << 8) | (r << 16);
return rgb.toString(16);
}
如何:
//...
return (0x1000000 | rgb).toString(16).substring(1);
試試這個:
return ("000000"+rgb.toString(16)).slice(-6);
// ^----returns last 6 chars
+1這實際上是一個很好的樣板,可以填充任何角色! – Roman 2012-07-27 08:35:04
return ((b | g << 8 | r << 16)/16777216).toString(16).substring(2);
或
return ((b | g << 8 | r << 16)/0x1000000).toString(16).substring(2);
太棒了! '|可能更容易理解0x1000000'而不是分割。 – tybro0103 2013-10-14 18:14:21
如何:
return $.sprintf("#%02x%02x%02x", r, g, b);
爲此,您需要使用jQuery。
聲明:我是下面提到的pusher.color庫的作者。
如果你不介意使用庫,你可能想嘗試一個庫,如pusher.color或xcolor。我注意到你已經在Stackoverflow上提出了關於JavaScript中顏色操作的幾個問題,所以這可以爲你節省一些時間來使用庫來解決你的問題。你想要的東西的pusher.color語法是:
var hexString = pusher.color('rgb', r, g, b).hex6();
又一個替代
function rgbToHex(r, g, b) {
function c(v) {
var hex = v.toString(16);
return hex.length === 1 ? "0" + hex : hex;
}
return "#" + c(r) + c(g) + c(b);
}
如何使用圖書館像the xolor library:
var color = xolor([45, 100, 200])
color.rgb // "rgb(45,100,200)"
color.hex // "2D64C8"
color.hsl // {h: 219, s:63.3, l:48.0}
color.hsv // {h: 218.7, s:0.7750, v:0.7843}
color.name // "royalblue"
哦,這是一個大塊普里莫那裏的奶酪...... – Malvolio 2012-07-27 08:26:44
我不明白這應該怎麼做所有三個值?我明白你怎麼可以做'(0x100 | r)...'特別地變紅。 – tybro0103 2013-10-14 18:06:52