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

element-plus主题换色

提示本篇暂未完善全仅仅提供思路具体的实现可以参考我这篇文章验证可行推荐使用该链接方式实现换色主题方式是通过切换主题的方式实现换色例如blue、green不推荐仅参考逻辑。原因1.不好更改element-plus的默认css变量2.对于我的项目基于element-plus封装了公司组件库且引入项目使用无法将修改好的element-plus的css变量渗透到公司的组件库文章目录一、步骤一、步骤1.src/style/element.scss// index.scssforwardelement-plus/theme-chalk/src/common/var.scsswith($colors:(white:#ffffff,black:#000000,primary:(base:#007d7b),success:(base:#8bc34a),warning:(base:#ffc107),danger:(base:#f56c6c),error:(base:#ff5722),info:(base:#909399)));// use element-plus/theme-chalk/dark/css-vars.css2.多主题配置src/style/theme_index.scss// 基础颜色变量保留原始配置$color-map:(primary:#409eff,success:#67c23a,warning:#e6a23c,danger:#f56c6c,info:#909399,text-primary:#303133,text-regular:#606266,text-secondary:#909399,text-placeholder:#c0c4cc,border-base:#dcdfe6,border-light:#e4e7ed,border-lighter:#ebeef5,border-extra-light:#f2f6fc,background-base:#f5f7fa);// 基础2$color-map2:(button-hover-bg-color:red);// 自定义变量模板新增$custom-vars-template:(chart:(color-1:red,color-2:red));// 主题扩展保留原始新增自定义$themes:(blue:(// 原始Element变量primary:#2e72b1,success:#2bc667,warning:#ffb800,danger:#ff5722,info:#9e9e9e,text-primary:#1f2d3d,text-regular:#324057,border-radius-base:4px,box-shadow-light:02px 12px0rgba(46,114,177,0.1),// 新增自定义变量custom:map-merge($custom-vars-template,(special:(shadow-opacity:blue,highlight-color:#26c6da),my:(color1:#1fff)))),green:(primary:#007d7b,success:#8bc34a,warning:#ffc107,danger:#f44336,info:#607d8b,text-primary:#263238,text-regular:#455a64,text-secondary:#78909c,text-placeholder:#b0bec5,// 绿色主题特有调整border-radius-base:6px,box-shadow-light:02px 12px0rgba(0,125,123,0.1),// 新增自定义变量custom:map-merge($custom-vars-template,(special:(highlight-color:#26c6da),my:(color1:#f1ff)))));// 生成CSS变量保留所有功能:root{each $theme,$configin$themes{[data-theme#{$theme}]{// 1. 输出原始Element变量each $key,$valueinmap-merge($color-map,$config){if$key!custom{--el-color-#{$key}:#{$value};}}// 解决不是--el-color的颜色each $key,$valueinmap-merge($color-map2,$config){if$key!custom{--el-#{$key}:#{$value};}}// 2. 保留衍生颜色计算// --el-color-primary-light-3: mix(#f1ff, map-get($config, primary), 30%);// --el-color-primary-light-5: mix(#f1ff, map-get($config, primary), 50%);// --el-color-primary-light-7: mix(#f1ff, map-get($config, primary), 70%);// --el-color-primary-light-9: mix(#f1ff, map-get($config, primary), 90%);// 3. 保留组件变量--el-border-radius-base:#{map-get($config,border-radius-base)};--el-box-shadow-light:#{map-get($config,box-shadow-light)};// 4. 新增自定义变量输出each $category,$varsinmap-get($config,custom){each $name,$valuein$vars{if$value!null{--app-#{$category}-#{$name}:#{$value};}}}}}}3.构建配置vite.config.ts 配置themes和additionalData{defineConfig}fromviteimportvuefromvitejs/plugin-vueexportdefaultdefineConfig({plugins:[vue(),Components({dts:false,// 关闭自动生成 components.d.tsdirs:[src/components],resolvers:[ElementPlusResolver({importStyle:sass,themes:[light,dark]// 关键配置})]}),],css:{preprocessorOptions:{scss:{additionalData:use /style/element.scss as *; use /style/theme_index.scss as *;}}}})4.‌主样式入口文件‌通常在src/styles/main.scss中引入主题配置useelement-plus/theme-chalk/src/index.scss;use./theme_index.scssastheme;5.‌切换控制器/src/utils/theme.jsexportfunctionswitchTheme(themeName){// console.log(%c【 themeName 】打印, color:#fff;background:#0f0, themeName)// const styleEl document.createElement(style)// styleEl.id theme-style// styleEl.textContent :root { include theme-vars(${themeName}); }// console.log(styleEl.textContent);// const oldStyle document.getElementById(theme-style)// oldStyle ? document.head.replaceChild(styleEl, oldStyle)// : document.head.appendChild(styleEl)// console.log(%c【 oldStyle 】打印, color:#fff;background:#0f0, oldStyle)document.documentElement.setAttribute(data-theme,themeName)}6.‌主题切换组件调用‌在组件中使用切换逻辑el-button clicktoggleTheme0{{currentThemelight?暗色模式:亮色模式}}/el-buttonimport{switchTheme}from../utils/themeletthemValueref(blue)// 函数consttoggleTheme0(){switchTheme(themValue.valueblue?green:blue)// 调用主题切换方法themValue.valuethemValue.valueblue?green:blue}7.main.js初始化主题document.documentElement.setAttribute(data-theme,blue)

