Français

Implémentez le mode sombre sur votre site web grâce à ce guide complet. Découvrez les requêtes média CSS, les bascules JavaScript, les considérations d'accessibilité et les meilleures pratiques pour une expérience utilisateur fluide.

Implémentation du mode sombre : un guide complet avec CSS et JavaScript

Le mode sombre est devenu de plus en plus populaire, offrant une expérience de visualisation plus confortable, en particulier dans les environnements faiblement éclairés. Ce guide offre un aperçu complet de la façon d'implémenter le mode sombre sur votre site web à l'aide de CSS et de JavaScript, garantissant une expérience utilisateur fluide et accessible pour un public mondial.

Pourquoi implémenter le mode sombre ?

Il existe plusieurs raisons impérieuses d'envisager l'implémentation du mode sombre :

Méthodes d'implémentation du mode sombre

Il existe plusieurs approches pour implémenter le mode sombre, chacune ayant ses propres avantages et inconvénients. Nous allons explorer les méthodes les plus courantes :

1. Implémentation du mode sombre avec les requêtes média CSS

La requête média CSS prefers-color-scheme vous permet de détecter le schéma de couleurs préféré de l'utilisateur et d'appliquer différents styles en conséquence. C'est le moyen le plus simple et le plus efficace d'implémenter le mode sombre pour les utilisateurs qui ont déjà défini leurs préférences système.

Exemple de code

Ajoutez le CSS suivant à votre feuille de style :

/* Thème par défaut (clair) */
body {
  background-color: #fff;
  color: #000;
}

/* Thème sombre */
@media (prefers-color-scheme: dark) {
  body {
    background-color: #222;
    color: #fff;
  }
  /* Ajuster les autres éléments si nécessaire */
  h1, h2, h3 {
    color: #ddd;
  }
  a {
    color: #8ab4f8;
  }
}

Explication :

Avantages

Inconvénients

2. Implémentation du mode sombre avec une bascule JavaScript

L'utilisation d'une bascule JavaScript offre aux utilisateurs un commutateur manuel pour contrôler le thème du site web. Cela donne aux utilisateurs plus de contrôle et leur permet de remplacer leurs préférences système. Cette approche est essentielle pour répondre aux besoins des utilisateurs sur divers appareils et plateformes qui ne prennent pas toujours en charge ou n'exposent pas les paramètres du mode sombre à l'échelle du système.

Structure HTML

Tout d'abord, ajoutez un élément de bascule à votre HTML :

<label class="switch">
  <input type="checkbox" id="darkModeToggle">
  <span class="slider round"></span>
</label>

Cela crée un simple interrupteur à bascule à l'aide d'une case à cocher et d'un style CSS personnalisé.

Style CSS (facultatif)

Vous pouvez styliser le commutateur à bascule à l'aide de CSS. Voici un exemple :

.switch {
  position: relative;
  display: inline-block;
  width: 60px;
  height: 34px;
}

.switch input {
  opacity: 0;
  width: 0;
  height: 0;
}

.slider {
  position: absolute;
  cursor: pointer;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-color: #ccc;
  -webkit-transition: .4s;
  transition: .4s;
}

.slider:before {
  position: absolute;
  content: "";
  height: 26px;
  width: 26px;
  left: 4px;
  bottom: 4px;
  background-color: white;
  -webkit-transition: .4s;
  transition: .4s;
}

input:checked + .slider {
  background-color: #2196F3;
}

input:focus + .slider {
  box-shadow: 0 0 1px #2196F3;
}

input:checked + .slider:before {
  -webkit-transform: translateX(26px);
  -ms-transform: translateX(26px);
  transform: translateX(26px);
}

/* Curseurs arrondis */
.slider.round {
  border-radius: 34px;
}

.slider.round:before {
  border-radius: 50%;
}

Code JavaScript

Maintenant, ajoutez le code JavaScript suivant pour gérer la fonctionnalité de bascule :

const darkModeToggle = document.getElementById('darkModeToggle');
const body = document.body;

// Fonction pour activer/désactiver le mode sombre
function toggleDarkMode() {
  body.classList.toggle('dark-mode');

  // Stocker la préférence de l'utilisateur dans localStorage
  if (body.classList.contains('dark-mode')) {
    localStorage.setItem('darkMode', 'enabled');
  } else {
    localStorage.setItem('darkMode', 'disabled');
  }
}

