前言

element-plus@2.2.0 已经开始支持暗黑模式了

通过在html标签上添加一个名为 dark 的类来启用

基于 vue3 & element-plus 的项目现在可以方便的添加暗黑模式

一、基本使用

因为是通过在html标签上添加 dark 类,可以自行实现切换

但为了方便切换以及进一步的定制化,官方推荐使用 useDark | VueUse

示例:以下,基于 element-plus switch组件 创建了一个暗黑模式开关组件,将它放入菜单栏,就可以方便地切换模式了

<script setup>
import { useDark, useToggle } from '@vueuse/core'const isDark = useDark()
const toggleDark = useToggle(isDark)</script><template><span @click.stop="toggleDark()">暗黑模式</span><el-switch size="small" v-model="isDark"/>
</template>

进一步定制化可查阅官方文档

二、自定义深色样式

暗黑模式中,一旦混入非深色样式,就会非常难看刺眼,一些自定义样式的暗黑模式适配是少不了的

1、深色样式

element-plus定义了一些暗黑模式下的变量,满足其自身样式的暗黑模式适配

项目中设定了颜色的样式是无法自动适配的,需要我们手动写一套深色样式来覆盖

html.dark {.my-dialog {background-color: #304156;color: #bfcbd9;}
}

2、变量覆盖

一些反复使用的样式可以定义成变量重用,这样,就可以通过简单的变量覆盖来适配暗黑模式

:root {--theme-color: #409EFF;
}
html.dark {--theme-color: #135fad;
}
.demo-class {background-color:var(--theme-color)}
.demo-class-one button {color:var(--theme-color)}

3、element-plus变量覆盖

如果想更改element-plus默认的深色样式,可再次定义并覆盖之。为了正确覆盖,下述样式需在引入element-plus样式后引入

src/styles/demo.scss:

html.dark {/* 覆盖element-plus默认深色背景色 */--el-bg-color: #626aef;.el-button--primary {--el-button-text-color: #ededed;}
}

main.js:

import 'element-plus/dist/index.css'
import './styles/demo.scss'

4、scss变量

scss定义变量,并在其它样式中引入使用。结合css变量,也可以轻松实现暗黑模式的适配

src/styles/variables.scss:

$menuBg:var(--menuBg);
$menuActiveText:var(--themeColor);
$btnColor: var(--themeColor);

src/styles/index.scss:

@import './variables.scss';:root {--themeColor: #409EFF;--menuBg: #304156;
}
html.dark {--themeColor: #46ACFF;--menuBg: #263445;
}

main.js:

import './styles/index.scss'

话说回来,如果只是当作css变量一样使用scss变量,那为何不直接使用css变量呢?况且,css变量还可以使用js更改之

三、暗黑模式下的图片

暗黑模式下图片处理

在暗黑模式下显示图片,部分会比较亮,刺眼。可以使用CSS滤镜,设置图片的亮度、饱和度
除图片外,可将以图片为背景图的容器加上类 dark-img-bg 或其它css选择器

html.dark {img,.dark-img-bg {filter:brightness(0.8) saturate(1.25)}
}

基于 vue3 element-plus 的暗黑模式相关推荐

  1. 基于vue3 element plus form 表单的二次封装

    记录一下开发中对form表单的二次封装及使用 前言 在我们的日常工作中经常会使用到form表来满足提交需求,那么将form表单封装成组件将会大大提高我们的工作效率,避免更多重复代码的书写,只需一些简单 ...

  2. 基于 vue3.x + vite + element plus,适配手机、平板、pc 的后台开源免费模板库

    介绍 vue-next-admin 基于 vue3.x + CompositionAPI + typescript + vite + element plus + vue-router-next + ...

  3. 微信iOS版内测暗黑模式;涉嫌恶意举报,社交平台Soul运营合伙人被批捕;AWS推出基于Linux开源操作系统 | 极客头条...

    整理 | 屠敏 头图 | CSDN 下载自东方 IC 快来收听极客头条音频版吧,智能播报由标贝科技提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦 ...

  4. vite打包快几款基于vue3和vite的开箱即用的中后台管理模版

    vite打包快的原因: 冷启动 1.esbuild构建依赖,go语言编写多线程打包. 2.原生的esm方式提供源码,浏览器分担了一部分工作. HMR热更新 1.缓存机制,利用浏览器http头部,源码模 ...

  5. 使用Vue3+Element Plus开发Chrome插件

    使用Vue3+Element Plus开发Chrome插件 引言 初始Vue项目的创建 Element-Plus组件的安装及导入 其他文件配置 .eslintrc.js文件 vue.config.js ...

  6. 多款非常优秀的基于 vue3.x 、Native UI、TypeScript 的中后台管理系统模板

    前言 今天给大家分享5款开源且非常优秀的基于 vue3.x . Native UI 的中后台管理系统模板,助力大家快速开发一个中后台管理系统 Soybean Admin 简介 Soybean Admi ...

  7. 为什么 APP 纷纷开发“暗黑模式”?优酷最佳实践总结

    简介: < 优酷 APP 全量支持"暗黑模式" 设计与技术完整总结>正式发布-- ​ 一.缘起 随着iOS 13和Android 10的正式发布,一个名词"暗 ...

  8. 苹果iOS 13暗黑模式概念图曝光 将于iOS 13.1版本更新

    iOS的暗黑模式一直是广大用户迫切关注的功能之一.此前在iOS 12发布之际,很多用户都非常期待苹果可以推出基于iOS的深色主题模式,网友们也将这种模式称为"暗黑模式".iOS 1 ...

  9. Google Chrome进入暗黑模式

    Google Chrome进入暗黑模式 启用此功能后,Chrome 会让用户选择各种设置,以确定浏览器如何强制在网站上使用黑暗模式主题. 各种设置如下: Enabled (启用) Enabled wi ...

最新文章

  1. Unity3D常用代码总结
  2. 局域网交换(交换机三大原理.基本配置)
  3. VC++ 模拟quot;CLICK事件quot;关闭指定窗体
  4. java获取文件夹下所有文件的名称
  5. Redis根据是否存在设置值
  6. Java单层循环实现输出九九乘法表
  7. 前端学习(1927)vue之电商管理系统电商系统之美化一层循环的UI结构for循环渲染第三层结构
  8. 计算机的3类系统总线分别是_《深入理解计算机系统》读书笔记—第六章、存储器层次结构...
  9. Java开发笔记(一百二十八)Swing的图标
  10. 罗斯蒙特电磁流量计8723说明书_罗斯蒙特电磁流量计8732EM变送器信号处理算法说明...
  11. java severlet 例子_Java开发Servlet实例
  12. STATA软件进行meta分析,在界面显示meta分析
  13. 安川机器人报错_安川机器人伺服驱动器常见的报警代码
  14. 如何学习 COMSOL 多物理场仿真软件?必备教程
  15. teraterm 执行sql命令_Tera Term怎么安装?Tera Term安装使用详细图文教程
  16. CAD卸载不干净不能重新安装(恶心死我了)
  17. java中如何将一个对象,空值转换成空字符串
  18. ubuntu(17):ubuntu下wps缺失字体百度网盘永久链接与安装方法
  19. NC20860 兔子的区间密码
  20. Linux设置非root用户启动程序

热门文章

  1. java jsp面积怎么算,JSP 课后作业:编写 Tag 文件计算矩形、圆形面积
  2. 人工智能,你欠我们一个解释
  3. 关于模型的过拟合与欠拟合
  4. 从开发转到安全渗透工程师,是我做的最对的决定
  5. EasyExcel工具类封装, 做到一个函数完成简单的读取和导出
  6. python好玩游戏的物品清单_Python学习笔记函数之小结好玩游戏的物品清单
  7. P94-好玩游戏的物品清单升级-列表到字典的函数
  8. AppStore的渠道推⼴数据统计问题
  9. Docker三大核心之容器
  10. Numpy中的数组变形操作01——reshape() 重塑, flatten()/reval() 扁平化