Couleur du texte en fonction d'une variable [Résolu/Fermé]

Signaler
Messages postés
5
Date d'inscription
samedi 27 avril 2013
Statut
Membre
Dernière intervention
1 septembre 2013
-
Messages postés
487
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
23 février 2021
-
Salut à tous ;)
Alors voilà j'ai une question à propos de PHP (peut être aussi de HTML/CSS), elle est un peu compliquée à comprendre j'imagine ^^

Imaginons que sur un site, je dois afficher une valeur en chiffres (avec un echo), qui varie selon divers paramètres. Cette valeur peut se situer entre 0 et 100 (par exemple)
Ce que je cherche à faire, c'est faire en sorte que la couleur de la valeur affichée sur la page change en fonction de la variable elle-même. Par exemple :

- si la variable est "0", elle devra s'afficher en rouge
- si la variable est "50", elle devra s'afficher en jaune
- si la variable est "65", elle devra s'afficher en vert-jaune
- si la variable est "100", elle devra s'afficher en vert

Mais il faudrait que ce soit pareil pour chaque valeur, qu'il y ait un "dégradé" selon la valeur en fait (je sais, c'est peut-être pas très clair...)
Une image peut être mieux j'imagine : http://image.noelshack.com/fichiers/2013/35/1377966593-valeur.png
Il faudrait peut être créer une condition pour chacune des 100 valeurs possibles (de 0 à 100), mais ce serait fastidieux... et imaginez qu'il y ait 10000 cas possibles... :o

Ce que j'ai pensé à faire, c'est charger une image d'un dégradé en CSS (comme ci-dessus), prendre une couleur à un certain endroit sur la barre (à l'aide de la valeur, qui pourrait se convertir en % ou en px), et ensuite la récupérer pour la mettre sur le texte. Mais je ne vois pas trop comment mettre en oeuvre ça...

Voilà, donc si vous avez un truc, je vous remercie d'avance :)

2 réponses

Messages postés
5
Date d'inscription
samedi 27 avril 2013
Statut
Membre
Dernière intervention
1 septembre 2013
1
Oui je savais pour les couleurs en HTML mais je ne voyais pas trop comment faire ce genre de truc.
C'est précisément ce que je cherchais, merci :D
Messages postés
487
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
23 février 2021
109
Alors, tu peux cocher le sujet comme "Résolu" :o)
Bye.
Messages postés
487
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
23 février 2021
109
Bonsoir,

Les couleurs utilisables en HTML sont au format #RRVVBB (rouge, vert, bleu ; valeurs exprimées en hexadécimal)
#FF0000 = rouge
#00FF00 = vert
#0000FF = bleu
#FFFF00 = jaune (rouge + vert)

Pour l'instant, ignorons le bleu qui ne nous sert pas.
Pour passer du rouge au vert en passant par le jaune, ce serait :

Format     :  RRVV      RRVV      RRVV
Valeurs hex:  FF00  ->  FFFF  ->  00FF
               0%        50%      100%
Couleurs   :  Rouge     Jaune     Vert

- pour une valeur comprise entre 0 et 50% la couleur verte doit croître de 00 à FF (0 à 255) soit sur une plage de 255. 1% = 255/50
- pour une valeur comprise entre 50 et 100% la couleur rouge doit décroître de FF à 00 (255 à 0) soit une plage de 255. 1% = 255/50

<html>
<head>
<title>Couleurs</title>
</head>
<body bgcolor="#000000">
<?php
function couleur($valeur) {
	$point = floor(255/50);
	// Si hors limites, retour en bleu (pour tester)
	if($valeur<0 || $valeur>100) { return '#0000FF'; } 
	switch($valeur) {
		case 0  : return '#FF0000'; break; //   0 = rouge
		case 50 : return '#FFFF00'; break; //  50 = jaune
		case 100: return '#00FF00'; break; // 100 = vert
		default : if($valeur<50) { return '#FF'.str_pad(dechex($valeur*$point),2,'0',STR_PAD_LEFT).'00'; }
		          if($valeur>50) { return '#'.str_pad(dechex(255-floor(($valeur-50)*$point)),2,'0',STR_PAD_LEFT).'FF00'; }
	}
}

// Vérification de -2 à 102 inclus
for($n=-2; $n<=102; $n++) {
	$couleur = couleur($n);
	echo "<font color='$couleur'><b>Ceci est la ligne numéro $n (".strtoupper($couleur).")</b></font><br/>\n";
}
?>
</body>
</html>

ça te convient ?