码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • vue3简单快速实现主题切换功能


    ⛰️个人主页:     蒾酒

    🔥系列专栏:《vue3实战》


    目录

    内容概要

    实现步骤

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

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

    3.主题样式css变量引用

    4.设置默认主题样式 

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

    总结


      最近发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。

        点击跳转到学习网站

    内容概要

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

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

    实现步骤

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

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

    代码如下:

    1. /* 浅色色主题 */
    2. html[data-theme="light"]{
    3. --page-bg: #ecf4fd;
    4. --bg1: #ffffff;
    5. --bg2: #ffffff;
    6. --txt-color: #000000;
    7. --prominent-txt-color :#ffffff;
    8. --prominent-color :#000000;
    9. }
    10. /* 暗色主题 */
    11. html[data-theme="dark"]{
    12. --page-bg: #06142a;/*页面级背景色*/
    13. --bg1: #06142a;/*菜单导航栏级背景色*/
    14. --bg2: #06142a;/*按钮控件等小组件背景色*/
    15. --txt-color: #ffffff;
    16. --prominent-txt-color :#000000;
    17. --prominent-color :#ffffff;
    18. }

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

    3.主题样式css变量引用

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

    比如:

    通过var()来引用css变量 

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

    4.设置默认主题样式 

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

    代码如下: 

    1. html>
    2. <html lang="en" data-theme="dark">
    3. <head>
    4. <meta charset="UTF-8">
    5. <link rel="icon" href="/favicon.ico">
    6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
    7. <title>我的工具箱title>
    8. head>
    9. <body>
    10. <div id="app">div>
    11. <script type="module" src="/src/main.ts">script>
    12. body>
    13. html>

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

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

    准备一个主题切换按钮

    js部分代码:

    1. //当前主题
    2. const theme=ref('dark')
    3. //切换主题
    4. const toggleTheme=()=>{
    5. //获取根元素并设置属性
    6. document.documentElement.setAttribute('data-theme',theme.value=='dark'?'light':'dark')
    7. theme.value=theme.value=='dark'?'light':'dark'
    8. }

    html部分:

    1. <div class="theme" @click="toggleTheme()">
    2. <div class="theme-img">
    3. <a href="#">
    4. <div v-if="theme==='light'">
    5. <img src="../../assets/月亮 .png" alt="">
    6. div>
    7. <div v-if="theme==='dark'">
    8. <img src="../../assets/太阳.png" alt="">
    9. div>
    10. a>
    11. div>
    12. div>

    效果:

    点击切换即可。

    总结

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

  • 相关阅读:
    100道JVM面试题大全最新版2023版
    企业新闻稿怎么写?教你撰写企业新闻稿
    第十九章Java绘图
    C语言日记 37 类的友元(1)(全局函数做友元)
    图神经网络 图像处理,神经网络图像修复
    【性能测试】Jmeter+InfluxDB+Grafana 搭建性能监控平台
    盘点Sui生态20个值得关注的项目,其中8个已进入测试阶段
    【NSArray数组的持久化 Objective-C语言】
    Cadence导入IBIS模型用于仿真
    FFmpeg入门详解之53:Qt Qss FFplay SDL播放器实战项目
  • 原文地址:https://blog.csdn.net/qq_62262918/article/details/139372223
  • 最新文章
  • 【JVM】编译执行与解释执行的区别是什么?JVM 使用哪种方式?
    用 Hashids 优雅解决 C 端自增 ID 暴露问题
    V8引擎 精品漫游指南--Ignition篇(上) 指令 栈帧 槽位 调用约定 内存布局 基础内容
    LLVM Pass快速入门(四):代码插桩
    milkup:桌面端 markdown AI续写和即时渲染
    基于项目工程构建SBOM(软件物料清单)的研究
    鸿蒙应用开发UI基础第二节:鸿蒙应用程序框架核心解析与实操
    .NET 中如何快速实现 List 集合去重?
    扣子Coze实战:从0到1打造抖音+小红书热点监控智能体
    浅谈数据访问层
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号