formateur informatique

Palette de couleurs Html en Javascript et JQuery

Accueil  >  Technique  >  Javascript  >  Javascript Astuces  >  Palette de couleurs Html en Javascript et JQuery
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Abonner  Youtube    Vidos astuces Instagram
Sujets que vous pourriez aussi aimer :


Palette de couleurs Javascript - JQuery

Toujours grâce à la contribution du JQuery dans le code Javascript, nous allons voir comment construire une palette de couleurs capable d'influer sur l'apparence de la page Web, aux choix de l'internaute.

Palette de couleurs Web en JQuery et Javascript

Dans l'exemple illustré par la capture, l'utilisateur influe sur trois curseurs de trois barres de défilement pour modifier respectivement les composantes de couleurs rouge, vert et bleu. Instantanément, l'arrière-plan de la page Web adopte la couleur hexadécimale ainsi retranscrite et dans le même temps, ces valeurs sont traduites sur la droite dans un calque aux bords arrondis.



Sources Web à télécharger
Pour la mise en place de cette nouvelle astuce Javascript, nous proposons de télécharger des sources offrant une page Html déjà structurée et accompagnée de ses ressources. La décompression fournit le fichier de la page Web. Il est nommé index.htm. Il est accompagné des librairies JQuery dans le sous dossier Js. Ce sont elles qui fournissent les méthodes permettant de transformer de simples calques Html (Div) en contrôles fonctionnels, comme des barres de défilement pour une palette de couleurs. Mais il est aussi accompagné de styles CSS dans le sous dossier Css. Et parmi ces styles, certains sont directement associés aux méthodes JQuery que nous appliquerons pour transformer ces contrôles Web. Il est important de comprendre que ces ressources sont livrées telles quelles sur la toile. Il n'y a plus qu'à les réceptionner et à les déclarer en référence de la page Html pour les exploiter.

Structure Html de la page Web
Nous l'avons annoncé, la page Html est déjà amorcée et nous proposons de le constater.
  • A la racine du dossier de décompression, double cliquer sur le fichier index.htm,
Il s'affiche ainsi dans le navigateur Web par défaut. Le moins que l'on puisse dire est que la présentation apparaît dépouillée. Les barres de défilement des trois composantes de couleur ne sont pas présentes. Certes un calque aux bords arrondis se suggère. C'est lui qui doit résumer les composantes de couleurs construites dans la version RVB et dans la version hexadécimale. Mais nous allons le voir, à quelque chose prêt, ces contrôles existent déjà.

Page Html sans le contrôle JQuery de palette de couleurs

Ils sont en attente de transformation par le code JQuery.
  • A la racine du dossier de décompression, cliquer droit sur le fichier index.htm,
  • Dans le menu contextuel, choisir de l'ouvrir avec un éditeur comme le Notepad ++,
Tout d'abord et comme vous pouvez le voir, les références aux feuilles de styles CSS et aux librairies JQuery sont annoncées en entête de code Html, soit dans la section Head de la page :

...
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="css/mes-styles.css">
<link rel="stylesheet" href="css/les-styles.css">
<script src="js/jquery-1.12.4.js"></script>
<script src="js/jquery-ui.js"></script>

</head>
<body>
...


Plus bas dans le code, se situe un calque d'identifiant auCentre. C'est lui qui abrite la construction Html qui nous intéresse :

...
<div id="contenu">
<!--
Implémentation
-->
<div id="auCentre">
<div id="rouge"></div>
<div id="vert"></div>
<div id="bleu"></div>

<div id="msg"></div>

</div>
</div>
...


Nous y trouvons quatre calques (balises Div). Les trois premiers doivent être transformés par le JQuery en barres de défilement pour représenter les composantes de couleurs rouge, vert et bleu. Ces couleurs seront déclenchées par l'application de la méthode JQuery slider. Elles sont régies par des styles inscrits dans le fichier les-styles.css et associés à cette méthode. Le quatrième calque (msg) est plus classique. C'est lui qui doit résumer la situation lorsqu'un curseur de couleur est glissé ou qu'une barre de défilement est cliquée pour faire varier une composante. Il doit livrer le code couleur en version RVB et en version hexadécimale.

Barres de défilement de couleurs
Pour débuter la construction de cette palette de couleurs, la première mission consiste à transformer ces éléments Html en contrôles JQuery et plus spécifiquement en barres de défilement colorées.
  • En bas de la page Html, dans la section de script, ajouter les instructions JQuery suivantes :
...
<script type="text/javascript" language="javascript">
$("#rouge, #vert, #bleu").slider({
orientation: "horizontal",
range: "min",
max: 255,
value: 127,
slide: "",
change: ""
});

</script>
...


