element-plus简易一键换肤

article/2025/7/12 11:39:00

哈喽,大家好我是小衰,勤勤恳恳一码农,低级前端工程师,不吃甲方零食下午茶,热爱用双手解决问题,白天用双手敲代码 晚上用双手做一些正能量的事情,夜深了,由于小哀在公司勤勤恳恳的努力下 ”毕业“了,看着满世界的程序员,再看看自己,默默的打开电脑,照常进入了深夜学习的网站,突然微信弹出来一条消息。

 咦~这些女人真是搞不懂,怎么能耽误我写代码学习的时间呢?变脸比翻书还快,等等变脸,那切换皮肤是怎么实现的呢?

今天和大家分享的是element-plus一键换肤功能,最近小衰在学习vue3,用的UI库是element-plus

官网地址

传统的切换模式是直接写两套样式直接替换class类名,这样的工作无疑很繁琐,工作量也不小,

从element-plus官网可以看到可以采用覆盖css变量的形式达到换肤的目的,

今天小衰介绍的是使用vue3+element-plus+vite的形式 简单实现暗夜模式的切换,话不多说,上车!

创建项目

npm init vite@latest vue3-project --template vue
cd vue3-project
npm install
npm run dev

官方提供例子

安卓所需依赖

    npm i element-plus sass unplugin-vue-components unocss

这里附带一张小衰的依赖截图:

 创建 vite.config.ts

官网提供的例子使用unocss css引擎来写样式

    import path from "path";import { defineConfig } from "vite";import vue from "@vitejs/plugin-vue";import Components from "unplugin-vue-components/vite";import { ElementPlusResolver } from "unplugin-vue-components/resolvers";import Unocss from "unocss/vite";import {presetAttributify,presetIcons,presetUno,transformerDirectives,transformerVariantGroup,} from "unocss";const pathSrc = path.resolve(__dirname, "src");// https://vitejs.dev/config/export default defineConfig({resolve: {alias: {"~/": `${pathSrc}/`,},},css: {preprocessorOptions: {scss: {additionalData: `@use "~/styles/element/index.scss" as *;`,},},},plugins: [vue(),Components({// allow auto load markdown components under `./src/components/`extensions: ["vue", "md"],// allow auto import and register components used in markdowninclude: [/\.vue$/, /\.vue\?vue/, /\.md$/],resolvers: [ElementPlusResolver({importStyle: "sass",}),],dts: "src/components.d.ts",}),// https://github.com/antfu/unocss// see unocss.config.ts for configUnocss({presets: [presetUno(),presetAttributify(),presetIcons({scale: 1.2,warn: true,}),],transformers: [transformerDirectives(), transformerVariantGroup()],}),],});

 在main.ts中使用


import { createApp } from "vue";
import App from "./App.vue";// import "~/styles/element/index.scss";// import ElementPlus from "element-plus";
// import all element css, uncommented next line
// import "element-plus/dist/index.css";// or use cdn, uncomment cdn link in `index.html`import "~/styles/index.scss";
import "uno.css";// If you want to use ElMessage, import it.
import "element-plus/theme-chalk/src/message.scss";const app = createApp(App);
// app.use(ElementPlus);
app.mount("#app");----------------------------------------------------------------
ps:
uno.css原子化css UnoCSS 是一个引擎,是一种 CSS 的架构方式 

拷贝官方demo目录下src/styles/ src/composables/ 到我们自己的目录下

