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

lau*_*kok 67 css jquery background-color

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

HTML

<div style="background-color:#f5b405"></div>
Run Code Online (Sandbox Code Playgroud)

jQuery的

$(this).css("background-color");
Run Code Online (Sandbox Code Playgroud)

结果

rgb(245, 180, 5)
Run Code Online (Sandbox Code Playgroud)

我想要的是

#f5b405
Run Code Online (Sandbox Code Playgroud)

Hus*_*ein 97

检查下面的示例链接,然后单击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('');
}
Run Code Online (Sandbox Code Playgroud)

查看http://jsfiddle.net/DCaQb/上的工作示例

  • 有时`$(this).css('backgroundColor')`返回`rgba(n,n,n,n)`. (5认同)
  • 玩了一些你的功能来自动化设计现代化等等......示例使用场景 http://jsfiddle.net/DCaQb/625/ - 不完美但也许它对某人有帮助,所以我将它链接到这里以供参考 (2认同)
  • 谢谢你的代码示例.可能只想将hexc函数重写为返回字符串的实际函数,而不是设置全局变量. (2认同)

Nat*_*yan 10

有一点这种黑客攻击的,因为HTML5画布需要解析的颜色值时,某些性能,如strokeStylefillStyle设置:

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


cod*_*erz 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;
  }
Run Code Online (Sandbox Code Playgroud)

在Chrome和Firefox下正常运行


gen*_*nry 5

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

这是一个可以解决这个问题的脚本:http://www.phpied.com/rgb-color-parser-in-javascript/


cod*_*erz 5

实际上,如果background-color在某些元素下未定义,Chrome会将其输出background-colorrgba(0, 0, 0, 0),而Firefox输出为transparent