Ce code n'est pas encapsulé dans une fonction. Donc il est destiné à se déclencher au chargement de la page Web. Grâce à l'alias du dollar, le code JQuery prend possession à la fois des calques nommés rouge, vert et bleu. L'énumération des objets est l'une des facilités permises par le JQuery pour leur appliquer ensemble la méthode JQuery slider. C'est elle, épaulée par les styles CSS existants qui permet de transformer ces éléments en contrôles JQuery, plus précisément en barres de défilement. Il faut néanmoins veiller à bien renseigner ses arguments. Il s'agit de l'orientation en premier paramètre ou encore du comportement en second. Avec la valeur Min pour le paramètre range, la couleur se répand du début jusqu'au curseur. Avec la valeur Max, ce serait l'inverse, donc en partant de la fin. Ensuite, avec l'argument Max, nous définissons l'incrément le plus grand pour chaque barre. Avec le paramètre suivant, nous réglons pour chacune la valeur de départ, arbitrairement à 127. Enfin, les deux derniers paramètres ne sont pas encore implémentés. Ils concernent deux comportements à gérer au glissement du curseur ou au changement de valeur au clic sur la barre. Il s'agira de faire varier la couleur de l'arrière-plan en conséquence et d'en rendre compte textuellement dans le calque d'identifiant msg.
  • Enregistrer les modifications (CTRL + S) et revenir sur le navigateur Web (ALT + Tab),
  • Dès lors, rafraîchir la page avec la touche F5 du clavier,
Barres de défilement JQuery pour créer une palette de couleurs sur une page Web

Comme vous pouvez le voir, notre palette de couleurs prend déjà forme. Les barres de défilement sont cliquables. Chaque curseur peut aussi se déplacer par cliquer-glisser. Mais à ce stade bien entendu, aucune incidence n'est encore à observer sur la page Web.

Les valeurs ainsi générées par la combinaison des positions des curseurs sur les barres de défilement, doivent être passées à une fonction. Cette fonction doit se charger de transcrire ces composantes en code hexadécimal. Ce code hexadécimal doit être appliqué à l'attribut CSS background-color du calque conteneur d'identifiant contenu.

Cette fonction, nous la créerons après l'avoir appelée. Elle doit être sollicitée lorsqu'un curseur est glissé, lorsqu'une barre de défilement est cliquée ou encore au chargement de la page tout simplement, puisque des positions sont définies par défaut pour chacun des trois curseurs. Cette fonction, nous choisissons de l'appeler actualiserInfos.
  • Adapter le code précédent avec les trois appels comme suit :
...
<script type="text/javascript" language="javascript">
$("#rouge, #vert, #bleu").slider({
orientation: "horizontal",
range: "min",
max: 255,
value: 127,
slide: actualiserInfos,
change: actualiserInfos
});
actualiserInfos();
</script>
...


Aussi étonnant que celui puisse paraître, si vous réactualisez la page Web à ce stade, les trois barres de défilement disparaissent. Pourtant la raison est toute simple. Une erreur Javascript majeure est générée avortant la suite du traitement. Une fonction est appelée au chargement de la page mais celle-ci est inconnue.



Les composantes de couleurs RVB
La fonction actualiserInfos a pour mission de récolter les valeurs des barres de défilement. Nous connaîtrons ainsi les composantes de couleurs. Et pour cela, il suffit de passer la donnée value en paramètre de la méthode slider appliquée sur chaque calque Html.
  • A la suite dans le script, créer la fonction actualiserInfos comme suit :
...
function actualiserInfos() {
var rouge = $("#rouge").slider("value"),
vert = $("#vert").slider("value"),
bleu = $("#bleu").slider("value"),
hexa = "";
$("#contenu").css("background-color", "#" + hexa);
$("#msg").html("Les composantes RVB de la couleur sont : <strong>" + rouge + "," + vert + "," + bleu + "</strong><br />En valeur héxadécimale pour le Web :<strong>" + hexa + "</strong>");
}
...


Le JQuery permet l'énumération des variables à affecter grâce à la virgule. Nous récupérons donc la valeur de chaque couleur dans ces variables que nous nommons arbitrairement mais explicitement rouge, vert et bleu. Il n'y a aucun risque d'ambiguïté avec les éléments Html du même nom qui eux ne sont justement pas des variables. La variable hexa est laissée de côté. Elle devra fournir le code hexadécimal de la couleur par appel d'une fonction que nous créerons. Ensuite, dans le calque d'identifiant msg, grâce à la méthode html, nous inscrivons les informations mises en forme restituant le code couleur RVB. Nous aurions pu utiliser la méthode JQuery text. Mais dans ces conditions, les subtilités de format comme le gras (<strong>) et le saut de ligne (<br />) n'auraient pas été permises. Concernant le code hexadécimal qui n'est pas encore prêt, constatez que nous exploitons la méthode JQuery css sur l'élément Html en réglant son attribut background-color afin d'influer sur la couleur de fond du calque conteneur (contenu).
  • Enregistrer les modifications (CTRL + S) et basculer sur le navigateur Web (ALT + Tab),
  • Puis, rafraîchir la page avec la touche F5 du clavier,
  • Dès lors, déplacer quelques curseurs par cliquer-glisser ou clics sur les barres de défilement,