相关文章:

element-plus主题换色

提示:本篇暂未完善全,仅仅提供思路 具体的实现可以参考我这篇文章,验证可行:推荐使用该链接方式实现换色 主题方式是通过切换主题的方式实现换色,例如blue、green,不推荐,仅参考逻辑。 原因&a…...

长期使用 Taotoken Token Plan 套餐在成本控制方面的实际感受

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 长期使用 Taotoken Token Plan 套餐在成本控制方面的实际感受 1. 从按需付费到计划订阅的转变 最初接触 Taotoken 时,…...

Circuit实战教程:10分钟构建你的第一个Compose应用

Circuit实战教程:10分钟构建你的第一个Compose应用 【免费下载链接】circuit ⚡️ A Compose-driven architecture for Kotlin and Android applications. 项目地址: https://gitcode.com/gh_mirrors/cir/circuit Circuit是一个基于Compose驱动的Kotlin和And…...

终极指南:如何在Windows上简单快速实现SSH远程文件系统挂载

终极指南:如何在Windows上简单快速实现SSH远程文件系统挂载 【免费下载链接】sshfs-win SSHFS For Windows 项目地址: https://gitcode.com/gh_mirrors/ss/sshfs-win SSHFS-Win是一个革命性的开源工具,它让你能够在Windows操作系统中通过SSH协议直…...

Linux查看文件内容

🏷️ 标签:Linux 查看文件 文件类型 Linux命令 运维 后端开发 📝 适用人群:Linux 新手、运维、后端、学生、实训使用 💡 亮点:包含 查看文件类型 查看整个文件 查看部分文件,结构清晰、示例可…...

KaTrain终极指南:用AI围棋教练快速提升你的棋艺水平

KaTrain终极指南:用AI围棋教练快速提升你的棋艺水平 【免费下载链接】katrain Improve your Baduk skills by training with KataGo! 项目地址: https://gitcode.com/gh_mirrors/ka/katrain 你是否曾经在对局后感到困惑,不知道自己的失误究竟在哪…...

如何用嘎嘎降AI处理汉语言文学论文:文学类毕业论文降AI免费完整操作教程

如何用嘎嘎降AI处理汉语言文学论文:文学类毕业论文降AI免费完整操作教程 帮同学处理过汉语言文学论文降AI教程,流程基本是固定的,记录下来供参考。 主推工具:嘎嘎降AI(www.aigcleaner.com),4.…...

Hertz.dev实时音频对话实战:构建智能语音助手的最佳实践指南

Hertz.dev实时音频对话实战:构建智能语音助手的最佳实践指南 【免费下载链接】hertz-dev first base model for full-duplex conversational audio 项目地址: https://gitcode.com/gh_mirrors/he/hertz-dev Hertz.dev是一个开创性的全双工会话音频基础模型&a…...

如何快速掌握ncmdump:网易云音乐NCM格式解密完整指南

