码农知识堂 - 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 属性的值,页面的样式会自动更新为对应主题下的样式。 

  • 相关阅读:
    java计算机毕业设计ssm基于C程序课程的题库在线平台(源码+系统+mysql数据库+Lw文档)
    黑猫带你学Makefile第10篇:如何将未被编译的代码/自己写的驱动编译进uboot
    灰色预测GM(1.1)模型及matlab程序负荷预测
    HTML之file控件、hidden控件、列表、div
    一文带你了解全覆盖路径规划算法(CCPP)
    基于C++实现的状态空间的启发式搜索
    CDGA|从平台自治到规范化的数据治理
    YOLOv5-训练自己的VOC格式数据集(VOC、自建数据集)
    PCL ICP点云精配准(点到面)
    高阶数据结构(2)-----红黑树(未完成)
  • 原文地址:https://blog.csdn.net/qq_62262918/article/details/139372223
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号