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

时间:2011-05-14 01:15:22

标签: jquery css background-color

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

HTML

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

的jQuery

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

结果

rgb(245, 180, 5)

我想要什么

#f5b405

8 个答案:

答案 0 :(得分:94)

检查下面的示例链接,然后单击div以获取十六进制的颜色值。

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/

上的工作示例

答案 1 :(得分:9)

对此有一点破解,因为在设置strokeStylefillStyle等特定属性时,HTML5画布需要解析颜色值:

var ctx = document.createElement('canvas').getContext('2d');
ctx.strokeStyle = 'rgb(64, 128, 192)';
var hexColor = ctx.strokeStyle;

答案 2 :(得分:8)

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下正常使用

答案 3 :(得分:5)

您拥有将其转换为所需格式所需的颜色。

这是一个应该起作用的脚本:http://www.phpied.com/rgb-color-parser-in-javascript/

答案 4 :(得分:4)

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

答案 5 :(得分:3)

我漂亮的非标准解决方案

<强> HTML

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

<强>的jQuery

$(this).attr("style").replace("background-color:", "");

<强>结果

#f5b405

答案 6 :(得分:2)

添加@Newred解决方案。 如果您的样式不只是background-color,则可以使用以下方法:

$(this).attr('style').split(';').filter(item => item.startsWith('background-color'))[0].split(":")[1]

答案 7 :(得分:1)

此解决方案利用了@Newred和@Radu Diță所说的部分内容。但是将在不太标准的情况下使用。

 $(this).attr('style').split(';').filter(item => item.startsWith('background-color'))[0].split(":")[1].replace(/\s/g, '');

他们两个都有的问题是,它们都不检查background-color:和颜色之间的空间。

所有这些都将与上面的代码匹配。

 background-color: #ffffff
 background-color:      #fffff;
 background-color:#fffff;