Vue+Element多套主题切换

news2024/9/21 20:25:42

Vue3.x + Element Plus与Vue2.x + Element ui多套主题的切换方案

demo地址 Vue+Element更换主题: Vue + Element项目,更换几套主题的方案

思路很简单,就是写好每套样式,写个切换功能,切换主题即可

具体实现方案:

  1. 准备多套css主题,覆盖element的样式,或者自己写样式;主题的同级目录加个引入主题的js脚本,如下
    // index.js
    // 引入主题的方法
    
    // defaultTheme 就是某个主题文件名称的字符串,如'default',只是我把写在了config中,这里也可以直接定义赋值
    import { defaultTheme } from '@/config/index.js'
    
    // 主题名称要存储在localStorage中,这样切换主题刷新页面后效果不丢失
    let theme = localStorage.getItem('theme')
    theme = theme ? theme : defaultTheme
    
    // 根据所选的主题名称引入主题样式
    import(`./${theme}.scss`)
    // green.scss
    
    // 覆盖掉Element Plus默认的样式
    // 注意,element ui 与element plus的主题覆盖的写法不一样,整个主题切换方案,element ui 与element plus只有这里有差异
    // 下面是element plus的覆盖写法
    @forward 'element-plus/theme-chalk/src/common/var.scss' with (
    	$colors: (
    		'primary': (
    			'base': #67c23a,
    		),
    	)
    );
    @use 'element-plus/theme-chalk/src/index.scss' as *;
    
    // 在这里面直接写css样式也可以
    .btn {
    	background-color: #67c23a;
    }
  2. 写个切换主题的下拉框
    <template>
        <!-- 主题切换 -->
        <el-select class="theme" v-model="theme" @change="themeChange" size="small">
            <el-option v-for="(item, index) in themeList" :key="index" :value="item.value" :label="item.name"></el-option>
        </el-select>
    </template>
    
    <script>
    import { themeList, defaultTheme } from '@/config';
    
    export default {
    	data() {
    		return {
    			theme: '',
    			themeList,
    		};
    	},
    	created() {
    		this.themeInit();
    	},
    	methods: {
    		// 主题初始化
    		themeInit() {
    			let theme = localStorage.getItem('theme');
    			this.theme = theme ? theme : defaultTheme;
    		},
    
    		// 切换主题
    		themeChange(val) {
    			localStorage.setItem('theme', val);
    			window.location.reload();
    		},
    	},
    };
    </script>
    
  3. 在main.js中引入主题
  4. 已经OK了,再附上config.js
    // config/index.js
    
    // 默认主题
    export const defaultTheme = "green"
    
    // 所有主题
    export const themeList = [
        { name: '默认主题', value: 'default' },
        { name: '绿色主题', value: 'green' },
    ]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2109099.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

物联网技术推动灌区智能化管理

物联网技术&#xff0c;作为信息技术革命的重要组成部分&#xff0c;正深刻地改变着传统行业的运作模式&#xff0c;其中在农业灌溉领域的应用尤为显著&#xff0c;为灌区的智能化管理开辟了新径。这一技术通过将传感器、智能网关、大数据分析与云平台紧密融合&#xff0c;实现…

What is Node.JS and its Pros and Cons

What is Node.JS and its Pros and Cons JavaScript is a client-side development tool. Node.js is a server-side development tool. And it’s only a runtime environment based on Chrome V8 so we don’t write some code in Node.js. Pros: JavaScript on a server …

TypeScript 在 Vue.js 中的应用指南

在前端开发中&#xff0c;TypeScript 和 Vue.js 的组合越来越受到青睐。TypeScript 的强类型系统和 Vue.js 的组件化架构相得益彰&#xff0c;可以帮助你编写更可靠和易维护的代码。如果你已经掌握了 TypeScript 的基本语法&#xff0c;但不太确定怎么将它与 Vue.js 配合使用&a…

opencv 实现两个图片的拼接去重功能

基础知识介绍 cv::Mat 是OpenCV库中用来表示图像和矩阵数据的核心类之一。它是一个多维数组&#xff0c;可以存储图像像素数据、矩阵数据以及其他类型的数据。以下是关于 cv::Mat 类的一些详细解释&#xff1a; 构造函数&#xff1a;cv::Mat 类有多个构造函数&#xff0c;可以用…

JavaWeb(后端)

Maven Apache Maven 是一个项目管理和构建工具&#xff0c;它基于项目对象模型(POM)的概念&#xff0c;通过一小段描述信息来管理项目的构建。 Maven的作用 依赖管理&#xff1a;方便快捷的管理项目依赖的资源(jar包)&#xff0c;避免版本冲突问题。 统一项目结构&#xff…

Leetcode22括号生成(java实现)

今天分享的题目是Leetcode22括号生成&#xff0c;具体的题目描述如下&#xff1a; 本道题我们使用的解法是回溯。 解题思路&#xff1a; 我们主要是对括号出现的可能性进行一个收集。 我们以n2举例子&#xff0c;如下图 如果想要合法&#xff0c;那么一定是左括号开始&#…

golang学习笔记05——golang协程池,怎么实现协程池?

推荐学习文档 golang实战大纲golang优秀开发常用开源库汇总golang学习笔记01——基本数据类型golang学习笔记02——gin框架及基本原理golang学习笔记03——gin框架的核心数据结构golang学习笔记04——如何真正写好Golang代码&#xff1f; 协程池是一种用于高效处理任务的机制&…

Claude的小白入门指南

要想快速上手Claude AI&#xff0c;其实并没有那么复杂。作为新一代的AI助手&#xff0c;Claude致力于为用户提供高效、无害、透明的交互体验。这篇入门指南将从Claude AI的特点、主要功能和如何实际操作等几个方面为大家做一个详细的介绍。 Claude AI是什么&#xff1f; Claud…

ssh之登录服务器后,自动进入目录(四十七)

简介&#xff1a; CSDN博客专家、《Android系统多媒体进阶实战》一书作者 新书发布&#xff1a;《Android系统多媒体进阶实战》&#x1f680; 优质专栏&#xff1a; Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a; 多媒体系统工程师系列【…

0成本实现.NET Web API 8.0项目内网映射

1.背景 最近在学习CICD&#xff0c;里面会有用到内网映射的使用场景。为了加深对内网映射实操的记忆。我实操了下基于.Net 8.0的内网映射&#xff0c;并支持互联网访问。本文主要介绍了在win11下安装路由侠&#xff0c;并将.net 8.0发布到win11&#xff0c;项目运行、路由侠配…

【MiniMax】中国文生视频模型再添一员大将!

千呼万唤始出来&#xff01; 一直以低调示人的 MiniMax 终于举办了他们从成立以来的第一次公开伙伴日活动。 本次伙伴日上&#xff0c;MiniMax发布了 视频模型abab-video-1、音乐模型abab-music-1&#xff0c;更新 语音模型abab-speech-1。此外&#xff0c;MiniMax将在未来数周…

Windows10彻底关闭自带的防病毒功能

第1步:右下角,点开“windows安全中心” 第2步:切换到“病毒和威胁防护”,打开“管理设置” 第3步:将“实时防护”、“云提供的防护”、“自动提交样本”和“篡改防护”四个选项开关关闭。 第4步:按下win键+R键->打开“运行”窗口->输入命令“gpedit.msc”->“确…

2024国赛数学建模-模拟火算法(MATLAB 实现)

模拟退火算法 1.1 算法原理 模拟退火算法的基本思想是从一给定解开始 ,从邻域 中随机产生另一个解 ,接受 Metropolis准则允许目标函数在 有限范围内变坏 ,它由一控制参数 t决定 ,其作用类似于物 理过程中的温度 T,对于控制参数的每一取值 ,算法持续进 行“产生 —判断 —接受…

vue transition组件

可能不生效的几个注意点 选择器的优先级谨慎合并样式 显示三阶段和隐藏三阶段的class名 1、vue2中显示的初始阶段类名是&#xff1a;v-enter&#xff1b;隐藏的初始阶段类名是&#xff1a;v-leave2、v-enter-active、v-leave-active这两个 class 可以被用来定义动画的持续时间…

C# 删除Word文档中的段落

在编辑Word文档时&#xff0c;我们有时需要调整段落的布局、删除不必要的段落以优化文档的结构和阅读体验。本文将通过以下3个简单示例演示如何使用免费.NET库删除Word文档中的段落 。 目录 C# 删除Word中的指定段落 C# 删除Word中的所有段落 C# 删除Word中的空白段落 免费…

【运维监控】influxdb 2.0+telegraf 监控tomcat 8.5运行情况(2)

关于java应用的监控本系列有文章如下&#xff1a; 【运维监控】influxdb 2.0telegraf 监控tomcat 8.5运行情况 【运维监控】influxdb 2.0grafana 监控java 虚拟机以及方法耗时情况 【运维监控】Prometheusgrafana监控tomcat运行情况 【运维监控】Prometheusgrafana监控spring b…

vllm源码解析(三):块管理(BlockManager)

六 块管理器 6.1 块管理方法在调度系统中的应用 在第二篇文章对调度系统的分析中&#xff0c;我们可以看到调度系统中普遍都使用了块管理方法&#xff1a; _schedule_prefills ... # 比较当前seq需要的物理块,gpu可用物理块之间的数量关系. 决定是否能给当前seq_group分配物…

828华为云征文|部署内容管理系统 Joomla

828华为云征文&#xff5c;部署内容管理系统 Joomla 一、Flexus云服务器X实例介绍1.1 云服务器介绍1.2 应用场景1.3 核心竞争力 二、Flexus云服务器X实例配置2.1 重置密码2.2 服务器连接2.3 安全组配置 三、部署 Joomla3.1 Joomla 介绍3.2 Docker 环境搭建3.3 Joomla 部署3.4 J…

阿里中间件——diamond

一、前言 最近工作不忙闲来无事&#xff0c;仔细分析了公司整个项目架构&#xff0c;发现用到了很多阿里巴巴集团开源的框架&#xff0c;今天要介绍的是中间件diamond. 二、diamond学习笔记 1、diamond简介 diamond是一个管理持久配置&#xff08;持久配置是指配置数据会持久化…

倒计时7天!CCS2024大模型安全与产业应用创新研讨活动诚邀你来

当下&#xff0c;“人工智能”已成为催生新质生产力的重要引擎&#xff0c;大模型在加速产业升级和经济增长的同时&#xff0c;也为网络安全带来了全新的机遇与挑战。「大模型安全与产业应用创新研讨活动」由百度安全、成都无糖信息联合承办&#xff0c;特邀云安全联盟CSA大中华…