在页面中使用

    <script lang="ts" setup>import { toggleDark } from "~/composables";import { ref } from "vue";import { ElMessage } from "element-plus";defineProps<{ msg: string }>();const count = ref(0);const input = ref("element-plus");const curDate = ref("");const toast = () => {ElMessage.success("Hello");};</script><template><el-config-provider namespace="ep"><button @click="toggleDark()" class="my_button">dark</button><button @click="toggleDark(false)" class="my_button">light</button><el-button type="primary">button</el-button><div class="my-2"><el-input class="m-2" v-model="input" style="width: 200px" /><el-date-pickerclass="m-2"v-model="curDate"type="date"placeholder="Pick a day"></el-date-picker></div><p>Edit<code>styles/element/var.scss</code> to test scss variables.</p><p>Full Example:<ahref="https://github.com/element-plus/element-plus-vite-starter"target="_blank">element-plus-vite-starter</a>| On demand Example:<ahref="https://github.com/element-plus/unplugin-element-plus"target="_blank">unplugin-element-plus/examples/vite</a></p></el-config-provider></template><style>svg {width: 20px;height: 20px;}.img {width: 100%;height: 100%;background-size: 100% 100%;background-attachment: fixed;}.my_button {margin: 10px;width: 50px;height: 20px;}.demonstration {color: var(--el-text-color-secondary);}.el-carousel__item h3 {color: #475669;opacity: 0.75;line-height: 150px;margin: 0;text-align: center;}.el-carousel__item:nth-child(2n) {background-color: #99a9bf;}.el-carousel__item:nth-child(2n + 1) {background-color: #d3dce6;}</style>

写到这简单的一键换肤简单的功能就实现了,写到这里小衰起来伸了伸懒腰,望着窗外,

小衰大脑好像闪过了什么?他好像发现了比写代码更快乐的事情,从之前双目无神、行尸走肉,

好像是一位女生在开导他,每天陪着小衰加班到半夜,一瞬间小衰想通了,写代码是为了生活,为了实现自己的价值,可是生活中为什么一定要完全是代码呢?

人类的祖先,喜欢大长腿,是因为有利于奔跑

喜欢大粗臀,是因为有利于孕育

喜欢那个大,是因为有利于哺乳

对!一定有比写代码更快乐的事情,想到这里小衰赶紧拿起手机,打开每天陪着自己的女生微信框,发了一段语音(帮我解决一下线上bug~) 


http://chatgpt.dhexx.cn/article/lFLVk76b.shtml

相关文章

vue 一键换肤 换主题

该一键换肤只是定义好几个颜色&#xff0c;并进行简单的切换。 在src下的assets文件下面定义一个css文件夹&#xff0c;在对应的文件里面定义_handle.scss和_themes.scss文件&#xff0c;如下&#xff1a; image.png 2.在_themes.scss文件里面定义好需要用到的几个样式。如下…

如何利用 SCSS 实现一键换肤

环境准备 首先我们需要安装 scss 解析环境 npm i sass // 注意 sass-loader 安装需要指定版本 如果安装最新版本会报错 this.getOptions 这个方法未定义 npm i -D sass-loader10.1.0 // 利用 normalize.css 初始化页面样式 npm i -S normalize.css 小技巧 这里讲一个小技巧&a…

项目实现一键换肤的功能

在publick下面分别建立两个文件 一个是默认的一个是夜间的 然后在app。vue入口文件 mounted(){let colorName localStorage.getItem(themes) || defaultlet link document.createElement(link)link.type text/csslink.relstylesheetlink.href /themes/${colorName}.cssdocu…

从零开始Vue3+Element Plus后台管理系统(17)——一键换肤的N种方案

暗黑模式 基于Element Plus和Tailwind CSS灵活的设计&#xff0c;我们很容易在项目中实现暗黑模式&#xff0c;具体可以参考之前的文章《从零开始写一个Vue3Element Plus的后台管理系统(二)——Layout页面布局的实现》 换肤方案 如果需要给用户提供更多主题&#xff0c;更丰…

三步实现Android应用内一键换肤,无需重启应用,无需编写多余代码

古人学问无遗力&#xff0c;少壮工夫老始成。 纸上得来终觉浅&#xff0c;绝知此事要躬行。 --《冬夜读书示子聿》 陆游 换肤效果演示 四种皮肤切换&#xff1a;默认白色、蓝色、绿色和玫瑰红&#xff1a; 前言 先给大家介绍一下现在比较主流的、Star比较多的换肤框架&#…

前端 “一键换肤“ 的 N 种方案

前端瓶子君&#xff0c;关注公众号 回复算法&#xff0c;加入前端编程面试算法每日一题群 前言 现在越来越多的网站都提供了拥有换肤&#xff08;切换主题&#xff09;功能&#xff0c;如 ElementUI[2]&#xff0c;既是为了迎合用户需求&#xff0c;或是为了凸显自己特点&#…

Python装逼指南——五行代码实现批量抠图

你是否曾经想将某张照片中的人物抠出来&#xff0c;然后拼接到其他图片上去&#xff0c;从而可以即使你在天涯海角&#xff0c;我也可以到此一游&#xff1f; 专业点的人使用 PhotoShop 的“魔棒”工具可以抠图&#xff0c;非专业人士可以使用各种美图 APP 来实现&#xff0c;但…

iter()函数联队*、zip()实现序列“定长”拆分——基于iterator特性拆解繁复的单行“装逼代码”,搞明白序列定长拆分“秘法”

Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是基础那么简单…… My CSDN主页、My HOT博、My Python 学习个人备忘录好文力荐、 老齐教室 自学并不是什么神秘的东西&#xff0c;一个人一…

如何在你朋友面前装逼4(程序代码)

大家好&#xff0c;我是不讲武德。今天我来教大家在电脑上画画&#xff0c;非常简单 --------------------------------------------------------------------------------------------------------------------- 第一步&#xff1a;新建一个文本文档 第二步&#xff1a;打开…

dtree树形菜单带搜索复选框单选框插件

dtree树形菜单带搜索复选框单选框插件 用于选择部门或者选择部门下人员 效果如下图 dtree树形菜单带搜索不带单选框复选框 dtree选择部门或者选择部门下人员复选框单选框插件 带搜索 https://download.csdn.net/download/qq_27559331/9885259

OA与帆软BI跨系统用户、部门、岗位同步总结

目录 前言&#xff1a; 一、初衷 1、需要准备啥&#xff1f; 2、同步接口或者数据集 3、建立服务器数据集 代码&#xff1a; 效果&#xff1a; 二、正式同步 1、建立服务器数据集 2、建立服务器树状数据集 3、选择对应关系进行同步 4、等待与设置同步频率 5、注意事项 …

JAVA 对接钉钉API(人员、部门、官方智能工作流)20210527

前言 应公司要求&#xff0c;公司人事HR系统需要对接钉钉考勤数据&#xff0c;所以需要获取钉钉的打卡记录、出差、外出、请假、调岗的数据&#xff0c;然后转换成HR系统数据。 对接前准备 创建应用 1、首先需要管理员登录钉钉开放平台&#xff0c;创建应用。 说明 只有管理…

Element使用级联选择器

Element使用级联选择器 element的级联选择器和select不一样,下拉框我们可以手动定义label和value,只需要将查出来的值循环一下即可 但是级联选择器的视图层是这样的 只有 :options=“options” 这个属性让我们绑定值,没办法绑定他的label和value element官网给的数据结构是这…

研发部的人员素质要求及自我培养

IT行业发展已经走的很远了&#xff0c;纵观世界经济的发展&#xff0c;经济全球化进程明显加快&#xff0c;信息化已成为全球化的迫切需要和必要保证。世界范围的产业结构调整和信息技术进步&#xff0c;必将对中国信息产业的发展产生深刻影响&#xff0c;所以IT行业的前景还是…

2-Springboot集成Flowable之 选择人员的界面自定义开发

目录 效果实现思路1、新建自己的 my-assignment-popup.html2、修改properties-assignment-controller.js 效果 演示地址 代码地址 前端代码地址 实现思路 部门是基于bootstrap-treeview插件实现的&#xff0c;表格是自己用div css写的。其实自己了解angular修改这里应该没有…

用户选择框设计思路

最近新项目要用到选择人员&#xff0c;于是重新在新项目中设计了一版选人框。 效果图如下&#xff1a; 功能部分 一个选人框主要有以下几个展示部分&#xff1a; 人员组织树已选节点信息操作工具栏 这三大部分再细分下各自应有的基础功能&#xff1a; 人员展示部分&…

解读华为的流程与 IT 管理部门

公众号回复&#xff1a;干货&#xff0c;领取价值58元/套IT管理体系文档 公众号回复&#xff1a;ITIL教材&#xff0c;领取最新ITIL4中文教材 更多专业文档请访问 www.itilzj.com 华为&#xff0c;其流程与IT管理部是国内IT部门的发展标杆&#xff0c;负责的是华为各个部门和跨…

人员选择树,搜索自动筛选功能

要实现的功能截图&#xff1a; 要求&#xff1a; 1、点击收件人输入框可以根据拼音自动筛选数据&#xff0c;并且标记已经选择的数据&#xff0c;没有结果的时候提示&#xff0c;相应的更新左边树节点状态 2、勾选树右侧树的节点左侧输入框出现一一对应的节点名称 用到的…

级联选择器el-cascader处理复杂数据(四层、五层数据),回显部门以及部门下的人员

注意&#xff1a;参考第五层的数据处理比较nice 当级联选择器需要绑定的数组不再是简易数据&#xff0c;props涉及的字段不再是一个&#xff0c;而是列表里面套列表 比如&#xff0c;我想要获取部门以及下面的员工&#xff0c;如何显示&#xff1f;如下图1所示&#xff0c;后…