新闻中心
JS实现颜色主题切换功能_j*ascript技巧
通过J*aScript结合CSS类、自定义属性和localStorage实现主题切换,支持深浅模式切换与系统偏好匹配,提升用户体验。

实现颜色主题切换功能在现代网页开发中非常常见,比如深色模式与浅色模式的切换。使用 J*aScript 可以轻松控制页面的主题颜色,提升用户体验。核心思路是通过 JS 动态修改页面的 CSS 样式或类名,从而实现主题切换。
1. 使用 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)来设置默认主题。
2. 利用 CSS 自定义属性(变量)
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 只需切换类名即可:
万相营造
阿里妈妈推出的AI电商营销工具
168
查看详情
document.getElementById('themeToggle').addEventListener('click', function() {
document.body.classList.toggle('dark-theme');
});
这种方式结构清晰,易于扩展多主题。
3. 持久化用户选择
为了记住用户的主题偏好,可以使用 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');
}
});
4. 结合系统偏好( prefers-color-scheme )
可以通过 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技巧的详细内容,更多请关注其它相关文章!
# 如何用
# 金网seo
# 知乎关键词排名前十
# 株洲网站建设工程师
# 网站文章内容页优化
# 专业云优化seo
# 合肥网站SEO收费
# 内蒙古关键词排名方法
# 宁夏seo信息优化推广
# 关键词最好排名变化原因
# 百色营销推广招聘信息网
# 就能
# 器中
# 如何实现
# 中非
# 主题切换
# 如何处理
# 用它
# 表单
# 加载
# 自定义
# win
# ai
# ssl
# js
# html
# java
# javascript
# css
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
如何在离线环境中使用Composer_Composer离线安装依赖包的技巧与策略
qq游戏网页版直接玩_qq游戏免下载快速入口
192.168.1.1管理中心入口 192.168.1.1路由器网页设置平台
漫蛙Manwa2官网入口地址分享 漫蛙漫画PC版永久访问通道
Win11网速慢怎么解决 Win11网络设置优化解除限速
创客贴用户入口官网登录 创客贴网页版电脑版系统
微信语音通话掉线如何解决 微信语音通话稳定优化方法
Spyder启动失败:字体文件权限拒绝错误解决方案
Win10自动更新怎么关闭 Win10永久关闭系统更新的两种方法【终极版】
多闪网页版在线观看免费入口_多闪官网访问入口
mc.js官网登录入口 mc.js官方登录入口最新版
如何解决电商平台定制报价请求的“黑洞”问题,SprykerQuoteRequest模块助你提升客户体验与销售效率
mysql通配符支持数字匹配吗_mysql通配符能否用于数字匹配的解析
汽水音乐在线解析 汽水音乐在线解析入口
必由学登录入口 必由学官方网站在线访问链接
Win11怎么查看电脑配置_Win11硬件配置检测工具使用
抖音隐秘迷城小游戏入口_ 抖音冒险解谜小游戏秒玩
LINUX的I/O重定向是什么_深入理解LINUX中 >、>> 与 < 的区别
《燕云十六声》两周内达九百万玩家!位居畅销榜第五
小红书怎么解除第三方平台绑定_小红书多平台登录解绑方法介绍
蛙漫漫画官网在线入口 蛙漫全本漫画免费阅读平台
Windows 11怎么彻底关闭定位_Windows 11服务中禁用Geolocation
文本文档写html代码怎么运行_文本文档html代码运行步骤【教程】
FullCalendar 自定义按钮样式定制指南
sublime如何配置Go语言开发环境_sublime搭建Golang编译运行系统
谷歌google账号怎么注册账号 谷歌账号注册官方流程
TikTok评论显示延迟如何处理 TikTok评论刷新优化方法
蛙漫正版漫画平台入口_蛙漫免费阅读全站漫画资源
离线运行Go语言之旅:本地部署与GOPATH配置指南
解决 MongoDB 聚合查询中对象数组 _id 匹配问题
163邮箱官方主页登录 直达网易邮箱登录核心页面
UC浏览器如何安装插件 UC浏览器添加扩展程序详细教程【进阶】
mysql密码锁定怎么解锁_mysql密码锁定解锁后修改密码步骤
Win10如何开启蓝牙功能_Windows10找不到蓝牙开关解决方法
Sublime怎么配置Nim语言环境_Sublime Nim代码高亮与补全
Composer的 "check-platform-reqs" 命令有什么用_在部署前检查生产环境是否满足Composer依赖需求
谷歌推RCS信息存档功能:公司可监控员工私密信息!
Django通过AJAX异步上传图片并保存至模型的完整指南
Go语言JSON解析深度指南:动态访问与结构体映射实践
c++如何使用std::memory_order控制原子操作顺序_c++ C++11内存模型详解
c++中的const_cast和reinterpret_cast怎么用_c++四种类型转换
不会效仿卡普空!《铁拳》制作人澄清:不采取赛事付费|直播|
豆包手机助手发布技术预览版:直接嵌入手机系统!努比亚样机发售
解决深度学习模型训练初期异常高损失与完美验证准确率问题
Eclipse怎么运行工程_Eclipse工程运行配置说明
C++指针和引用有什么区别_C++内存管理核心概念深度解析
单12V-2×6实现为RTX 5090供电750W!甚至都没敢跑分
AO3镜像入口大全 AO3网页版内容访问全集
CSS Flexbox如何实现多行排列_flex-wrap wrap自动换行显示
NVIDIA股价11月重挫12%:下月有望好转 但难回5万亿美元巅峰


2025-10-30
浏览次数:次
返回列表