【发布时间】:2021-01-24 03:15:08
【问题描述】:
我有一个复选框,可以将颜色主题更改为深色或浅色。但是我想再添加三个复选框,它们也将是页面的颜色,也就是说,我想要有 4 个复选框,其中第一个将页面颜色更改为黑色,第二个白色,第三个变为绿色,第四个变红
App.js
import React, { useState, useEffect } from "react";
import "./App.css";
import ReactDOM from 'react-dom';
export default function App() {
const [dark, setDark] = useState(getMode);
useEffect(() => {
localStorage.setItem("dark", JSON.stringify(dark));
}, [dark]);
function getMode() {
const savedmode = JSON.parse(localStorage.getItem("dark"));
return savedmode || false;
}
return (
<div className={dark ? "black" : "light"} style={{ height: "100vh" }}>
<nav>
<div className="toggle-container">
<span style={{ color: dark ? "grey" : "yellow" }}>☀︎</span>
<span className="toggle">
<input
checked={dark}
onChange={() => setDark((prevMode) => !prevMode)}
id="checkbox"
className="checkbox"
type="checkbox"
/>
<label htmlFor="checkbox" />
</span>
<span style={{ color: dark ? "slateblue" : "grey" }}>☾</span>
</div>
</nav>
<div style={{ textAlign: "center" }}>
<h1>{dark ? "darkmode" : "lightmode"}</h1>
<p>This is dark mode content</p>
<h1>The darkmode is implemented by reactjs</h1>
</div>
</div>
);
}
App.css
.black {
background-color: black;
color: white;
}
.light {
background-color: blanchedalmond;
color: black;
}
.nav {
background-color: blue;
color: white;
}
.toggle-container {
background-color: blue;
padding: 20px;
display: flex;
justify-content: center;
}
【问题讨论】:
标签: javascript reactjs function local-storage themes