vue3 - Element Plus暗黑模式适配、切换及自定义颜色

news2024/12/23 14:59:53

GitHub Demo 地址

在线预览

Element Plus 2.2.0 版本开始支持暗黑模式,启用方式参考 Element Plus 官方文档 - 暗黑模式

demo通过Element PlusVueUse 的 useDark 方法实现具有自动数据持久性的响应式暗黑模式。

安装

npm install element-plus --save
npm install @vueuse/core --save

配置

main.ts导入下面一行代码就会支持暗黑模式

// main.ts
import 'element-plus/theme-chalk/dark/css-vars.css'

然后通过VueUse 的 useDark 方法切换暗黑模式

<template>
 <el-switch v-model="isDark" inline-prompt 
 :active-icon="IconEpMoon" 
 :inactive-icon="IconEpSunny" 
 active-color="var(--el-fill-color-dark)" 
 inactive-color="var(--el-color-primary)" 
 @change="toggleDark" />
 
</template>

<script setup lang="ts">

import IconEpSunny from '~icons/ep/sunny';
import IconEpMoon from '~icons/ep/moon';

const isDark = useDark()
const toggleDark = () => useToggle(isDark)

</script>

自定义全局使用的暗黑模式颜色

有时需要自定义一些可全局使用的颜色,并且支持暗黑模式
可在 import 'element-plus/theme-chalk/dark/css-vars.css'之后导入一个自定义的style文件,如base.scss,
然后在内部实现自定义的颜色

:root {
  --bPageBgColor: #f5f5f5;
  --bTextColor: #000;
  --bBgColor: var(--el-bg-color);
  --bBorderColor: var(--el-input-border-color);
  --bDialogBgColor: var(--el-dialog-bg-color);

  // single page use
  --roleHeaderBgColor: #f1f1f1;
  --selectRowBgColor: #e8f4ff;
}

html.dark {
  --bPageBgColor: #0a0a0a;
  --bTextColor: #fff;
  // --el-bg-color-page: #0a0a0a;
  // --el-bg-color: #141414;

  // single page use
  --roleHeaderBgColor: #0e0e0e;
  --selectRowBgColor: #414243;
}

然后在页面的css中使用设置的自定义颜色

 	color: var(--bTextColor);

效果如下

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

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

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

相关文章

【owt】vs2022 + v141 : 查看WINDOWSSDKDIR

confmfc改为vs2022 + v141 构建 去掉这几个boost库,一样可以链接ok libboost_system-vc141-mt-sgd-x32-1_67.lib libboost_date_time-vc141-mt-sgd-x32-1_67.lib libboost_random-vc141-mt-sgd-x32-1_67.libSDK不在2022或者2017 里面? WINDOWSSDKDIR 在哪里? ##

设计模式之观察者(发布订阅)模式

观察者模式定义了一种一对多的依赖关系&#xff0c;让多个观察者对象同事监听某一个主题对象。这个主题对象在状态发生变化时&#xff0c;会通知所有观察者对象&#xff0c;使它们能够自动更新自己 class Program{static void Main(string[] args){ConcreteSubject concreteSu…

[管理与领导-101]:IT人对高情商的误解?什么是高情商?

目录 前言&#xff1a; 一、人的心理架构 1.1 心理的基本过程 1.2 心理架构 1.3 冰山模型 1.4 IT人不同角度看人的能力层次 二、什么是智商和专业技能 2.1 什么是智商 2.2 什么是专业技能&#xff1a;表层 2.3 IT技术人员的智商和专业技能的重要性 2.4 IT技术人员的…

H.264编码

1.为什么要对视频进行编码 视频是连续的图像序列&#xff0c;由连续的帧构成&#xff0c;一帧即为一幅图像&#xff0c;由于人眼的视觉暂留效应&#xff0c;当帧序列以一定的速率播放时&#xff0c;我们看到的就是动作连续的视频&#xff0c;这么多连续的图像数据如果不经过编码…

在python3上使用pyautogui模拟鼠标键盘操作删除垃圾邮件

在PyPI The Python Package Index网站上搜索pyautogui&#xff0c;可以看到最新版本python3可用&#xff0c;本机环境&#xff1a;win7 64位&#xff0c;python3.8.10。之前写过一篇python2的文章&#xff0c;参考用python使用pyautogui库实现按键精灵模拟鼠标键盘找图的功能_…

如何看待unity新的收费模式

Unity的由来&#xff1a; Unity 是一款跨平台的游戏引擎&#xff0c;由 Unity Technologies 公司开发和维护。Unity 的起源可以追溯到 2002 年&#xff0c;当时 Unity Technologies 创始人之一的 David Helgason 在丹麦创建了一个名为 Over the Edge Entertainment 的游戏开发…