// Vérifier localStorage pour la préférence enregistrée
if (localStorage.getItem('darkMode') === 'enabled') {
  body.classList.add('dark-mode');
  darkModeToggle.checked = true;
}

// Ajouter un écouteur d'événements à la bascule
darkModeToggle.addEventListener('change', toggleDarkMode);

Explication :

Style CSS pour le mode sombre (en utilisant la classe)

Mettez à jour votre CSS pour utiliser la classe dark-mode afin d'appliquer les styles du thème sombre :

/* Thème par défaut (clair) */
body {
  background-color: #fff;
  color: #000;
}

/* Thème sombre */
body.dark-mode {
  background-color: #222;
  color: #fff;
}

body.dark-mode h1, body.dark-mode h2, body.dark-mode h3 {
  color: #ddd;
}

body.dark-mode a {
  color: #8ab4f8;
}

Avantages

Inconvénients

3. Combinaison de requêtes média et de JavaScript

La meilleure approche consiste souvent à combiner les requêtes média CSS et une bascule JavaScript. Cela offre le meilleur des deux mondes : la détection automatique du schéma de couleurs préféré de l'utilisateur, tout en permettant aux utilisateurs de remplacer manuellement la préférence système. Cela s'adresse à un public plus large, y compris ceux qui ne sont peut-être pas conscients ou capables de modifier leurs paramètres de thème à l'échelle du système.

Exemple de code

Utilisez le même HTML et le même CSS que dans l'exemple de bascule JavaScript. Modifiez le JavaScript pour vérifier la préférence système :

const darkModeToggle = document.getElementById('darkModeToggle');
const body = document.body;

// Fonction pour activer/désactiver le mode sombre
function toggleDarkMode() {
  body.classList.toggle('dark-mode');

  // Stocker la préférence de l'utilisateur dans localStorage
  if (body.classList.contains('dark-mode')) {
    localStorage.setItem('darkMode', 'enabled');
  } else {
    localStorage.setItem('darkMode', 'disabled');
  }
}

// Vérifier localStorage pour la préférence enregistrée, puis la préférence système
if (localStorage.getItem('darkMode') === 'enabled') {
  body.classList.add('dark-mode');
  darkModeToggle.checked = true;
} else if (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) {
  body.classList.add('dark-mode');
  darkModeToggle.checked = true;
}

// Ajouter un écouteur d'événements à la bascule
darkModeToggle.addEventListener('change', toggleDarkMode);

Explication :

Avantages

Inconvénients

Considérations d'accessibilité

Lors de l'implémentation du mode sombre, il est essentiel de tenir compte de l'accessibilité pour garantir que votre site web reste utilisable pour tous les utilisateurs. N'oubliez pas que le simple fait d'inverser les couleurs ne garantit pas automatiquement l'accessibilité. Voici quelques considérations clés :

Meilleures pratiques pour l'implémentation du mode sombre

Voici quelques bonnes pratiques à suivre lors de l'implémentation du mode sombre sur votre site web :

Exemple : Variables CSS pour la thématisation

Les variables CSS facilitent le passage d'un thème clair à un thème sombre. Définissez les variables dans la pseudo-classe :root :

:root {
  --bg-color: #fff;
  --text-color: #000;
  --link-color: #007bff;
}

body {
  background-color: var(--bg-color);
  color: var(--text-color);
}

a {
  color: var(--link-color);
}

body.dark-mode {
  --bg-color: #222;
  --text-color: #fff;
  --link-color: #8ab4f8;
}

Maintenant, lorsque la classe dark-mode est ajoutée au body, les variables CSS sont mises à jour et les styles sont automatiquement appliqués.

Conclusion

L'implémentation du mode sombre peut considérablement améliorer l'expérience utilisateur de votre site web, améliorer l'accessibilité et même économiser la batterie. En suivant les techniques et les bonnes pratiques décrites dans ce guide, vous pouvez créer une expérience de mode sombre fluide et agréable pour vos utilisateurs du monde entier.

N'oubliez pas de donner la priorité à l'accessibilité et de tester minutieusement votre implémentation pour vous assurer que votre site web reste utilisable pour tous les utilisateurs, quelles que soient leurs préférences ou leurs capacités visuelles.

En implémentant le mode sombre de manière réfléchie, vous ne vous contentez pas de suivre une tendance, mais vous créez également une expérience web plus inclusive et conviviale pour un public mondial. Ce dévouement à l'expérience utilisateur peut grandement bénéficier aux performances et à l'attrait globaux de votre site web.