前端实现界面切换主题代码示例
作者:交互手记时间:2026-11-01 04:19:48浏览:172
本文介绍了两种前端界面主题切换的实现方式。第一种通过link标签的rel和title属性定义可替换样式,适合固定主题间的切换;第二种利用CSS变量(:root定义,var()使用)结合JavaScript修改setProperty值,支持拾色器等动态颜色选择。
主题切换样式
- 一种常见的主题切换实现手段,依赖于
link元素的rel特性 - 当
rel特性的取值为alternate时,表示该样式表支持替换 title特性需统一添加或移除,因为title的存在会使系统将其识别为样式文件;若多个样式文件中部分包含此特性而部分不包含,系统将优先加载包含该特性的样式- 假设页面包含三个样式文件,分别为:
default.css、dark.css、light.css - 通过激活可替换样式即可达成主题切换,此方法适用于在既定主题间进行切换
/* default.css */
body {
background-color: white;
}
/* dark.css */
body {
background-color: black;
}
/* light.css */
body {
background-color: lightcyan;
}
<!DOCTYPE html>
<html lang="en" class="dark">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>主题切换方案一</title>
<link type="text/css" href="css/default.css" rel="external nofollow" rel="stylesheet" title="default">
<link type="text/css" href="css/dark.css" rel="external nofollow" rel="stylesheet alternate" title="dark">
<link type="text/css" href="css/light.css" rel="external nofollow" rel="stylesheet alternate" title="light">
</head>
<body>
<select name="主题" onchange="changeTheme(this.value)">
<option value="default">默认</option>
<option value="dark">夜晚</option>
<option value="light">白天</option>
</select>
</body>
<script src="static/js/jquery.min.js"></script>
<script>
function changeTheme(theme) {
$('link').attr('disabled', true)
$(`link[title=${theme}]`).attr('disabled', false)
}
</script>
</html>

基于变量的主题配置
- 前述方式适用于主题样式文件的切换,对于需在拾色器中自由选取颜色以定制主题的场景则不适用
- 在此类场景下,通过变量配置系统主题更为适宜
- 当前在
:root内定义全局变量,随后利用var()在样式中引用该变量,并通过setProperty修改变量值以更换主题外观
<!DOCTYPE html>
<html lang="en" class="dark">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>主题切换方案二</title>
<style>
:root {
--theme-color: #333333;
}
html {
background-color: var(--theme-color, "#E65A65");
}
</style>
</head>
<body>
<select name="主题" onchange="changeTheme(this.value)">
<option value="#333333">默认</option>
<option value="#1a7efc">蓝色</option>
<option value="#16d46b">绿色</option>
<option value="#f1ce6b">黄色</option>
</select>
</body>
<script>
function changeTheme(theme) {
document.documentElement.style.setProperty('--theme-color', theme)
}
</script>
</html>
结论
至此,关于前端界面主题切换的教程结束,更多前端主题切换相关内容请参阅本站历史文章或浏览后续文章,感谢大家的支持!
作者最新文章
JS怎么实现页面强制刷新
2026-11-05 14:53:38
点击JS链接直接运行不下载?前端实现.js文件强制下载的三种方法
2026-11-05 12:12:23
怎么封装一个通用的JS创建元素辅助函数
2026-11-05 11:41:41
Swiper.js 怎么监听滑动结束并获取当前索引
2026-11-05 10:57:15
HTML、CSS和JS的关系:Web前端三件套怎么协作
2026-11-04 15:41:40
