Maison > Article > interface Web > Ajout de la prise en charge des thèmes sombres et clairs dans React/Next.js
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.
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;
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!