cssの16進数色をrgbフォーマットに変換
1751 ワード
対dojo/base/Colorモジュールの注記、ソースアドレスhttps://github.com/robinxiong/dojo/blob/master/_base/Color.js
function fromHex(color){
/*
summary:
css , rgb
"#fff" -> 0xfff
4, , 0x10 == 16(2 4 , 1 4 0) === 1 0000, f 1111
mask = 1111, (& ),
, b , 4 , g, 4 , r
b :
0000 1111 1111 1111 & 0000 0000 0000 1111 ( 16 , 32 )
0000 0000 0000 1111 b c
0000 1111 1111 1111 >> 4, -> 0000 0000 1111 1111
g
0000 0000 1111 1111 & 0000 0000 0000 1111
0000 0000 0000 1111 g , c
, r
"ffffff" -> 0xffffff
8, 0xff = 1111 1111
8 ,
*/
var t = {},
bits = (color.length == 4) ? 4 : 8,// shorthand, #fff, bits 4 , , 8 #ffffff00
mask = (1 << bits) - 1; // , 4 8 ,var a = (1 << 4 ) - 1 -> 10000 - 1, a.toString(2); // 1111, 8 1111 1111
color = Number("0x" + color.substr(1)); //#ff0000 16 0xff0000;
if(isNaN(color)){
return null; // Color
}
["b", "g", "r"].forEach(function(x){
var c = color & mask;
color >>= bits;
t[x] = bits == 4 ? 17 * c : c; // 0xfff , f 255, [0-255], 15 , 17。 17, rgb 255
});
t.a = 1;
return t; // Color
}
console.log(fromHex("#00f")) // {r:0, g: 0, b:255, a:1}