如何获取元素的背景颜色代码?

如何获取元素的背景颜色代码?

HTML

<div style="background-color:#f5b405"></div> 

jQuery的

 $(this).css("background-color"); 

结果

 rgb(245, 180, 5) 

我想要的是

 #f5b405 

检查下面的示例链接,并点击div来获取hex的颜色值。

 var color = ''; $('div').click(function() { var x = $(this).css('backgroundColor'); hexc(x); alert(color); }) function hexc(colorval) { var parts = colorval.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/); delete(parts[0]); for (var i = 1; i <= 3; ++i) { parts[i] = parseInt(parts[i]).toString(16); if (parts[i].length == 1) parts[i] = '0' + parts[i]; } color = '#' + parts.join(''); } 

http://jsfiddle.net/DCaQb/查看工作示&#x4F8B;

对此有一些破解,因为当设置了像strokeStylefillStyle这样的属性时,HTML5canvas需要parsing颜色值:

 var ctx = document.createElement('canvas').getContext('2d'); ctx.strokeStyle = 'rgb(64, 128, 192)'; var hexColor = ctx.strokeStyle; 
 function getBackgroundColor($dom) { var bgColor = ""; while ($dom[0].tagName.toLowerCase() != "html") { bgColor = $dom.css("background-color"); if (bgColor != "rgba(0, 0, 0, 0)" && bgColor != "transparent") { break; } $dom = $dom.parent(); } return bgColor; } 

在Chrome和Firefox下正常工作

你只需要把它转换成你想要的格式即可。

这是一个脚本,应该做的伎俩: http : //www.phpied.com/rgb-color-parser-in-javascript/

事实上,如果在某个元素下没有background-color定义,Chrome会输出其background-colorrgba(0, 0, 0, 0) ,而Firefox的输出是transparent