当前位置: 首页 > news >正文

vue 切换主题色切换主题色切换主题色切换主题色切换主题色

第一种:使用CSS变量

CSS变量(Custom Properties)是CSS的一种新特性

1.实现需求:自定义颜色

在这里插入图片描述

  1. 定义变量
    全局的theme.css
:root {--primary-color:red;
}
  1. 在组件中使用这些变量
    demo.vue
<template><div class="main"><!-- 修改主题色 --><div class="router-header"><span>主题色</span><el-color-picker v-model="theme"></el-color-picker></div></div>
</template>
<script >
export default {data() {return {theme: "#409EFF",};},watch: {//监听颜色变化,赋值修改主题色theme(val) {// let root = document.querySelector(":root");// root.style.setProperty("--primary-color", val);//或者下面直接修改也可以document.documentElement.style.setProperty("--primary-color", val);},},
};
</script>
<style lang='less'>
.main {//css中使用主题色background: var(--primary-color);
}
</style>

2.实现需求:切换深浅主题色

在这里插入图片描述

  • theme.css
:root[theme="light"] {--primary-color:rgb(76, 34, 228);
}
:root[theme="dark"] {--primary-color: rgb(242, 86, 8);
}
  • main.js中引入theme.css
import './pages/theme.css'
  • vue中使用
<template><div class="main"><!-- 修改主题色 --><div class="router-header"><span>主题色</span><el-switchv-model="isDarkTheme"active-text="深色皮肤"inactive-text="浅色皮肤"></el-switch></div></div>
</template>
<script >
export default {data() {return {isDarkTheme: true,};},watch: {isDarkTheme(val) {// 切颜色window.document.documentElement.setAttribute("theme",this.isDarkTheme ? "dark" : "light");},},
};
</script>
<style lang='less'>
.main {background: var(--primary-color);
}
</style>

3.优缺点分析

  1. 优点:
  • 简单易用:CSS变量使用和更改都很方便。
  • 性能高效:只需更改变量值,无需重新加载样式表。
  • 兼容性好:适用于各种CSS预处理器,如Sass、Less等。
  1. 缺点:
  • 浏览器兼容性:旧版浏览器(如IE)不支持CSS变量。
  • 维护成本:对于大型项目,需要维护大量的变量,可能导致变量命名冲突和管理困难。

第二种:引入不同的CSS文件实现主题切换

在这里插入图片描述

1.实现步骤

深色主题和浅色主题,根据变量标识,切换最顶层类名

<template><div class="main" :class="isDarkTheme ? 'dark-theme' : 'light-theme'"><!-- 修改主题色 --><div class="router-header"><span>主题色</span><el-switchv-model="isDarkTheme"active-text="深色皮肤"inactive-text="浅色皮肤"></el-switch></div></div>
</template>
<script >
export default {data() {return {isDarkTheme: true,};},
};
</script>
<style lang='less'>
.main {//所有的深色主题的样式都写这儿&.dark-theme {background: #caeae8;}//所有的浅色主题的样式都写这儿&.light-theme {background: pink;}
}
</style>

2.优缺点分析

  1. 优点:
  • 实现简单:只需切换样式文件,不需要复杂的逻辑。
  • 适应性广:适用于所有前端框架和纯HTML项目。
  1. 缺点:
  • 性能开销:每次切换都需要重新加载CSS文件,可能导致页面闪烁。
  • 维护成本:需要维护多套完整的CSS文件,代码重复度高。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • python使用tkinter添加下载进度UI
  • 如何使用uer做多分类任务
  • 刷题之多数元素(leetcode)
  • 11.索引_创建不同种类索引(primary+unique+复合....)
  • Spring MVC深入理解之源码实现
  • .net core Redis 使用有序集合实现延迟队列
  • 【环境准备】 Vue环境搭建
  • AngularJS API 深入解析
  • CTF php RCE (一)
  • 激光干涉仪可以完成哪些测量:全面应用解析
  • 北京大学长安汽车发布毫米波与相机融合模型RCBEVDet:最快能达到每秒28帧
  • 招投标信息采集系统:让您的企业始终站在行业前沿
  • 短链接day3
  • Socket网络通信流程
  • 昇思25天学习打卡营第6天|函数式自动微分
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • C++类中的特殊成员函数
  • EOS是什么
  • Java 11 发布计划来了,已确定 3个 新特性!!
  • js继承的实现方法
  • MYSQL如何对数据进行自动化升级--以如果某数据表存在并且某字段不存在时则执行更新操作为例...
  • nfs客户端进程变D,延伸linux的lock
  • Python 反序列化安全问题(二)
  • Python_OOP
  • vuex 学习笔记 01
  • 从0实现一个tiny react(三)生命周期
  • 分布式任务队列Celery
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 如何在GitHub上创建个人博客
  • 适配iPhoneX、iPhoneXs、iPhoneXs Max、iPhoneXr 屏幕尺寸及安全区域
  • 双管齐下,VMware的容器新战略
  • 算法---两个栈实现一个队列
  • 限制Java线程池运行线程以及等待线程数量的策略
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 从如何停掉 Promise 链说起
  • ​3ds Max插件CG MAGIC图形板块为您提升线条效率!
  • # linux 中使用 visudo 命令,怎么保存退出?
  • (CVPRW,2024)可学习的提示:遥感领域小样本语义分割
  • (delphi11最新学习资料) Object Pascal 学习笔记---第13章第1节 (全局数据、栈和堆)
  • (Java入门)抽象类,接口,内部类
  • (安全基本功)磁盘MBR,分区表,活动分区,引导扇区。。。详解与区别
  • (二十三)Flask之高频面试点
  • (含笔试题)深度解析数据在内存中的存储
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转)C#开发微信门户及应用(1)--开始使用微信接口
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • .“空心村”成因分析及解决对策122344
  • .NET 4.0中的泛型协变和反变
  • .net core 连接数据库,通过数据库生成Modell
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • @font-face 用字体画图标
  • @WebService和@WebMethod注解的用法
  • []error LNK2001: unresolved external symbol _m
  • []Telit UC864E 拨号上网
  • []新浪博客如何插入代码(其他博客应该也可以)