Explorer les événements de souris dans le développement web

CSSCSSBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, les étudiants exploreront les événements clavier fondamentaux dans le développement web, en se concentrant sur la création d'interfaces web interactives grâce à des exercices de codage pratiques. Le laboratoire couvre les techniques essentielles de gestion d'événements clavier, y compris les événements click, mouse over, mouse out, mouse down et mouse up, offrant une compréhension complète de la manière de répondre aux interactions de l'utilisateur dans les applications web.

Les participants apprendront à implémenter des écouteurs d'événements, à utiliser le mot clé 'this' et à combiner plusieurs événements clavier pour créer des éléments web dynamiques et réactifs. Par une approche étape par étape, les étudiants acquerront des compétences pratiques dans la gestion d'événements JavaScript, en obtenant des informations sur la création d'expériences web attrayantes et interactives qui améliorent la conception et la fonctionnalité de l'interface utilisateur.

Configurer un projet HTML pour l'événement de clic de souris

Dans cette étape, nous allons créer un projet HTML de base pour explorer les événements de clic de souris dans le développement web. Les événements de souris sont essentiels pour créer des expériences web interactives, permettant aux développeurs de répondre aux interactions de l'utilisateur avec les éléments d'une page web.

Tout d'abord, créons un nouveau répertoire de projet et configurons notre fichier HTML. Ouvrez l'IDE Web et accédez au répertoire ~/projet.

Créez un nouveau fichier appelé mouse-events.html avec le contenu suivant :

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Exemple d'événement de clic de souris</title>
    <style>
      #clickMe {
        padding: 10px;
        background-color: #4caf50;
        color: white;
        border: none;
        cursor: pointer;
      }
    </style>
  </head>
  <body>
    <h1>Démonstration de l'événement de clic de souris</h1>
    <button id="clickMe">Cliquez sur moi!</button>

    <script>
      // Récupérez l'élément bouton
      const button = document.getElementById("clickMe");

      // Ajoutez un écouteur d'événement de clic
      button.addEventListener("click", function () {
        alert("Le bouton a été cliqué!");
      });
    </script>
  </body>
</html>

Analysons les composants clés de ce fichier HTML :

  1. Nous avons créé un bouton simple avec l'ID clickMe
  2. Ajouté quelques styles CSS de base pour styliser le bouton
  3. Inclus une section JavaScript pour ajouter un écouteur d'événement pour les événements de clic
  4. L'écouteur d'événement utilise la méthode addEventListener() pour détecter les clics
  5. Lorsque le bouton est cliqué, un message d'alerte s'affichera

Pour vérifier que le fichier est créé correctement, vous pouvez ouvrir le fichier dans l'IDE Web et vérifier son contenu.

Implémenter les événements mouse over et mouse out

Dans cette étape, nous allons explorer les événements mouse over et mouse out, qui sont essentiels pour créer des interfaces web interactives et réactives. Ces événements vous permettent de détecter lorsque la souris de l'utilisateur entre ou quitte un élément HTML, activant une rétroaction visuelle dynamique.

Ouvrez le fichier mouse-events.html précédent dans l'IDE Web et modifiez-le pour inclure des démonstrations d'événements mouse over et mouse out :

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Événements mouse over et out</title>
    <style>
      .hover-box {
        width: 200px;
        height: 200px;
        background-color: #3498db;
        color: white;
        display: flex;
        justify-content: center;
        align-items: center;
        transition: background-color 0.3s ease;
      }
      .hover-box:hover {
        background-color: #2980b9;
      }
    </style>
  </head>
  <body>
    <h1>Démonstration d'événements mouse over et out</h1>

    <div id="hoverBox" class="hover-box">Survolez-moi!</div>

    <p id="eventLog">Le statut de l'événement apparaîtra ici</p>

    <script>
      const box = document.getElementById("hoverBox");
      const eventLog = document.getElementById("eventLog");

      // Événement mouse over
      box.addEventListener("mouseover", function () {
        this.textContent = "La souris est sur la boîte!";
        eventLog.textContent = "Événement mouse over déclenché";
      });

      // Événement mouse out
      box.addEventListener("mouseout", function () {
        this.textContent = "Survolez-moi!";
        eventLog.textContent = "Événement mouse out déclenché";
      });
    </script>
  </body>
</html>

Points clés sur les événements mouse over et mouse out :

  1. L'événement mouseover est déclenché lorsque la souris entre dans un élément
  2. L'événement mouseout est déclenché lorsque la souris quitte un élément
  3. Nous avons ajouté un changement de texte dynamique et une journalisation d'événements
  4. La CSS est utilisée pour fournir une rétroaction visuelle lors du survol
  5. Le script démontre comment attacher des écouteurs d'événements

Sortie exemple lors du survol :

  • Le texte de la boîte change en "La souris est sur la boîte!"
  • Le journal d'événements affiche "Événement mouse over déclenché"

Sortie exemple lors du retrait de la souris :

  • Le texte de la boîte revient à "Survolez-moi!"
  • Le journal d'événements affiche "Événement mouse out déclenché"

Créer un bouton interactif avec les événements mouse down et mouse up

