在 react/next.js 中添加深色和浅色主题支持
概述
在本指南中,我们将引导您完成向 react 或 next.js 应用程序添加深色和浅色主题支持的步骤。这种方法将允许用户在主题之间切换,并且 ui 将相应更新。
先决条件
- react 或 next.js 的基础知识。
- 已设置 react 或 next.js 项目。
实施深色和浅色主题的步骤
1.创建主题切换组件
接下来,创建一个允许用户在主题之间切换的组件。该组件将包括一个用于切换主题状态的按钮和一个允许用户选择他们喜欢的主题的菜单。
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 (
toggle dark mode
- handlethemechange('dark')}
classname={theme === 'dark' ? 'active' : ''}
>
dark mode - handlethemechange('light')}
classname={theme === 'light' ? 'active' : ''}
>
light mode
2. 定义特定于主题的 css 变量
在 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;
}