Как получить код фона фона для элемента?
HTML
<div style="background-color:#f5b405"></div>
JQuery
$(this).css("background-color");
Результат
rgb(245, 180, 5)
Что я хочу
#f5b405
Как получить код фона фона для элемента?
HTML
<div style="background-color:#f5b405"></div>
JQuery
$(this).css("background-color");
Результат
rgb(245, 180, 5)
Что я хочу
#f5b405
Посмотрите пример ссылки ниже и нажмите на 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/
Там немного взломать, так как для 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
У вас есть цвет, который вам нужен, чтобы преобразовать его в желаемый формат.
Здесь script, который должен выполнить трюк: http://www.phpied.com/rgb-color-parser-in-javascript/
На самом деле, если для некоторого элемента нет определения background-color
, Chrome будет выводить его background-color
как rgba(0, 0, 0, 0)
, а выходы Firefox - transparent
.
Мое красивое нестандартное решение
HTML
<div style="background-color:#f5b405"></div>
JQuery
$(this).attr("style").replace("background-color:", "");
Результат
#f5b405
Добавление на @Newred решение. Если ваш стиль имеет больше, чем просто background-color
вы можете использовать это:
$(this).attr('style').split(';').filter(item => item.startsWith('background-color'))[0].split(":")[1]