이 가이드에서는 React 또는 Next.js 애플리케이션에 어두운 테마와 밝은 테마 지원을 추가하는 단계를 안내합니다. 이 접근 방식을 사용하면 사용자가 테마 간에 전환할 수 있으며 그에 따라 UI가 업데이트됩니다.
다음으로 사용자가 테마 간에 전환할 수 있는 구성요소를 만듭니다. 이 구성 요소에는 테마 상태를 전환하는 버튼과 사용자가 원하는 테마를 선택할 수 있는 메뉴가 포함됩니다.
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;
index.css 또는 App.css 파일에서 어두운 테마와 밝은 테마 모두에 대한 CSS 변수를 정의하세요. 이러한 변수는 활성 테마를 기반으로 전체 애플리케이션의 스타일을 제어합니다.
/* 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; }
위 내용은 React/Next.js에 어둡고 밝은 테마 지원 추가의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!