Connaître les composantes de couleurs RVB de la palette sur une page Html

Comme vous pouvez le voir, à défaut d'influer sur la couleur de fond pour l'instant, à chaque variation, lescomposantes RVB de la couleur sont restituées dans le calque aux bords arrondis, situé sur la droite.

Convertir une couleur RVB en code hexadécimal
La conversion des composantes numériques d'une couleur RVB est relativement simple, à plus forte raison que le Javascript propose une méthode de transcription. Elle se nomme toString.
  • Après la fonction actualiserInfos, créer la fonction Javascript RVBenHexa comme suit :
function RVBenHexa(r, v, b) {
var hexa = [
r.toString(16),
v.toString(16),
b.toString(16)
];
return hexa.join("").toUpperCase();
}


Elle attend donc trois paramètres. Il s'agit des trois composantes de couleur. Nous créons un tableau de variables nommé hexa sur la base de ces trois composantes transmises et aussitôt transcrites dans leurs équivalents textuels. Dès lors, nous exploitons la méthode Javascript join. Avec le paramètre des doubles côtes (""), les valeurs de ce tableau sont effectivement assemblées côte à côte pour reproduire le code hexadécimal qui est rendu à l'appelant (return) en majuscules grâce à la méthode toUpperCase.

Pour être exploitée, cette fonction RVBenHexa doit être appelée dans la fonction actualiserInfos pour affecter la variable hexa. C'est elle qui est effectivement utilisée pour appliquer ce code de couleur à l'arrière-plan du calque conteneur.
  • Dans la fonction actualiserInfos, adapter l'affectation de la variable hexa comme suit :
function actualiserInfos() {
var rouge = $("#rouge").slider("value"),
vert = $("#vert").slider("value"),
bleu = $("#bleu").slider("value"),
hexa = RVBenHexa(rouge, vert, bleu);
$("#contenu").css("background-color", "#" + hexa);
$("#msg").html("Les composantes RVB de la couleur sont : <strong>" + rouge + "," + vert + "," + bleu + "</strong><br />En valeur héxadécimale pour le Web : <strong>"+ hexa + "</strong>");
}
  • Enregistrer les modifications et basculer sur le navigateur Web,
  • Actualiser la page Html avec la touche F5 du clavier,
  • Puis, déplacer quelques curseurs de barres de défilement,
Modifier les couleurs de la page Internet grâce à un palette JQuery

Comme vous pouvez le voir, grâce à cette affectation récoltant les valeurs transcrites par la fonction RVBenHexa, en même temps que les codes de couleurs sont livrés dans le calque aux coins arrondis, l'arrière-plan du calque parent adopte la couleur correspondante.



Parcourir tous les caractères d'une chaîne
Cependant, une anomalie assez discrète existe encore. Vous pouvez la déceler en tentant de réaliser de multiples échantillonnages de couleurs. Parfois, l'arrière-plan ne répond plus convenablement. La raison est simple. Le code hexadécimal de couleur n'est plus composé de six caractères. Dans ces conditions, la couleur n'est pas comprise. Ce phénomène s'invite lorsque la transcription de l'une des composantes RVB conduit à un seul caractère. Dans ces conditions, le code doit être comblé à l'aide d'un zéro en préfixe. C'est en quelque sorte une boucle For Each que nous allons exploiter pour parcourir tous les éléments du tableau des composantes de couleurs transcrites.
  • Dans la fonction RVBenHexa, ajouter la boucle For Each comme suit :
function RVBenHexa(r, v, b) {
var hexa = [
r.toString(16),
v.toString(16),
b.toString(16)
];

$.each(hexa, function(nr, val)
{
if (val.length === 1)
{
hexa[nr] = "0" + val;
}
});


return hexa.join("").toUpperCase();
}


La boucle For Each passe en revue chaque élément du tableau hexa passé en premier paramètre de la méthode. Les actions sont conduites par une fonction déclarée en second argument. Elle est elle aussi signée avec deux paramètres. Le premier correspond à l'élément du tableau tandis que le second correspond à sa valeur. Si la longueur de celle-ci (val.length=== 1) vaut un caractère, nous la complétons avec un zéro en préfixe pour que le code transcrit soit bien constitué de six éléments.

Si vous enregistrez les modifications, que vous actualisez la page Web et que vous agissez sur les curseurs de la palette de couleurs, rien ne change a priori. Pourtant, les quelques anomalies que vous auriez pu déceler sont cette fois corrigées. Toutes les positions, donc toutes les couleurs sont parfaitement interprétées.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn