Wiidede's blog Wiidede's blog
  • 前端
  • Python
  • 算法
  • 生活
  • 其他
  • 分类
  • 标签
  • 归档
  • 关于我
  • 赞赏
  • 我的小站 (opens new window)
GitHub (opens new window)

Wiidede

小的的写前端
  • 前端
  • Python
  • 算法
  • 生活
  • 其他
  • 分类
  • 标签
  • 归档
  • 关于我
  • 赞赏
  • 我的小站 (opens new window)
GitHub (opens new window)
  • 整理一些css样式
  • vue隔代组件层层动态插槽并且附带数据
  • vue判断字符串是否溢出来显示弹窗、解决el-table tooltip 内过多导致无法显示,内容闪烁
  • 整理一些js写法
  • ElementUI timePicker 增加此刻按钮 引发的dom操作的学习
  • 毕业设计(水表识别)前端知识整理
  • html小知识
  • axios请求api然后下载文件
  • vue3+ts根据高度改变元素的透明度
  • vue3 + ElementPlus 换肤方案(Css变量)
    • 前言
    • 改变主题色
    • 换肤
  • Moment的一些使用方法
  • echarts基础vue组件
  • element UI el-date-picker 年月日切换组件
  • 可以不选择的el-radio单选框
  • vue的小技巧总结
  • 全局动态权限判断(Vue指令)
  • vue-anchor 探索
  • Deep Dive with Evan You 笔记
  • 前端基础知识查漏补缺
  • WebPack 知识总结
  • 我写的一些可以日后参考的代码
  • 接口变化后,封装接口函数,改变返回内容
  • 项目组件整理
  • 前端框架设计想发
  • 全局进度条
  • 带有token的图片vue组件:authImg,使用axios下载图片
  • 前端npm包推荐
  • 给ElInputNumber添加prefix
  • ElPagination添加页数总数
  • el-tab做成chrome类似的tab样式
  • vue-grid-layout-组件配置
  • 项目数据字典封装
  • 图表组件响应式探索
  • ElementPlus表格table列自动合并composition
  • 简单的curd组件封装
  • ElementPlus表格自定义合计列composition
  • 一些处理表格数据composition api
  • div内容溢出后,内容向左悬浮,vue组件封装
  • 文本数字溢出后,按比例缩小,vue组件封装
  • 表格使用async-validator检验composition
  • ElementPlus Form一些简单的组件整合
  • arco-design快速使用tailwind的颜色、unocss动态颜色
  • 前端
wiidede
2021-08-25

vue3 + ElementPlus 换肤方案(Css变量)

# vue3 + ElementPlus 换肤方案(Css变量)

# 前言

你可以在这里直接看到效果 设置主题色 + 换肤 (opens new window)

有了css变量,可以方便的在样式中使用统一的颜色,然后通过js修改,就能很快地改变整个界面的样式

定义css变量:(你也可以具体定义在某一选择器上)

:root {
  --color: #808080
}
1
2
3

使用css变量:

div {
  color: var(--color);
}

.someClass:hover {
  background: var(--color);
}
1
2
3
4
5
6
7

# 改变主题色

注意到 Element Plus 的scss变量都编译成了css变量,最新的ElementUI推荐全局引入,那我们覆盖它的样式, 也就是自己的样式写在ElementPlus样式的后面

import 'element-plus/dist/index.css';
import './style/index.scss';
1
2

比如本项目的主题色使用css变量:

--main

然后把Element UI的变量的值设为这个变量

--el-color-primary: var(--main)

这样只需要修改主题色,整个UI的颜色都可以改变

在js中可以这样修改css变量:

document.documentElement.style.setProperty('--main', '#808080');
1

# 换肤

本项目还准备了换肤功能,主要是准备两套皮肤方案

:root下面的是默认的皮肤

[data-theme="dark"]下面是dark的皮肤

:root {
  --background: white;
  --font-color: #303133;
}


[data-theme="dark"] {
  --background: #383838;
  --font-color: #eeeeee;
}
1
2
3
4
5
6
7
8
9
10

在js中这样修改主题方案:

document.documentElement.setAttribute('data-theme', 'dark');
1

这样,html标签上会多一个data-theme="dark"的属性,样式也会变成[data-theme="dark"]下的样式

#Vue#Element Plus#CSS
上次更新: 2023/06/01, 12:40:50

← vue3+ts根据高度改变元素的透明度 Moment的一些使用方法→

Theme by Vdoing | Copyright © 2021-2023 Wiidede | Website use MIT License | Article content & logo use CC-BY-SA-4.0 License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式