在本指南中,我們將引導您完成為 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中文網其他相關文章!