12. Développement Web - TP N°12





Résultat attendu :

Résultat TP12
index.html

Notez que la police d'affichage
a été modifiée en Verdana





12.1. Objectif

On désire ajouter sur la page index.html un menu situé sur la gauche du viewport (fenêtre) ainsi qu'un bouton qui permet de modifier la couleur de fond du header.

Pour cela on va utiliser XHTML, CSS ainsi qu'un peu de Javascript qui est un langage de script destiné à dynamiser les pages web, c'est à dire à modifier le contenu du document sans recharger la page. Pour cela, Javasript agit sur le DOM (Document Object Model) qui est la représentation en mémoire d'une page HTML.

12.2. Utiliser Javascript

La version de base de Javascript pour manipuler le DOM est très rudimentaire. Afin de simplifier son utilisation des frameworks ont été créés, notamment JQuery qui est très populaire.

Pour inclure JQuery dans sa page web, on peut installer JQuery en local dans un des répertoires de son site web ou alors faire référence à JQuery au travers d'un CDN (Content Delivery Network) qui est un réseau d'ordinateurs qui coopèrent pour mettre à disposition des utilisateurs des ressources (fichiers).

L'intérêt d'un CDN et qu'il possède généralement toutes les versions d'un framework et qu'il n'est pas nécessaire d'installer le framework en local.

Dans la partie head de votre document, insérez la ligne suivante :

<script src="https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.min.js"></script>    

12.3. Menu

12.3.1. Partie HTML

Dans la partie body ajouter un élément aside et lui donner un id de valeur web_menu_button.

A l'intérieur des balises aside ajouter une liste de type ul et lui donner un id de valeur web_menu.

Puis à l'intérieur de ul, créez trois éléments de liste de la forme :

<li><a href="index.html">accueil</a></li>
<li><a href="mon_cv.html">cv</a></li>
<li><a href="mes_resultats.html">résultats</a></li>

Enfin, sauvegardez l'image suivante dans un sous-répertoire img de votre site web sous le nom menu.png :

menu

12.3.2. Partie CSS

Définir un style pour web_menu_button :

Définir pour la balise ul de web_menu_button avec les propriétés suivantes :

Attribuer à l'enchaînement de balises ul li de web_menu_button les propriétés suivantes :

Attribuer à l'enchaînement de balises ul li a de web_menu_button les propriétés suivantes :

Enfin pour l'enchaînement de balises ul li a:hover (lorsque la souris est sur le lien dans l'élément de la liste) de web_menu_button on attribue les propriétés suivantes :

12.3.3. Partie Javascript

Après avoir introduit JQuery, créez une nouvelle partie script qui contient le code suivant toujours dans la partie head du document HTML :

  1. $(document).ready(function () {
  2.     $("#web_menu").hide();
  3.     $("#web_menu_button").click(function () { $("#web_menu").toggle(); });
  4. });

Ce code permet de définir une fonction (function () {) à l'intérieur d'une fonction ready qui sera exécutée après chargement du document.

La première ligne de la fonction cache l'élément d'identifiant (id) web_menu c'est à dire la liste ul à l'intérieur de la balise aside.

La seconde ligne indique que si on clique sur l'élément d'identifiant web_menu_button (et donc l'image menu.png), alors on affichera la liste web_menu, ou si elle était déjà affichée, on la cachera.

Notez que la fonction \$(...) a été définie par JQuery afin d'accéder aux éléments du DOM, et notamment il faut ajouter un '#' pour faire référence aux éléments dotés d'un identifiant.

12.4. Bouton de changement de couleur

12.4.1. Partie HTML

Dans la section main créer un bouton (button) :

12.4.2. Partie CSS

Modifiez le style du bouton comme il vous plaira.

12.4.3. Partie Javascript

Ajoutez le code suivant dans la fonction ready :

  1. function random_color() {
  2.     var letters = '0123456789ABCDEF';
  3.     var color = '#';
  4.     for (var i = 0; i < 6; i++) {
  5.         color += letters[Math.floor(Math.random() * 16)];
  6.     }
  7.     return color;
  8. }
  9.  
  10. $(document).ready(function () {
  11.     ...
  12.    
  13.     $("#change_color_button").click(function () {
  14.         $("header").css("background-color", random_color());
  15.     });
  16. });

Le code précédent, indique que si on clique sur le bouton d'identifiant change_color_button, on modifiera la propriété background-color de la balise header en appelant la fonction random_color().

12.5. Bouton du menu centré verticalement

Modifiez le positionnement du web_menu_button dans le fichier CSS afin de positionner le bouton menu.png sur le bord gauche mais au milieu de l'axe vertical. On utilisera calc.

Vérifiez, en redimensionnant la fênetre, que le bouton reste bien centré au niveau du viewport.