当前位置: 代码网 > it编程>编程语言>Javascript > vue3快速实现主题切换功能的步骤详解

vue3快速实现主题切换功能的步骤详解

2024年06月11日 Javascript 我要评论
内容概要本文介绍一种基于css变量的主题切换实现方式,这种是最简单,最直接,最容易理解的方式。实现的原理就是定义不同的html根标签元素的样式,通过data属性来区分不同主题css变量样式,通过修改根

内容概要

本文介绍一种基于css变量的主题切换实现方式,这种是最简单,最直接,最容易理解的方式。

实现的原理就是定义不同的html根标签元素的样式,通过data属性来区分不同主题css变量样式,通过修改根元素的data属性值来加载不同的css变量,实现主题切换。

实现步骤

1.定义不同主题的css样式变量

一般把该css文件放在styles目录下的theme.css里面

代码如下:

/* 浅色色主题 */
html[data-theme="light"]{
	--page-bg: #ecf4fd;
	--bg1: #ffffff;
	--bg2: #ffffff;
	--txt-color: #000000;
	--prominent-txt-color :#ffffff;
	--prominent-color :#000000;
}
/* 暗色主题 */
html[data-theme="dark"]{
	--page-bg: #06142a;/*页面级背景色*/
	--bg1: #06142a;/*菜单导航栏级背景色*/
	--bg2: #06142a;/*按钮控件等小组件背景色*/
	--txt-color: #ffffff;
	--prominent-txt-color :#000000;
	--prominent-color :#ffffff;
}

2.入口main.ts中引入这个样式文件

3.主题样式css变量引用

在页面各种根据主题变化的地方,如页面背景色,导航栏背景色,文字颜色等引用这些css变量

比如:

通过var()来引用css变量 

此时全部的前置工作已经完成。

4.设置默认主题样式 

在index.html设置默认样式。如图设置的是深色主题

代码如下: 

<!doctype html>
<html lang="en" data-theme="dark">
  <head>
    <meta charset="utf-8">
    <link rel="icon" href="/favicon.ico" rel="external nofollow" >
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>我的工具箱</title>
  </head>
  <body>
    <div id="app"></div>
    <script type="module" src="/src/main.ts"></script>
  </body>
</html>

此时你的页面就变成深色主题了。

5.实现点击按钮主题切换

准备一个主题切换按钮

js部分代码:

//当前主题
const theme=ref('dark')
//切换主题
const toggletheme=()=>{
//获取根元素并设置属性
document.documentelement.setattribute('data-theme',theme.value=='dark'?'light':'dark')
theme.value=theme.value=='dark'?'light':'dark'
}

html部分:

 <div class="theme" @click="toggletheme()">
            <div class="theme-img">
                <a href="#" rel="external nofollow" >
                   
                    <div v-if="theme==='light'">
                        <img src="../../assets/月亮 .png" alt="">
                    </div>
                    <div v-if="theme==='dark'">
                      
                        <img src="../../assets/太阳.png" alt="">
                    </div>
                    
                </a>
            </div>
        </div>

效果:

点击切换即可。

总结

这种实现主题切换的原理就是通过 html 的 data 属性和 css 变量来动态改变页面的样式,从而实现不同主题下的样式切换。当用户切换主题时,只需改变 html 标签上的 data 属性的值,页面的样式会自动更新为对应主题下的样式。 

以上就是vue3快速实现主题切换功能的步骤详解的详细内容,更多关于vue3主题切换的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com