Dans cette étape, nous allons explorer les événements mouse down et mouse up, qui offrent un contrôle plus fin sur les interactions de l'utilisateur avec les boutons et autres éléments cliquables. Ces événements vous permettent de détecter lorsque un bouton de souris est enfoncé et relâché.

Ouvrez le fichier mouse-events.html précédent dans l'IDE Web et modifiez-le pour inclure des démonstrations d'événements mouse down et mouse up :

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Événements mouse down et up</title>
    <style>
      #pressButton {
        padding: 15px 30px;
        font-size: 16px;
        background-color: #4caf50;
        color: white;
        border: none;
        cursor: pointer;
        transition: background-color 0.2s ease;
      }
      #pressButton:active {
        background-color: #45a049;
      }
      #eventStatus {
        margin-top: 10px;
        font-weight: bold;
      }
    </style>
  </head>
  <body>
    <h1>Démonstration d'événements mouse down et up</h1>

    <button id="pressButton">Appuyez et maintenez-moi</button>
    <div id="eventStatus">Le statut de l'événement apparaîtra ici</div>

    <script>
      const button = document.getElementById("pressButton");
      const eventStatus = document.getElementById("eventStatus");

      // Événement mouse down
      button.addEventListener("mousedown", function () {
        eventStatus.textContent = "Bouton de souris enfoncé!";
        this.style.backgroundColor = "#45a049";
      });

      // Événement mouse up
      button.addEventListener("mouseup", function () {
        eventStatus.textContent = "Bouton de souris relâché!";
        this.style.backgroundColor = "#4CAF50";
      });
    </script>
  </body>
</html>

Points clés sur les événements mouse down et mouse up :

  1. L'événement mousedown est déclenché lorsqu'un bouton de souris est enfoncé sur un élément
  2. L'événement mouseup est déclenché lorsqu'un bouton de souris est relâché sur un élément
  3. Nous avons ajouté une rétroaction visuelle en changeant la couleur du bouton
  4. Une div d'état d'événement montre l'état d'interaction actuel
  5. La pseudo-classe CSS :active fournit une rétroaction visuelle supplémentaire

Interactions exemple :

  • En appuyant sur le bouton : "Bouton de souris enfoncé!" apparaît
  • En relâchant le bouton : "Bouton de souris relâché!" apparaît
  • La couleur du bouton change lorsqu'il est enfoncé et relâché

Comprendre la gestion d'événements avec le mot clé 'this'

Dans cette étape, nous allons explorer le mot clé this dans la gestion d'événements, qui est une fonction puissante en JavaScript qui vous permet de vous référer à l'élément actuel qui a déclenché un événement. Comprendre this est crucial pour créer des expériences web dynamiques et interactives.

Ouvrez le fichier mouse-events.html précédent dans l'IDE Web et modifiez-le pour démontrer l'utilisation de this :

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Comprendre 'this' dans la gestion d'événements</title>
    <style>
      .color-box {
        width: 200px;
        height: 200px;
        margin: 10px;
        display: inline-block;
        cursor: pointer;
        text-align: center;
        line-height: 200px;
        color: white;
        transition: background-color 0.3s ease;
      }
      #box1 {
        background-color: #3498db;
      }
      #box2 {
        background-color: #2ecc71;
      }
      #box3 {
        background-color: #e74c3c;
      }
    </style>
  </head>
  <body>
    <h1>Comprendre 'this' dans la gestion d'événements</h1>

    <div id="box1" class="color-box">Boîte 1</div>
    <div id="box2" class="color-box">Boîte 2</div>
    <div id="box3" class="color-box">Boîte 3</div>

    <p id="selectedBox">Aucune boîte sélectionnée</p>

    <script>
      // Sélectionnez toutes les boîtes de couleur
      const boxes = document.querySelectorAll(".color-box");
      const selectedBoxDisplay = document.getElementById("selectedBox");

      // Ajoutez un événement de clic à chaque boîte en utilisant 'this'
      boxes.forEach((box) => {
        box.addEventListener("click", function () {
          // 'this' se réfère à la boîte spécifique qui a été cliquée
          selectedBoxDisplay.textContent = `Vous avez cliqué sur : ${this.textContent}`;

          // Changez la couleur d'arrière-plan de la boîte cliquée
          this.style.backgroundColor = getRandomColor();
        });
      });

      // Fonction d'aide pour générer une couleur aléatoire
      function getRandomColor() {
        const letters = "0123456789ABCDEF";
        let color = "#";
        for (let i = 0; i < 6; i++) {
          color += letters[Math.floor(Math.random() * 16)];
        }
        return color;
      }
    </script>
  </body>
</html>

Points clés sur this dans la gestion d'événements :

  1. this se réfère à l'élément qui a déclenché l'événement
  2. Dans les fonctions fléchées, this se comporte différemment, donc nous utilisons la syntaxe de fonction classique
  3. Nous pouvons accéder et modifier les propriétés de l'élément spécifique
  4. L'exemple démontre l'utilisation de this pour :
    • Obtenir le contenu textuel de la boîte cliquée
    • Changer la couleur d'arrière-plan de la boîte cliquée