如何快速掌握ncmdump:网易云音乐NCM格式解密完整指南 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 你是否曾为网易云音乐的NCM加密格式而烦恼?精心收藏的音乐无法在其他播放器中使用?ncmdump正是…...

OpenClaw 本地部署避坑指南|环境配置 + 故障排查全流程

🦞 OpenClaw 本地部署避坑指南|环境配置 故障排查全流程 开源 AI 自动化工具OpenClaw(小龙虾) 凭借本地私有化部署、无侵入系统交互、全流程自动化执行等核心特性,在开发者社区快速普及。轻量化架构与高扩展性&#…...

如何用嘎嘎降AI处理心理学论文:心理学研究生毕业论文降AI4.8元完整操作教程

如何用嘎嘎降AI处理心理学论文:心理学研究生毕业论文降AI4.8元完整操作教程 关于心理学论文降AI教程,有几个细节提前知道能少走很多弯路。 核心用嘎嘎降AI(www.aigcleaner.com),4.8元,达标率99.26%。这篇…...

3分钟搞定百度网盘提取码:新手也能快速上手的终极解决方案

3分钟搞定百度网盘提取码:新手也能快速上手的终极解决方案 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否经常遇到这样的烦恼:朋友分享的百度网盘链接明明就在眼前,却因为缺少那个关…...

MailHog邮件测试工具:开发者的SMTP调试终极解决方案

MailHog邮件测试工具:开发者的SMTP调试终极解决方案 【免费下载链接】MailHog Web and API based SMTP testing 项目地址: https://gitcode.com/gh_mirrors/ma/MailHog 作为现代软件开发过程中不可或缺的一环,邮件功能测试常常让开发者头疼不已。…...

从“佩戴感知”到“无感融入”:UWB vs 镜像视界——空间智能的代际跃迁

从“佩戴感知”到“无感融入”:UWB vs 镜像视界——空间智能的代际跃迁空间智能产业正迎来划时代理念革新,行业认知正式完成从主动佩戴式感知向全域无感化融入的核心转变。以UWB为代表的传统定位技术,始终停留在依托外接设备实现信息采集的初…...

【Lovable开发者私藏资源包】:含官方未公开API文档、调试插件源码与CI/CD配置清单

更多请点击: https://kaifayun.com 第一章:Lovable应用开发完整教程 Lovable 是一个面向现代 Web 应用的轻量级响应式框架,专为构建高交互性、可访问性强且易于维护的单页应用(SPA)而设计。它不依赖虚拟 DOM&#xff…...

2036年的病榻前,陪伴我的是“贾维斯”还是我的两个儿子?

《跨越银色浪潮:中国智慧养老的破局与重构》 9/10 老陈的“完美”养老局,在病床上破防了 老陈是以前一位年长的同事,搞了一辈子软件 。退休后,他给自己设计了一套堪称“完美”的养老方案 。 他老伴走得早,两个儿子又都在海外。于是,他的客厅里摆着最新款的陪伴机器人,…...

