Maison interface Web tutoriel CSS Ajout de la prise en charge des thèmes sombres et clairs dans React/Next.js

Ajout de la prise en charge des thèmes sombres et clairs dans React/Next.js

Sep 03, 2024 pm 06:31 PM

Adding Dark and Light Theme Support in React/Next.js

Ajout de la prise en charge des thèmes sombres et clairs dans React/Next.js

Aperçu

Dans ce guide, nous vous guiderons à travers les étapes pour ajouter la prise en charge des thèmes sombres et clairs à une application React ou Next.js. Cette approche permettra aux utilisateurs de basculer entre les thèmes et l'interface utilisateur sera mise à jour en conséquence.

Conditions préalables

  • Connaissance de base de React ou Next.js.
  • Un projet React ou Next.js mis en place.

Étapes pour implémenter les thèmes sombres et clairs

1.Création d'un composant de bascule de thème

Ensuite, créez un composant qui permet aux utilisateurs de basculer entre les thèmes. Ce composant comprendra un bouton qui bascule l'état du thème et un menu qui permet aux utilisateurs de sélectionner leur thème préféré.

import React, { useState } from 'react';
import { FaMoon, FaSun } from 'react-icons/fa';

function ThemeToggle({ theme, handleThemeChange }) {
  const [menuOpen, setMenuOpen] = useState(false);

  const toggleMenu = () => {
    setMenuOpen(!menuOpen);
  };

  return (
    <li className="m-auto mx-3" role="button">
      <div className="theme-toggle">
        <button className="theme-toggle-btn" onClick={toggleMenu}>
          {theme === 'dark' ? <FaMoon /> : <FaSun />}
        </button>
        {menuOpen && (
          <div className="theme-menu">
            <p className="theme-title">Toggle Dark Mode</p>
            <ul>
              <li
                onClick={() => handleThemeChange('dark')}
                className={theme === 'dark' ? 'active' : ''}
              >
                <FaMoon /> Dark Mode
              </li>
              <li
                onClick={() => handleThemeChange('light')}
                className={theme === 'light' ? 'active' : ''}
              >
                <FaSun /> Light Mode
              </li>
            </ul>
          </div>
        )}
      </div>
    </li>
  );
}

export default ThemeToggle;

2. Définition de variables CSS spécifiques à un thème

Définissez des variables CSS pour les thèmes sombres et clairs dans votre fichier index.css ou App.css. Ces variables contrôleront le style de l'ensemble de l'application en fonction du thème actif.

/* Default Theme Variables */
:root {
  --white-color: #ffff;
  --background-color: black;
  --text-color: #ffff;
  --games-text: #452c88;
  --games-text-2: #60882c;
  --game-bg-card: #252331;
  --card-wrapper-color: #252331;
  --custom-input-bg: #14131b;
  --siderbar-bg: #1a1923;
  --profile-badge-color: #252364;
  --card-header-bg: #032b53;
  --theme-color: #df1b47;
  --table-row-bg-color: #1e1d29;
  --table-row-header-color: #252364;
  --button-bg-color: #252364;
  --dark-light-bg-color: #353940;
}

/* Dark Theme */
body.dark-mode {
  --white-color: #ffff;
  --background-color: black;
  --text-color: #ffff;
  --game-bg-card: #252331;
  --card-wrapper-color: #252331;
  --custom-input-bg: #14131b;
  --siderbar-bg: #1a1923;
  --profile-badge-color: #252364;
  --card-header-bg: #032b53;
  --table-row-bg-color: #1e1d29;
  --table-row-header-color: #252364;
  --button-bg-color: #252364;
  --dark-light-bg-color: #353940;
}