Interactions exemple :

  • Cliquez sur la Boîte 1 pour afficher "Vous avez cliqué sur : Boîte 1"
  • Chaque clic change la couleur d'arrière-plan de la boîte en une couleur aléatoire
  • La boîte sélectionnée est mise à jour dynamiquement

Pratique de la combinaison de plusieurs événements de souris

Dans cette étape, nous allons créer une application de dessin interactive qui combine plusieurs événements de souris pour démontrer comment différents événements peuvent travailler ensemble pour créer une riche expérience utilisateur. Nous allons implémenter un canevas de dessin simple où les utilisateurs peuvent dessiner en cliquant et en traînant la souris.

Créez un nouveau fichier mouse-drawing.html dans le répertoire ~/projet avec le code suivant :

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <title>Canevas de dessin interactif</title>
    <style>
      #drawingCanvas {
        border: 2px solid #000;
        background-color: #f0f0f0;
        cursor: crosshair;
      }
      #colorPicker {
        margin-bottom: 10px;
      }
    </style>
  </head>
  <body>
    <h1>Canevas de dessin interactif</h1>

    <div>
      <label for="colorPicker">Choisissez une couleur :</label>
      <input type="color" id="colorPicker" value="#000000" />

      <button id="clearCanvas">Effacer le canevas</button>
    </div>

    <canvas id="drawingCanvas" width="600" height="400"></canvas>

    <p id="drawingStatus">
      Commencez à dessiner en cliquant et en traînant sur le canevas
    </p>

    <script>
      const canvas = document.getElementById("drawingCanvas");
      const ctx = canvas.getContext("2d");
      const colorPicker = document.getElementById("colorPicker");
      const clearButton = document.getElementById("clearCanvas");
      const drawingStatus = document.getElementById("drawingStatus");

      let isDrawing = false;
      let lastX = 0;
      let lastY = 0;

      // Événement mouse down - commencer à dessiner
      canvas.addEventListener("mousedown", startDrawing);

      // Événement mouse move - dessiner tant que la souris est enfoncée
      canvas.addEventListener("mousemove", draw);

      // Événements mouse up et mouse out - arrêter de dessiner
      canvas.addEventListener("mouseup", stopDrawing);
      canvas.addEventListener("mouseout", stopDrawing);

      // Bouton effacer le canevas
      clearButton.addEventListener("click", clearCanvas);

      function startDrawing(e) {
        isDrawing = true;
        [lastX, lastY] = [e.offsetX, e.offsetY];
        drawingStatus.textContent = "Dessin en cours...";
      }

      function draw(e) {
        if (!isDrawing) return;

        ctx.beginPath();
        ctx.moveTo(lastX, lastY);
        ctx.lineTo(e.offsetX, e.offsetY);
        ctx.strokeStyle = colorPicker.value;
        ctx.lineWidth = 2;
        ctx.lineCap = "round";
        ctx.stroke();

        [lastX, lastY] = [e.offsetX, e.offsetY];
      }

      function stopDrawing() {
        isDrawing = false;
        drawingStatus.textContent = "Dessin arrêté. Commencez à nouveau!";
      }

      function clearCanvas() {
        ctx.clearRect(0, 0, canvas.width, canvas.height);
        drawingStatus.textContent = "Canevas effacé. Commencez à dessiner!";
      }
    </script>
  </body>
</html>

Caractéristiques clés de cette application de dessin interactive :

  1. Combine plusieurs événements de souris :
    • mousedown : Commencer à dessiner
    • mousemove : Continuer à dessiner tant que la souris est enfoncée
    • mouseup et mouseout : Arrêter de dessiner
  2. Sélecteur de couleur permet de changer la couleur de dessin
  3. Bouton effacer le canevas réinitialise le dessin
  4. Messages d'état fournissent une rétroaction à l'utilisateur

Interactions exemple :

  • Cliquez et traînez sur le canevas pour dessiner
  • Changez de couleur à l'aide du sélecteur de couleur
  • Cliquez sur "Effacer le canevas" pour réinitialiser la zone de dessin

Sommaire

Dans ce laboratoire, les participants ont exploré les événements de souris dans le développement web, en se concentrant sur la création d'expériences web interactives grâce à diverses techniques de gestion d'événements. Le laboratoire a commencé par la configuration d'un projet HTML de base avec un bouton cliquable, démontrant comment utiliser addEventListener() pour capturer et répondre à des événements de clic de souris. Les participants ont appris à implémenter des écouteurs d'événements qui déclenchent des actions spécifiques, telles que l'affichage de messages d'alerte lorsqu'on interagit avec des éléments.

Le laboratoire est ensuite passé à la gestion d'événements de souris plus avancée, y compris les événements mouse over, mouse out, mouse down et mouse up. En pratiquant ces techniques, les développeurs ont acquis des connaissances sur la création d'interfaces utilisateur dynamiques et réactives, en comprenant comment utiliser le mot clé 'this' pour le contexte d'événement, et en combinant plusieurs événements de souris pour améliorer l'interactivité web. L'approche pratique a permis aux participants d'appliquer directement les principes de gestion d'événements et de développer des applications web plus attrayantes.