Dark Mode Example
创作时间:
作者:
@小白创作中心
Dark Mode Example
引用
CSDN
1.
https://blog.csdn.net/weixin_61281255/article/details/139151586
暗黑模式(Dark Mode)是现代网页设计中的一个重要功能,它不仅能够提升用户的视觉体验,还能在低光环境下减少眼睛疲劳。本文将通过两个具体的代码示例,详细介绍如何使用CSS和JavaScript实现网页的暗黑模式切换功能。
暗黑模式
代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dark Mode Example</title>
<style>
body {
background-color: #ffffff;
color: #000000;
transition: background-color 0.3s, color 0.3s;
}
body.dark-mode {
background-color: #121212;
color: #ffffff;
}
</style>
</head>
<body>
<h1>Hello, World!</h1>
<button id="toggle-theme">Toggle Theme</button>
<script>
const toggleButton = document.getElementById('toggle-theme');
toggleButton.addEventListener('click', () => {
document.body.classList.toggle('dark-mode');
const isDarkMode = document.body.classList.contains('dark-mode');
localStorage.setItem('dark-mode', isDarkMode);
});
// Load the saved theme from localStorage
const savedTheme = localStorage.getItem('dark-mode');
if (savedTheme === 'true') {
document.body.classList.add('dark-mode');
}
</script>
</body>
</html>
通过JavaScript来动态切换暗黑模式和普通模式。使用localStorage保存用户的选择,以便用户刷新页面或重新访问时仍然保持其选择。
代码二
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dark Mode Example</title>
<style>
:root {
--background-color: #ffffff;
--text-color: #000000;
}
[data-theme="dark"] {
--background-color: #121212;
--text-color: #ffffff;
}
body {
background-color: var(--background-color);
color: var(--text-color);
transition: background-color 0.3s, color 0.3s;
}
</style>
</head>
<body>
<h1>Hello, World!</h1>
<button id="toggle-theme">Toggle Theme</button>
<script>
const toggleButton = document.getElementById('toggle-theme');
toggleButton.addEventListener('click', () => {
const currentTheme = document.documentElement.getAttribute('data-theme');
const newTheme = currentTheme === 'dark' ? 'light' : 'dark';
document.documentElement.setAttribute('data-theme', newTheme);
localStorage.setItem('theme', newTheme);
});
// Load the saved theme from localStorage
const savedTheme = localStorage.getItem('theme');
if (savedTheme) {
document.documentElement.setAttribute('data-theme', savedTheme);
}
</script>
</body>
</html>
通过结合CSS变量和JavaScript,可以实现更灵活的主题切换,并使用CSS变量来管理颜色。
解释
当元素具有 data-theme="dark" 属性时,CSS变量的值会改变,背景颜色为深色(#121212),文字颜色为白色(#ffffff)。
data-theme 这个属性是需要在js那里定义的,只有定义之后才可以识别到。data-theme 是一个自定义HTML属性,用于存储与主题相关的信息。在你的例子中,它被用来指示当前的主题是“light”还是“dark”。CSS可以通过属性选择器 [attribute-name] 获取和应用特定属性值的样式。
data-theme 详细解释
- HTML中的
data-theme属性:
data-theme="light":这是一个自定义数据属性,初始值为 “light”。- 当该属性的值为 “dark” 时,表示页面处于暗黑模式。
- CSS属性选择器:
[data-theme="dark"]:这是一个CSS属性选择器,用于选择所有具有data-theme="dark"属性的元素。- 当
data-theme="dark"时,应用--background-color: #121212和--text-color: #ffffff。
- JavaScript的功能:
- 读取和设置
data-theme属性:通过document.documentElement.setAttribute('data-theme', currentTheme)来设置根元素的data-theme属性。 - 切换主题:当按钮被点击时,读取当前的
data-theme属性,切换其值,并更新到localStorage中保存用户的选择。
热门推荐
鳥革翬飛:從物理學家的球形雞看鳥類飛行
彩虹坠入梦境:探索色彩与心灵的奇妙旅程
这种姑娘们都爱吃的食品,真的不建议多吃
个人经验: 29 岁每月“被动收入”过万,我是如何做到的?
二手机、山寨机、翻新机、官换机:如何辨别手机真伪?
个体工商户法人能否缴纳社保:解答与建议
晚上选择这 6 道菜式,让你睡觉的时候咔咔掉秤
心理科普 | 儿童发展的第一逆反期
超市冷冻鸡腿低价之谜:从规模化养殖到国际贸易
了解红绿灯信号及其重要性,确保城市交通安全与顺畅生活
中国纺织业:从传统制造到科技时尚绿色新高地
《二十一天》:蔡骏笔下的人性迷宫与悬疑盛宴
最适合夏天的10款养生汤,好喝解暑又清补
胡适:教育改革的先锋与实践者
混动车的优势和劣势:是否需要额外保养?
从生活成本到安全性:美国最值得关注的城市排行榜
基于图卷积网络(GCN)的知识图谱嵌入详解
企业在招聘过程中,如何确保公平性与多样性并存?
7大认知科学应用策略 助打造学生高效学习
中国刑事警察学院是一本还是二本?2024年本科最低540分录取
公积金封存的取回流程是怎样的?这一流程中需要准备哪些必要文件?
诗词里的烟火气:从苏轼到辛弃疾,品味最抚凡人心的日常之美
牙线的正确打开方式:手把手教你用对牙线
甲状腺结节3类和乳腺结节3类:性质、表现与应对建议
中国疫苗接种方法详解:类型、流程、对象与地点全解析
成都东郊记忆亮相央视“工业遗迹创新创意盛典” 揭秘游客平均驻留3小时背后的故事
项目经理如何做好书籍管理工作?
固态激光雷达用2D可寻址VCSEL芯片
新石器时代|安徽蚌埠双墩文化(公元前 5300-前 5100年)
如何写好SCI论文的摘要部分