/* Light Theme */
body.light-mode {
  --white-color: #ffff;
  --background-color: rgb(253, 251, 251);
  --text-color: #0f0e0ecc;
  --game-bg-card: #eae8eb;
  --custom-input-bg: #e0e0e0;
  --card-wrapper-color: #e1e0e6;
  --custom-input-bg: #e6e6e6;
  --siderbar-bg: #e5e5e5;
  --profile-badge-color: #e64b4b;
  --card-header-bg: #a6cbf0;
  --table-row-bg-color: #ffffff;
  --table-row-header-color: #f2f4f6;
  --button-bg-color: #df1b47;
  --dark-light-bg-color: #c5c1c1;
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Tutoriel PHP
1525
276
Quelles sont les incohérences courantes du navigateur CSS? Quelles sont les incohérences courantes du navigateur CSS? Jul 26, 2025 am 07:04 AM

Différents navigateurs ont des différences dans l'analyse CSS, ce qui entraîne des effets d'affichage incohérents, y compris principalement la différence de style par défaut, la méthode de calcul du modèle de boîte, le niveau de support Flexbox et la disposition de la grille et le comportement incohérent de certains attributs CSS. 1. Le traitement de style par défaut est incohérent. La solution consiste à utiliser cssreset ou normaliser.css pour unifier le style initial; 2. La méthode de calcul du modèle de boîte de l'ancienne version de IE est différente. Il est recommandé d'utiliser la taille d'une boîte: Border-Box de manière unifiée; 3. Flexbox et Grid fonctionnent différemment dans les cas de bord ou dans les anciennes versions. Plus de tests et utilisent Autoprefixer; 4. Certains comportements d'attribut CSS sont incohérents. Caniuse doit être consulté et rétrogradé.

Quelle est la propriété Accent-Color? Quelle est la propriété Accent-Color? Jul 26, 2025 am 09:25 AM

Accent-Color est un attribut utilisé dans CSS pour personnaliser les couleurs de surbrillance des éléments de formulaire tels que les cases à cocher, les boutons radio et les curseurs; 1. Il modifie directement la couleur par défaut de l'état sélectionné du contrôle de formulaire, tel que la modification de la coche bleue de la case en rouge; 2. Les éléments pris en charge incluent les cases d'entrée de type = "Checkbox", Type = "Radio" et Type = "Range"; 3. L'utilisation de la couleur accent peut éviter les styles personnalisés complexes et les structures DOM supplémentaires et maintenir l'accessibilité native; 4. Il est généralement soutenu par des navigateurs modernes et les anciens navigateurs doivent être rétrogradés; 5. Set Accent-Col

Comment la feuille de style par défaut du navigateur affecte-t-elle le rendu? Comment la feuille de style par défaut du navigateur affecte-t-elle le rendu? Jul 19, 2025 am 02:08 AM

Les styles par défaut du navigateur garantissent la lisibilité de base en appliquant automatiquement les marges, remplissent, les polices et les styles d'éléments de formulaire, mais peuvent provoquer des dispositions de croisement incohérentes. 1. La marge par défaut et le remplissage modifient le flux de mise en page, tel que l'espacement des titres, des paragraphes et des listes; 2. Les paramètres de police par défaut affectent la lisibilité, tels que la taille de la police 16px et la police TimesNewroman; 3. Les éléments de forme sont très différents dans différents navigateurs, donc l'apparence doit être réinitialisée; 4. Certaines balises telles que Strong et EM ont des styles d'accent par défaut et doivent être explicitement écrasés. Des solutions de contournement incluent l'utilisation de Normalize.css, de réinitialisation des styles ou des marges et des remplissages à l'échelle mondiale, tout en personnalisant les polices et les styles de formulaire pour la cohérence.

Comment coiffer la première lettre ou la première ligne d'un paragraphe? Comment coiffer la première lettre ou la première ligne d'un paragraphe? Jul 19, 2025 am 02:58 AM

Pour embellir le début d'un paragraphe pour améliorer l'attrait visuel, une pratique courante consiste à utiliser des pseudo-éléments de CSS ou à styliser manuellement le document. Dans le développement Web, P :: First-Letter peut être utilisé pour définir le premier style de lettre, tel que l'agrandissement, le gras et la décoloration, mais il convient de noter qu'il convient uniquement aux éléments au niveau des blocs; Si vous souhaitez mettre en évidence toute la première ligne, utilisez P :: première ligne pour ajouter des styles; Dans un logiciel de document tel que Word, vous pouvez ajuster manuellement le premier format de lettre ou créer des modèles de style, et InDesign a une fonction "de première saut" intégrée adaptée à la publication et à la conception; Lorsque vous postulez, vous devez prêter attention aux détails, tels que l'évitement des styles complexes affectant la lecture et la compatibilité et la cohérence du format.

Décrire la propriété `` Vertical-Align 'et ses cas d'utilisation typiques Décrire la propriété `` Vertical-Align 'et ses cas d'utilisation typiques Jul 26, 2025 am 07:35 AM

Thevertical-AlignPropertyInSsalignSInLineRable-cellElementsvertical.1.itAdjustSelements like iMageSorforminputSwithIntextlinesususingValues Like-Baseline, Middle, Super, andSub.2

Comment changer la couleur du texte dans CSS? Comment changer la couleur du texte dans CSS? Jul 27, 2025 am 04:25 AM

Pour modifier la couleur du texte dans CSS, vous devez utiliser l'attribut de couleur; 1. Utilisez l'attribut de couleur pour définir la couleur de la couleur de premier plan du texte, en prenant en charge les noms de couleurs (tels que le rouge), les codes hexadécimaux (tels que # FF0000), les valeurs RGB (telles que RVB (255,0,0)), les valeurs HSL (comme HSL (0,100%, 50%)) et RGBA ou HSLA avec transparence (tels que comme le fait de transparence (tels que les 50%) et RGBA ou HSLA avec transparence (tels que celles RGBA (255,0,0,0,5)); 2. Vous pouvez appliquer des couleurs à n'importe quel élément contenant du texte, tel que H1 aux titres H6, paragraphe P, lien A (Remarque les paramètres de couleur de différents états de A: Link, A: Visité, A: Hover, A: Active), Butons, Div, Span, etc.; 3. La plupart

Comment purger le CSS inutilisé? Comment purger le CSS inutilisé? Jul 27, 2025 am 02:47 AM

UseAutomatedToolsLILLPURECCSSORUNCSSTOSCANAnDRemoveUnusedcSSS; 2. IntegratepurgingIntOyourBuildProcessViaWebpack, Vite, Ortailwind’sContentConfiguration; 3.AuditcssagewithChromedevToolscoveragetaforepurgoEToavoidRemovingNededStyles.

Exemple de bascule du mode sombre CSS Exemple de bascule du mode sombre CSS Jul 30, 2025 am 05:28 AM

Tout d'abord, utilisez JavaScript pour obtenir les préférences du système utilisateur et les paramètres de thème stockés localement et initialiser le thème de la page; 1. La structure HTML contient un bouton pour déclencher la commutation du sujet; 2. CSS utilise: Root pour définir des variables de thème brillantes, la classe de mode. Dark définit les variables de thème sombres et applique ces variables via var (); 3. JavaScript détecte préfère-Color-Scheme et lit LocalStorage pour déterminer le thème initial; 4. Communiquez la classe en mode noir sur l'élément HTML lorsque vous cliquez sur le bouton et enregistre l'état actuel vers LocalStorage; 5. Tous les changements de couleur sont accompagnés d'une animation de transition de 0,3 seconde pour améliorer l'utilisateur

See all articles