js - 颜色比较(将颜色统一转成十六进制格式)
使用 js 或 jQuery 获取背景色输出,会发现在ie下是#FF0000这样的十六进制格式。而在火狐或其他浏览器下,却是rgb(255,0,0)这样的rgb颜色。如果想要判断某个div的背景色是否是红色,虽然可以在js代码里先获取浏览器类型,再分别判断。但这样略显麻烦。
使用用样例(以jQuery为例):
可以定义一个函数,不管是哪种格式的颜色一律转换成十六进制的格式:
//将rgb()格式颜色转换成大写十六机制字符串(#C0C0C0),如果已经是十六进制则直接输出 function RGBtoHEX(str) { if (str.substring(0, 3) == 'rgb') { var arr = str.split(","); var r = arr[0].replace('rgb(','').trim(), g = arr[1].trim(), b = arr[2].replace(')','').trim(); var hex = [ toHex(r), toHex(g), toHex(b) ]; return "#" + hex.join(''); } else{ return str; } } //将十进制数字转换成两位十六进制字符串 function toHex(N) { if (N==null) return "00"; N=parseInt(N); if (N==0 || isNaN(N)) return "00"; N=Math.max(0,N); N=Math.min(N,255); N=Math.round(N); return "0123456789ABCDEF".charAt((N-N%16)/16) + "0123456789ABCDEF".charAt(N%16); }
使用用样例(以jQuery为例):
alert(RGBtoHEX($("#hangge:first").css("backgroundColor")) == "#FF0000")