嘿!因此,如果您像我一样并且喜欢整个黑暗模式氛围,您可能会考虑将其添加到您的网站中。只需一点 CSS 和 JavaScript 即可轻松设置。我是这样做的。
首先,您需要一个按钮或开关,用户可以单击该按钮或开关在浅色和深色模式之间切换。我在这个例子中使用了一个简单的按钮(如果需要,您可以使用图标):
此按钮将触发切换模式。
接下来,您需要定义浅色模式和深色模式的外观。在 CSS 中,您将设置默认样式(这将是您的浅色模式),然后添加一个覆盖这些样式的深色模式类。
body { background-color: white; color: black; transition: background-color 0.3s, color 0.3s; } .dark-mode { background-color: #121212; color: #ffffff; }
这是发生的事情:
现在是我们让按钮实际执行某些操作的部分。每当单击按钮时,这段 JavaScript 就会切换主体上的 .dark-mode 类。
const toggleButton = document.getElementById('dark-mode-toggle'); const body = document.body; toggleButton.addEventListener('click', () => { body.classList.toggle('dark-mode'); // Save the user's preference in local storage if (body.classList.contains('dark-mode')) { localStorage.setItem('theme', 'dark'); } else { localStorage.setItem('theme', 'light'); } });
这是一个细分:
为了确保网站以用户喜欢的模式加载,您需要在页面加载时检查 localStorage 并相应地设置模式。
window.addEventListener('load', () => { const savedTheme = localStorage.getItem('theme'); if (savedTheme === 'dark') { body.classList.add('dark-mode'); } });
如果您使用 React,该过程非常相似,但您将在组件内处理事情。操作方法如下:
使用 React 的 useState 来管理暗模式状态,并将适当的类应用到您的根元素:
import React, { useState } from 'react'; function App() { const [darkMode, setDarkMode] = useState(false); const toggleDarkMode = () => { setDarkMode(!darkMode); }; return (); } export default App;
在此示例中:
将 .dark-mode 类添加到您的 CSS 中,就像以前一样:
body { background-color: white; color: black; transition: background-color 0.3s, color 0.3s; } .dark-mode { background-color: #121212; color: #ffffff; }
如果您希望主题偏好持续存在,您可以添加这个小调整:
import React, { useState, useEffect } from 'react'; function App() { const [darkMode, setDarkMode] = useState(() => { const savedTheme = localStorage.getItem('theme'); return savedTheme === 'dark'; }); useEffect(() => { localStorage.setItem('theme', darkMode ? 'dark' : 'light'); }, [darkMode]); return (); } export default App;
这是发生的事情:
就是这样!这是一种向 React 应用程序添加暗模式的更简单方法,不会让事情变得过于复杂。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3