新闻中心
如何在HTML中插入主题切换按钮_HTML CSS变量与主题切换J*aScript
使用CSS变量和J*aScript实现主题切换:在:root中定义默认颜色,创建.dark-theme类覆盖变量,通过JS切换类名并结合localStorage保存用户偏好,支持跟随系统主题,实现平滑切换效果。

想让网页支持暗色和亮色主题切换?用 HTML、CSS 变量配合少量 J*aScript 就能轻松实现。关键在于把颜色定义在 CSS 自定义属性中,再通过 JS 动态切换类名或根变量,完成主题变更。
使用 CSS 变量定义主题
在 :root 中定义默认主题的颜色变量,再为另一种主题(比如暗色)创建单独的类,覆盖原有变量。
:root {
--bg-color: #ffffff;
--text-color: #333333;
--accent-color: #007bff;
}
.dark-theme {
--bg-color: #1a1a1a;
--text-color: #f0f0f0;
--accent-color: #00d4ff;
}
这样所有用到这些变量的地方都会自动响应变化。例如:
body {
background-color: var(--bg-color);
color: var(--text-color);
transition: background-color 0.3s ease;
}
button {
background-color: var(--accent-color);
}
添加主题切换按钮
在页面中放一个按钮,用于触发主题切换。
<button id="theme-toggle">切换主题</button>
这个按钮不需传参或复杂结构,点击后由 J*aScript 控制逻辑。
用 J*aScript 切换主题
获取按钮并监听点击事件,切换 body 或 html 元素上的主题类名。
小爱开放平台
小米旗下小爱开放平台
291
查看详情
const toggleButton = document.getElementById('theme-toggle');
toggleButton.addEventListener('click', () => {
document.body.classList.toggle('dark-theme');
});
每次点击,dark-theme 类会被添加或移除,CSS 变量随之更新,界面自动重绘。
如果想记住用户偏好,可结合 localStorage:
// 页面加载时恢复上次选择
if (localStorage.getItem('theme') === 'dark') {
document.body.classList.add('dark-theme');
}
toggleButton.addEventListener('click', () => {
document.body.classList.toggle('dark-theme');
if (document.body.classList.contains('dark-theme')) {
localStorage.setItem('theme', 'dark');
} else {
localStorage.setItem('theme', 'light');
}
});
优化体验:默认跟随系统
首次访问时,可判断用户的系统偏好。
const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
if (localStorage.getItem('theme') === null) {
if (prefersDark) {
document.body.classList.add('dark-theme');
}
}
</font>
这样新用户打开页面会自动匹配系统主题,更贴心。
基本上就这些。HTML 提供结构,CSS 变量管理样式,J*aScript 控制交互,三者协作就能做出流畅的主题切换功能。不复杂但容易忽略细节,比如加过渡动画、保存状态、适配系统设置等,补上就
完整了。
以上就是如何在HTML中插入主题切换按钮_HTML CSS变量与主题切换J*aScript的详细内容,更多请关注其它相关文章!
# css
# 相关文章
# 首次
# 显示效果
# 如何在
# 就能
# 小爱
# 重绘
# win
# ai
# ssl
# js
# java
# javascript
# html
# 点击事件
# seo的内容结构
# 濮阳实力seo地址查询
# 耀州区网站建设技术指导
# 未央区正品网站推广便宜
# 益阳专业网站建设
# 哪些网站做加盟推广好
# 日照网络推广营销公司
# seo优化属于什么岗位
# 抖音排名关键词怎么做如何操作
# 龙华网站建设的技术方案
# 想让
# 解决问题
# 自定义
# 中文网
相关栏目:
【
科技资讯46185 】
【
网络学院92790 】
相关推荐:
fishbowl官网免费版 fishbowl养鱼网站入口
Golang并发任务中错误如何聚合_Golang goroutine error收集方式
如何有效阻止外部脚本意外修改内联样式的高度属性
优化Log4j2控制台输出性能:解决异步日志瓶颈
Yandex官网搜索引擎免登录_俄罗斯Yandex一键直达入口
TikTok评论显示延迟如何处理 TikTok评论刷新优化方法
KFC套餐升级怎么获取优惠代码_KFC套餐升级活动与优惠代码获取方法
iwriter统一登录平台 iwrite账号密码登录页面
微博网页版官方账号登录 微博网页版内容浏览使用指南
蛙漫官方正版入口 蛙漫网页在线全集免费观看
Python自定义类排序:解决lambda键值访问TypeError的实践指南
如何创建没有密码的Windows本地账户_跳过微软账户登录的技巧【教程】
c++如何使用Catch2编写单元测试_c++简洁易用的BDD风格测试框架
C++ vector二维数组定义_C++ vector of vector用法
《主播少女的秘密账号迷宫》首支宣传片
Golang如何处理RPC请求负载均衡_Golang RPC请求负载均衡策略与实践
邮政快递包裹最新位置 邮政快递实时追踪入口
豆包手机助手发布技术预览版:直接嵌入手机系统!努比亚样机发售
Win10如何清理注册表垃圾 Win10手动清理无效注册表【技巧】
Excel组合图表怎么做 Excel创建柱状图与折线组合图教程【图表】
星露谷物语官网入口 星露谷物语游戏官网入口
R星幕后开发视频泄露 包含《GTA6》等多款大作
汽水音乐车机版8.9下载 汽水音乐车机版8.9版本安装入口
J*aScript中高效清空DOM列表元素:解决for循环中断与任务管理问题
C++ explicit关键字防止隐式转换_C++构造函数安全规范
Python中如何避免重复条件判断:利用数据结构实现动态逻辑
深入理解Go语言中Map值与方法接收器的交互:为什么需要临时变量
如何创建独立于主系统的J*a运行环境_隔离式环境搭建策略
聚水潭ERP登录页面入口 聚水潭ERP官网登录界面
在J*a中如何开发简易电子商务商品管理系统_商品管理系统项目实战解析
漫蛙MANWA漫画主页官方入口 漫蛙漫画最新在线阅读地址
Composer如何解决json扩展缺失的错误
利用Bokeh CustomJS动态控制DataTable列可见性
QQ邮箱在线登录平台 QQ邮箱个人邮箱网页版入口
哔哩哔哩忘记密码了怎么找回_哔哩哔哩密码找回方法
QQ邮箱在线使用入口 QQ邮箱个人账号网页版登录
曝R星经典之作开发图 设计简陋但信息密集!
解决Tabulator日期时间排序问题的专业指南
Centos/Linux 系统下安装 composer 的完整步骤
Python异步编程实践:使用Binance API构建实时交易数据流
qq浏览器打开空白页怎么办 qq浏览器启动后显示白屏的解决教程
腾讯视频怎么举报不良内容_腾讯视频内容举报流程与违规信息处理方法
优化 Python 函数中的条件逻辑:解决 if-else 嵌套与参数选择问题
Win11输入法不见了怎么办_Windows11恢复语言栏显示方法
微博网页版怎么开启两步验证_微博网页版账号安全两步验证设置方法
J*a如何使用AtomicInteger控制计数_J*a无锁计数器性能分析
HTML元素状态管理:根据DIV内容动态启用/禁用按钮
马斯克:Optimus 人形机器人复数形式为 Optimi
妖精漫画网页版登录入口免费_妖精漫画官网主页直接阅读漫画
CSS Flexbox如何实现多行排列_flex-wrap wrap自动换行显示


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