75 votes

Comment obtenir le code de la couleur de fond d'un élément en hexadécimal ?

Comment obtenir le code de la couleur d'arrière-plan d'un élément ?

console.log($(".div").css("background-color"));

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="div" style="background-color: #f5b405"></div>

Ce que je veux

#f5b405

1 votes

Que voulez-vous faire de cette valeur ?

0 votes

Je veux animer la couleur de fond - $(this).animate({ backgroundColor: '#f5b405' }, 'fast');

2 votes

Mais je viens de découvrir que je peux utiliser le code rgb pour animer la couleur de fond aussi ! lol

105voto

Hussein Points 23042

Vérifiez le lien d'exemple 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);
  console.log(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('');
}

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class='div' style='background-color: #f5b405'>Click me!</div>

Consultez l'exemple de travail à http://jsfiddle.net/DCaQb/

5 votes

Parfois $(this).css('backgroundColor') renvoie à rgba(n, n, n, n) .

2 votes

J'ai joué un peu avec votre fonction pour automatiser la modernisation du design et autres... Exemple de scénario d'utilisation jsfiddle.net/DCaQb/625 - Ce n'est pas parfait, mais cela peut aider quelqu'un, alors je le mets en lien ici pour référence.

3 votes

Merci pour cet exemple de code. Il faudrait peut-être réécrire la fonction hexc comme une vraie fonction qui renvoie la chaîne de caractères au lieu de définir une variable globale.

11voto

Nathan Ryan Points 5623

Il y a une petite astuce pour cela, puisque le canevas HTML5 doit analyser les valeurs de couleur lorsque certaines propriétés telles que strokeStyle y fillStyle sont fixés :

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

0 votes

Je crois que celle-ci est la meilleure approche pour les nouveaux navigateurs html5 :)

9voto

coderz Points 40
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

5voto

generalhenry Points 9763

Vous avez la couleur, il vous suffit de la convertir dans le format que vous souhaitez.

Voici un script qui devrait faire l'affaire : http://www.phpied.com/rgb-color-parser-in-javascript/

5voto

coderz Points 40

En fait, s'il n'y a pas de définition de background-color sous un élément, Chrome affichera son background-color como rgba(0, 0, 0, 0) tandis que les sorties de Firefox sont transparent .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X