Comment puis-je obtenir le code couleur d’arrière-plan d’un élément?
HTML
jQuery
$(this).css("background-color");
Résultat
rgb(245, 180, 5)
Ce que je veux
#f5b405
Vérifiez l’exemple de lien ci-dessous et cliquez sur le div pour obtenir la valeur de la couleur en hexadécimal.
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(''); }
Consultez l'exemple de travail sur http://jsfiddle.net/DCaQb/
Il y a un peu de piratage pour cela, car le canevas HTML5 est requirejs pour parsingr les valeurs de couleur lorsque certaines propriétés comme fillStyle
et fillStyle
sont définies:
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; }
fonctionne correctement sous Chrome et Firefox
Vous avez la couleur dont vous avez besoin pour le convertir dans le format que vous souhaitez.
Voici un script qui devrait vous aider: http://www.phpied.com/rgb-color-parser-in-javascript/
En fait, s’il n’y a pas de définition de la background-color
d’ background-color
sous certains éléments, Chrome affichera sa background-color
sous la forme rgba(0, 0, 0, 0)
, tandis que les sorties Firefox seront transparent
.
Ma belle solution non standard
HTML
jQuery
$(this).attr("style").replace("background-color:", "");
Résultat
#f5b405