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

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

HTML

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/

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

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

HTML

 

JQuery

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

результат

 #f5b405 
Давайте будем гением компьютера.