Подтвердить что ты не робот

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

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

HTML

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

JQuery

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

Результат

rgb(245, 180, 5)

Что я хочу

#f5b405
4b9b3361

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

Ответ 4

У вас есть цвет, который вам нужен, чтобы преобразовать его в желаемый формат.

Здесь script, который должен выполнить трюк: http://www.phpied.com/rgb-color-parser-in-javascript/

Ответ 5

На самом деле, если для некоторого элемента нет определения background-color, Chrome будет выводить его background-color как rgba(0, 0, 0, 0), а выходы Firefox - transparent.

Ответ 6

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

HTML

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

JQuery

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

Результат

#f5b405

Ответ 7

Добавление на @Newred решение. Если ваш стиль имеет больше, чем просто background-color вы можете использовать это:

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