在HTML和CSS中,RGB顏色格式被普遍地使用,通常有如下三種表示方式:
1.六位十六進制表示法,例如"#80FFA0",每兩位,比如說”80”,”FF”,”A0”,分別代表紅,綠,藍三種顏色所占比例的16進制表示。
2.三位十六進制表示法,例如”#3B7”,每一位數字都翻譯成兩位十六進制數字,可以寫成”#33BB77”的形式。
3.預置顏色名稱表示法,例如“red”,“blue”。
在這篇博文的實現,將考慮,如何將第一、二種表示法轉換為解析后的顏色映射。
//解析顏色字符串//例如:"80FFA0"//注意:此時的字符串沒有#號function parse(color){ //16進制轉換為10進制 var r = parseInt(color.slice(0 , 2) , 16); var g = parseInt(color.slice(2 , 4) , 16); var b = parseInt(color.slice(4 , 6) , 16); //返回映射對象 return { "r" : r, "g" : g, "b" : b };}function parseHTMLColor(color) { //如果以#號開頭 if(color.indexOf("#") == 0){ //如果是6位表示法 if(color.length == 7){ //去掉#號 color = color.slice(1); } //如果是3位表示法 else if(color.length == 4){ //去掉#號 color = color.slice(1); //分割成數組,作拼接 var array = color.split("").map(e=>e+e); //聚合成字符串 color = array.join(""); } } //統一做解析,返回 return parse(color);}parseHTMLColor('#80FFA0'); // => { r: 128, g: 255, b: 160 }parseHTMLColor('#3B7'); // => { r: 51, g: 187, b: 119 }補充:
第三種表示法也可以做解析,只是要做好顏色名稱和十六進制表示法之間的映射關系。
新聞熱點
疑難解答