GLTF编辑器教你区分自发光贴图和光照贴图

什么自发光贴图 自发光贴图&#xff08;Emissive Mapping&#xff09;是一种用于在计算机图形学中模拟自发光效果的技术。它可以将光源直接嵌入纹理贴图中&#xff0c;以模拟物体表面具有发光效果的材质。 传统的纹理贴图只能模拟物体表面的颜色和纹理&#xff0c;无法模拟物体…

【Unity3D赛车游戏制作】开始界面场景搭建

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;Uni…

【计算机网络笔记二】网络层

IP 地址分类和子网掩码 IPv4 地址—简称 IP 地址&#xff0c;IP 地址由 32 位比特组成 IP地址现在由因特网名字和数字分配机构 ICANN&#xff08;Internet Corporation for Assigned Names and Numbers&#xff09;进行分配&#xff0c;IP地址的作用&#xff1a;用于网络寻址&…

基于Java的酒店管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

【pytest】 参数化@pytest.mark.parametrize

1.创建 test_parametrize.py 通过 pytest.mark.parametrize 方法设置参数 import pytestimport math#pytest参数化 pytest.mark.parametrize("base,exponent,expected", # 参数变量名称# 每个元组都是一条测试用例测试数据[(2,2,4),(3,3,9),(1,9,1),(0,9,0)],i…

为什么网络安全缺口很大,而招聘却很少?学网络安全真的没有前途吗?

2020年我国网络空间安全人才数量缺口超过了140万&#xff0c;就业人数却只有10多万&#xff0c;缺口高达了93%。这里就有人会问了&#xff1a; 1、网络安全行业为什么这么缺人&#xff1f; 2、明明人才那么稀缺&#xff0c;为什么招聘时招安全的人员却没有那么多呢&#xff1…

多线程进阶学习笔记

文章目录 多线程进阶学习前言1、线程的状态1.1 线程状态相关介绍1.2 状态切换演示示例一示例二示例三 2、线程池2.1 线程池的实现2.2 JDK中的线程池2.2.1 Executors2.2.2 ThreadPoolExecutor2.2.3 线程池的工作原理2.2.4 任务拒绝策略 3、volatile关键字3.1 可见性问题3.2 JMM3…

Learn Prompt-Prompt 高级技巧:HuggingGPT

HuggingGPT是一个 Agent 框架&#xff0c;利用 ChatGPT 作为任务规划器&#xff0c;根据每个模型的描述来选择 HuggingFace 平台上可用的模型&#xff0c;最后根据模型的执行结果生成总结性的响应。这个项目目前已在 Github 上开源&#xff0c;并且有一个非常酷的名字叫做 JARV…

【5G PHY】物理层逻辑和物理天线的映射

博主未授权任何人或组织机构转载博主任何原创文章&#xff0c;感谢各位对原创的支持&#xff01; 博主链接 本人就职于国际知名终端厂商&#xff0c;负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作&#xff0c;目前牵头6G算力网络技术标准研究。 博客…

MQ - 01 消息队列发展史MQ通用架构

文章目录 导图PreMQ 发展史消息队列的发展脉络MQ选型考虑因素消息 和 流消息队列的架构和功能什么情况下会使用消息队列?架构和功能的基本概念架构层面的基本概念功能层面的基本概念4款主流消息队列的区别和建议对比图导图 Pre MQ - 闲聊MQ一二事儿

字符串的大小(补充)

字符串大小 strlen对char b[ ] { ‘a’,‘b’,‘c’};不知道 ’\0‘在哪里&#xff0c;读取的是一个字符串 #include <iostream> using namespace std; int main() {char a[] { "abcde" };char b[] { a,b,c};cout << sizeof(a)/sizeof(a[0]) <&l…

Python函数绘图与高等代数互融实例(一):正弦函数与余弦函数

Python函数绘图与高等代数互融实例(一):正弦函数与余弦函数 Python函数绘图与高等代数互融实例(二):闪点函数 Python函数绘图与高等代数互融实例(三):设置X|Y轴|网格线 Python函数绘图与高等代数互融实例(四):设置X|Y轴参考线|参考区域 Python函数绘图与高等代数互融实例(五…

运营商停止提供公网IP地址,如何远程访问网络服务?

前段时间&#xff0c;广州电信宣布自2023年10月1日起&#xff0c;将不再为新装宽带和双栈宽带的用户提供公网IPv4地址。其实&#xff0c;自去年开始&#xff0c;中国三大运营商的各地分公司都纷纷宣布停止提供公网IPv4地址&#xff0c;这一决策的理由也都是IPv4公网地址资源已经…