通过J*aScript结合CSS类、自定义属性和localStorage实现主题切换,支持深浅模式切换与系统偏好匹配,提升用户体验。

实现颜色主题切换功能在现代网页开发中非常常见,比如深色模式与浅色模式的切换。使用 J*aScript 可以轻松控制页面的主题颜色,提升用户体验。核心思路是通过 JS 动态修改页面的 CSS 样式或类名,从而实现主题切换。
最简单的方式是预定义几种主题样式类,然后通过 J*aScript 切换元素的 class。
例如,在 CSS 中定义两个主题:
body.light {
background-color: #fff;
color: #333;
}
body.dark {
background-color: #333;
color: #fff;
}
HTML 中设置一个按钮用于切换:
<button id="themeToggle">切换主题</button>
J*aScript 监听按钮点击,切换类名:
document.getElementById('themeToggle').addEventListener('click', function() {
document.body.classList.toggle('light');
document.body.classList.toggle('dark');
});
首次加载时可检查用户偏好(如 localStorage)来设置默认主题。
CSS 变量让主题管理更灵活。可以在 :root 中定义变量,再通过 JS 修改。
:root {
--bg-color: #fff;
--text-color: #333;
}
.dark-theme {
--bg-color: #333;
--text-color: #fff;
}
body {
background-color: var(--bg-color);
color: var(--text-color);
transition: all 0.3s;
}
JS 只需切换类名即可:
Jaaz
开源的AI设计智能体
216
查看详情
document.getElementById('themeToggle').addEventListener('click', function() {
document.body.classList.toggle('dark-theme');
});
这种方式结构清晰,易于扩展多主题。
为了记住用户的主题偏好,可以使用 localStorage。
页面加载时读取保存的主题:
// 页面加载时
if (localStorage.getItem('theme') === 'dark') {
document.body.classList.add('dark-theme');
} else {
document.body.classList.add('light'); // 或默认 light
}
// 切换时保存
document.getElementById('themeToggle').addEventListener('click', function() {
document.body.classList.toggle('dark-theme');
if (document.body.classList.contains('dark-theme')) {
localStorage.setItem('theme', 'dark');
} else {
localStorage.setItem('theme', 'light');
}
});
可以通过 matchMedia 检测用户系统的主题设置。
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
if (localStorage.getItem('theme')) {
// 使用用户上次选择
} else if (prefersDark) {
document.body.classList.add('dark-theme');
} else {
document.body.classList.add('light');
}
这样既尊重系统设置,又允许用户自定义。
基本上就这些。通过类名切换 + CSS 变量 + localStorage,就能实现一个完整、流畅的主题切换功能。不复杂但容易忽略细节,比如初始状态处理和过渡动画。加上简单的 UI 提示,体验会更好。
以上就是JS实现颜色主题切换功能_j*ascript技巧的详细内容,更多请关注其它相关文章!
# css
# 可以通过
# 相关文章
# 只需
# 首次
# 就能
# 中非
# 表单
# 加载
# win
# ai
# ssl
# js
# html
# java
# javascript
# 主题切换
# 自定义
# 宜良营销推广软件
# 武进网站建设咨询
# 武汉靠谱营销推广公司
# seo初级指标
# 常州快速网站建设项目
# 市场推广营销区别
# 推广自媒体营销资讯项目
# 长治互联网网站排名优化
# 代县网站建设机构名单
# 兰州中英文网站建设
# 中文网
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
Google Drive API服务器端访问指南:服务账户认证详解
iSpring三分屏制作教程
在Peewee中处理PostgreSQL记录重复:一站式数据摄取教程
歌词怎么展示在|直播|间视频号?有什么注意事项?
如何通过settings.json个性化您的VS Code体验
键盘测试软件哪个好_键盘故障检测工具推荐
win11如何运行chkdsk命令 Win11检查和修复磁盘逻辑错误教程【修复】
邮编号码查询app有哪些_邮编号码查询推荐app及使用体验
C++怎么解决数值计算中的精度问题_C++浮点数误差与数值稳定性分析
192.168.1.1路由器后台入口 192.168.1.1默认登录入口
qq邮箱格式填写示例 qq邮箱标准填写规范
解决jQuery多计算器输入字段冲突的教程
AO3中文版手机快速通道_AO3最新稳定链接更新
VB表达式书写规则解析
qq音乐官方网站入口_qq音乐在线听歌网页版链接
厨房地面防滑垫的油污怎么洗? 机洗和手洗防滑垫的注意事项
在J*a里什么是行为抽象_抽象行为对代码复用的提升作用
在PHP环境中正确加载HTML资源:CSS样式与图片路径指南
家里的小飞虫总是不断,用什么方法可以彻底根除?
三星A55应用闪退排查步骤_Samsung A55稳定性优化技巧
mysql中外键约束如何使用_mysql FOREIGN KEY操作
J*aScript实现下拉菜单驱动的动态表格数据展示
Yandex无需登录畅游 俄罗斯搜索引擎最新官网指南
PHP使用DOMDocument与XPath精准追加XML元素教程
苹果手机如何清理系统缓存数据 iPhone非越狱清理垃圾文件的技巧【系统优化】
京东快递物流信息不更新怎么办_物流停滞原因与处理方法
百度识图图像分析 百度识图识别平台
Windows自带的便笺数据如何备份_防止数据丢失的便利贴迁移教程【干货】
微星主板BIOS怎么调整内存时序_内存参数手动优化BIOS设置教程
PDF文件去水印平台入口 PDF水印删除网址
传统曲艺莲花落的表演形式是
外卖小程序对接第三方配送
海棠阅读网页版_进入海棠网页版在线阅读中心
如何配置VS Code作为您Git操作的默认编辑器
在Django中动态检查模型关联:一种灵活的解决方案
iPhone 13 mini如何清理Safari缓存_iPhone 13 mini浏览器缓存清理方法
在Django单元测试中优雅处理信号:基于环境的条件执行策略
苹果17 Pro如何启用分屏浏览_iPhone 17 Pro分屏浏览设置步骤
Python对象引用与属性赋值:理解链表中的行为
《华夏千秋》龙女试炼功法获取方法
汽水音乐官方网站登录入口_汽水音乐网页版进入链接
《蓝色星原:旅谣》坐骑获取攻略
J*aScript包管理器_Npm与Yarn对比
如何修改Windows截图的默认保存位置_告别C盘让桌面更整洁【教程】
电脑没有声音了怎么办 电脑声音问题的全面排查与修复指南【详解】
PPT智能排版生成入口 免费PPT内容自动生成平台
J*aScript:从子元素中批量移除特定CSS类
《百度畅听版》关闭兴趣推荐方法
漫蛙官网(首页入口)_漫蛙漫画稳定访问教程分享
Coolpad5890 ROM刷机包
2025-10-30
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。