YOLO综合训练工具X(免环境版 手动/自动标注、一键训练、模型验证、分类器训练、自动截图、批量处理

yolo免环境训练工具 yolo8标注工具 yolo训练工具 yolo8 yolo4 yolo3yolo无需搭建环境训练工具 免环境标注、训练的工具支持版本 yolo3 yolo4 yolo8(电脑显卡必须N卡) [火]可训练模型 cfg weights bin param pt yolo8l.pt yolo8m.pt yolo8n.pt yolo8s.pt yolo8x.pt 一、YOLO免环…...

如何快速掌握UV-UI框架:面向开发者的完整跨平台开发实战指南

如何快速掌握UV-UI框架:面向开发者的完整跨平台开发实战指南 【免费下载链接】uv-ui uv-ui 破釜沉舟之兼容vue32、app、h5、小程序等多端基于uni-app和uView2.x的生态框架,支持单独导入,开箱即用,利剑出击。 项目地址: https://…...

从零到英雄:用AI瞄准技术彻底改变你的FPS游戏体验

从零到英雄:用AI瞄准技术彻底改变你的FPS游戏体验 【免费下载链接】yolov8_aimbot Aim-bot based on AI for all FPS games 项目地址: https://gitcode.com/gh_mirrors/yo/yolov8_aimbot 你是否曾经在激烈的枪战中因为瞄准不准而错失良机?是否羡慕…...

终极指南:如何用TrafficMonitor股票插件打造桌面投资监控中心

终极指南:如何用TrafficMonitor股票插件打造桌面投资监控中心 【免费下载链接】TrafficMonitorPlugins 用于TrafficMonitor的插件 项目地址: https://gitcode.com/gh_mirrors/tr/TrafficMonitorPlugins 还在为错过重要股票行情而烦恼吗?想在工作时…...

《怕你忍不住》的传播入口:情绪临界点如何被记住

从内容传播角度看,《怕你忍不住》的入口不是猎奇,而是一个非常具体的情绪临界点:话快说出口、眼泪快掉下来、冲动快把人推着走。标题先完成识别,读者会知道这不是泛泛的伤感歌。这首歌适合连接很多高频场景。深夜准备发出一条消息…...

Claude Code 总被封号怎么办,用 Taotoken 稳定接入大模型服务

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Claude Code 总被封号怎么办,用 Taotoken 稳定接入大模型服务 许多开发者在日常工作中依赖 Claude Code 作为编程助手&…...

终极环境数据分析工具Ladybug完整指南:5分钟掌握天气数据可视化

终极环境数据分析工具Ladybug完整指南:5分钟掌握天气数据可视化 【免费下载链接】ladybug 🐞 Core ladybug library for weather data analysis and visualization 项目地址: https://gitcode.com/gh_mirrors/lad/ladybug 你是一个文章写手&#…...

终极LuaJIT反编译指南:如何快速恢复丢失的Lua源代码

终极LuaJIT反编译指南:如何快速恢复丢失的Lua源代码 【免费下载链接】luajit-decompiler https://gitlab.com/znixian/luajit-decompiler 项目地址: https://gitcode.com/gh_mirrors/lu/luajit-decompiler 你是否曾面对编译后的LuaJIT字节码文件束手无策&…...

地质建模革命:如何使用GemPy在10分钟内构建专业3D地质模型 [特殊字符]

地质建模革命:如何使用GemPy在10分钟内构建专业3D地质模型 🚀 【免费下载链接】gempy GemPy is an open-source, Python-based 3-D structural geological modeling software, which allows the implicit (i.e. automatic) creation of complex geologic…...

为什么你的ElevenLabs甘肃话输出像“普通话带口音”?5个声学特征参数调试错误导致92%失真率

更多请点击: https://kaifayun.com 第一章:甘肃话语音合成失真的现象学观察 甘肃话作为中原官话陇中片的代表性方言,其声调曲折性强、入声残留明显、连读变调规则复杂,为语音合成系统带来显著挑战。在部署基于Tacotron2WaveGlow的…...

GitHub Desktop汉化工具:轻松掌握中文界面切换的完整指南

GitHub Desktop汉化工具:轻松掌握中文界面切换的完整指南 【免费下载链接】GitHubDesktop2Chinese GithubDesktop语言本地化(汉化)工具 【GitHub桌面客户端中文汉化】 项目地址: https://gitcode.com/gh_mirrors/gi/GitHubDesktop2Chinese 还在为GitHub Desk…...

解决 Claude Code 频繁封号与 Token 不足的替代方案

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 解决 Claude Code 频繁封号与 Token 不足的替代方案 对于依赖 Claude Code 进行代码生成与对话的开发者而言,服务中断和…...

终极直播输入可视化指南:如何用开源工具展示键盘鼠标操作

终极直播输入可视化指南:如何用开源工具展示键盘鼠标操作 【免费下载链接】input-overlay Show keyboard, gamepad and mouse input on stream 项目地址: https://gitcode.com/gh_mirrors/in/input-overlay 在游戏直播、教学演示或技术分享中,观众…...

UniVRM完整指南:Unity中VRM格式的7个实战技巧与高效配置方法

UniVRM完整指南:Unity中VRM格式的7个实战技巧与高效配置方法 【免费下载链接】UniVRM UniVRM is a gltf-based VRM format implementation for Unity. English is here https://vrm.dev/en/ . 日本語 はこちら https://vrm.dev/ 项目地址: https://gitcode.com/gh…...