Как получить цветовой код фона элемента?


как я могу получить код цвета фона элемента?

HTML

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

jQuery

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

результат

rgb(245, 180, 5)

что я хочу!--8-->

#f5b405
6 60

6 ответов:

пример проверить ссылку ниже и нажмите на 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/

для этого есть немного взлома, так как холст HTML5 требуется для разбора значений цвета, когда некоторые свойства, такие как strokeStyle и fillStyle установлено:

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 под какой-нибудь элемент, хром будет выводить его background-color Как rgba(0, 0, 0, 0), в то время как выходы Firefox-это transparent.

мое красивое нестандартное решение

HTML

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

jQuery

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

результат

#f5b405