{}const=>[]async()letfn</>var
WebJSPratique

Comment créer un slider en JavaScript pur : guide étape par étape

Apprenez à créer un slider en JavaScript pur sans utiliser de bibliothèques. Guide étape par étape avec exemples et explication des étapes clés.

К

Kodik

Auteur

4 min de lecture

Bonjour ! 👋 Aujourd'hui, nous allons voir comment créer un slider d'images simple mais fonctionnel en JavaScript pur. Nous n'utiliserons pas de bibliothèques tierces afin que vous puissiez mieux comprendre le fonctionnement de chaque élément du slider et comment il peut être amélioré.

Vous pouvez voir le slider fini ici : https://coursme.github.io/02-slider-js/

Étape 1. Préparation de la structure HTML

Tout d'abord, nous devons créer une structure HTML pour le slider. Nous utiliserons l'élément <div> pour envelopper les diapositives et plusieurs images qui basculeront.

Modèle HTML :

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Simple Image Slider</title>
  <style>
    .slider {
      width: 500px;
      height: 300px;
      overflow: hidden;
      position: relative;
    }
    
    .slides {
      display: flex;
      transition: transform 0.5s ease-in-out;
    }
    
    .slide {
      min-width: 100%;
      box-sizing: border-box;
    }
    
    img {
      width: 100%;
      height: 100%;
    }
    
    .controls {
      position: absolute;
      top: 50%;
      width: 100%;
      display: flex;
      justify-content: space-between;
      transform: translateY(-50%);
    }
    
    .control {
      background-color: rgba(0, 0, 0, 0.5);
      color: white;
      border: none;
      font-size: 18px;
      cursor: pointer;
      padding: 10px;
    }
  </style>
</head>
<body>
  <h1>Слайдер изображений</h1>

  <div class="slider">
    <div class="slides">
        <div class="slide"><img src="https://placehold.co/500x300?text=Slide+1" alt="Slide 1"></div>
        <div class="slide"><img src="https://placehold.co/500x300?text=Slide+2" alt="Slide 2"></div>
        <div class="slide"><img src="https://placehold.co/500x300?text=Slide+3" alt="Slide 3"></div>
    <div class="controls">
      <button class="control" id="prevBtn">&lt;</button>
      <button class="control" id="nextBtn">&gt;</button>
    </div>
  </div>

  <script src="script.js"></script>
</body>
</html>

📋 Explication:

  • .slider : un wrapper pour les diapositives qui définit des dimensions fixes et masque tout ce qui dépasse (overflow: hidden).

  • .slides : Conteneur pour toutes les diapositives, qui se déplacera vers la gauche ou la droite pour changer les images.

  • .slide : Chaque diapositive individuelle. Nous lui donnons une largeur de 100 % pour qu'elle occupe toute la zone visible.

  • Boutons de commande: Ce sont les boutons « avant » et « arrière » qui feront défiler les diapositives.


Étape 2. Ajout de la logique pour faire défiler les diapositives

Passons maintenant à la logique principale : changer de diapositives en cliquant sur les boutons. Nous devons suivre la diapositive actuelle et déplacer le conteneur .slides à l'aide de la propriété CSS transform.

Réalisation dans script.js :

const slides = document.querySelector('.slides');
const slide = document.querySelectorAll('.slide');
const prevBtn = document.getElementById('prevBtn');
const nextBtn = document.getElementById('nextBtn');

let currentIndex = 0;
const totalSlides = slide.length;

function updateSliderPosition() {
  slides.style.transform = `translateX(-${currentIndex * 100}%)`;
}

nextBtn.addEventListener('click', () => {
  if (currentIndex < totalSlides - 1) {
    currentIndex++;
  } else {
    currentIndex = 0; // Retour à la première diapositive
  }
  updateSliderPosition();
});

prevBtn.addEventListener('click', () => {
  if (currentIndex > 0) {
    currentIndex--;
  } else {
    currentIndex = totalSlides - 1; // Aller à la dernière diapositive
  }
  updateSliderPosition();
});

🔨 Comment ça marche:

  • translateX() : Nous utilisons cette propriété pour déplacer le conteneur de diapositives vers la gauche ou la droite en fonction de l'index de la diapositive actuelle.

  • Logique des boutons: Chaque bouton augmente ou diminue l'index de la diapositive, puis la fonction updateSliderPosition() est appelée, qui met à jour la position du conteneur.


Étape 3. Ajout du changement automatique de diapositives

Pour rendre notre slider plus pratique, nous allons ajouter une fonction de changement automatique des diapositives à intervalles réguliers. Cela créera un effet de galerie sans fin.

Ajoutons la commutation automatique :

let autoSlideInterval = setInterval(() => {
  if (currentIndex < totalSlides - 1) {
    currentIndex++;
  } else {
    currentIndex = 0;
  }
  updateSliderPosition();
}, 3000); // Changement de diapositive toutes les 3 secondes

// Arrêt de la commutation automatique lors de l'interaction avec les boutons
nextBtn.addEventListener('click', () => {
  clearInterval(autoSlideInterval);
  autoSlideInterval = setInterval(() => {
    if (currentIndex < totalSlides - 1) {
      currentIndex++;
    } else {
      currentIndex = 0;
    }
    updateSliderPosition();
  }, 3000);
});

prevBtn.addEventListener('click', () => {
  clearInterval(autoSlideInterval);
  autoSlideInterval = setInterval(() => {
    if (currentIndex < totalSlides - 1) {
      currentIndex++;
    } else {
      currentIndex = 0;
    }
    updateSliderPosition();
  }, 3000);
});

🕒 Description:

  • Nous utilisons la fonction setInterval() pour faire défiler automatiquement la diapositive toutes les 3 secondes.

  • L'interaction avec les boutons (avant / arrière) suspend la commutation automatique, mais la relance ensuite pour que le curseur continue à fonctionner automatiquement.


Étape 4. Finalisation et test

Maintenant, votre slider est entièrement fonctionnel ! Vous pouvez faire défiler les diapositives manuellement à l'aide des boutons ou laisser le slider changer automatiquement les images toutes les quelques secondes.


Conclusion

Créer un slider en JavaScript pur est un excellent moyen de s'entraîner à manipuler le DOM et à travailler avec CSS. Un tel slider peut être facilement étendu en ajoutant, par exemple, des animations, des effets de fondu ou une navigation à l'aide de points indicateurs. 🚀

Si vous avez des questions ou si vous souhaitez ajouter de nouvelles fonctionnalités au slider, je suis toujours heureux de vous aider ! 😄

Référentiel avec le code final : https://github.com/Coursme/02-slider-js

🎯Arrête de reporter

Tu as aimé l'article ?
Place à la pratique !

Avec Kodik, tu ne lis pas seulement — tu codes immédiatement. Théorie + pratique = vraies compétences.

Pratique instantanée
🧠L'IA explique le code
🏆Certificat

Sans inscription • Sans carte