目录
一、基本使用
二、自定义深色样式
1、深色样式
2、变量覆盖
3、element-plus变量覆盖
4、scss变量
三、暗黑模式下的图片
首页 web前端 Vue.js 基于vue3和element-plus的暗黑模式怎么实现

基于vue3和element-plus的暗黑模式怎么实现

May 13, 2023 pm 06:37 PM
vue3 element-plus

    一、基本使用

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

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

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

    <script setup>
    import { useDark, useToggle } from &#39;@vueuse/core&#39;
    
    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 &#39;element-plus/dist/index.css&#39;
    import &#39;./styles/demo.scss&#39;
    登录后复制

    4、scss变量

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

    src/styles/variables.scss:

    $menuBg:var(--menuBg);
    $menuActiveText:var(--themeColor);
    $btnColor: var(--themeColor);
    登录后复制

    src/styles/index.scss:

    @import &#39;./variables.scss&#39;;
    
    :root {
      --themeColor: #409EFF;
      --menuBg: #304156;
    }
    html.dark {
      --themeColor: #46ACFF;
      --menuBg: #263445;
    }
    登录后复制

    main.js:

    import &#39;./styles/index.scss&#39;
    登录后复制

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

    三、暗黑模式下的图片

    CodePen上发现的一行代码的方案 Dark mode image filter

    其实是通过使用 CSS3 filter 设置图片的亮度、饱和度:

    filter: brightness(0.8) saturate(1.25);

    在暗黑模式下显示图片,部分会比较亮,刺眼。可以使用CSS滤镜,设置图片的亮度、饱和度

    除图片外,可将以图片为背景图的容器加上类 dark-img-bg 或其它css选择器

    html.dark {
      img,
      .dark-img-bg {filter:brightness(0.8) saturate(1.25)}
    }
    登录后复制

    以上是基于vue3和element-plus的暗黑模式怎么实现的详细内容。更多信息请关注PHP中文网其他相关文章!

    本站声明
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

    热AI工具

    Undresser.AI Undress

    Undresser.AI Undress

    人工智能驱动的应用程序,用于创建逼真的裸体照片

    AI Clothes Remover

    AI Clothes Remover

    用于从照片中去除衣服的在线人工智能工具。

    Undress AI Tool

    Undress AI Tool

    免费脱衣服图片

    Clothoff.io

    Clothoff.io

    AI脱衣机

    Video Face Swap

    Video Face Swap

    使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

    热门文章

    <🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
    3 周前 By 尊渡假赌尊渡假赌尊渡假赌
    北端:融合系统,解释
    3 周前 By 尊渡假赌尊渡假赌尊渡假赌
    Mandragora:巫婆树的耳语 - 如何解锁抓钩
    3 周前 By 尊渡假赌尊渡假赌尊渡假赌

    热工具

    记事本++7.3.1

    记事本++7.3.1

    好用且免费的代码编辑器

    SublimeText3汉化版

    SublimeText3汉化版

    中文版,非常好用

    禅工作室 13.0.1

    禅工作室 13.0.1

    功能强大的PHP集成开发环境

    Dreamweaver CS6

    Dreamweaver CS6

    视觉化网页开发工具

    SublimeText3 Mac版

    SublimeText3 Mac版

    神级代码编辑软件(SublimeText3)

    热门话题

    Java教程
    1666
    14
    CakePHP 教程
    1425
    52
    Laravel 教程
    1324
    25
    PHP教程
    1272
    29
    C# 教程
    1251
    24
    如何通过vue和Element-plus实现表格的可编辑和行选择 如何通过vue和Element-plus实现表格的可编辑和行选择 Jul 17, 2023 am 09:43 AM

    如何通过vue和Element-plus实现表格的可编辑和行选择引言:在开发Web应用程序时,表格是经常使用的组件之一。而表格的可编辑和行选择功能是很常见和实用的需求。在Vue.js框架中,结合Element-plus组件库可以轻松实现这两个功能。本文将介绍如何通过Vue和Element-plus实现表格的可编辑和行选择功能,并提供相应的代码示例。一、项目准

    如何利用vue和Element-plus实现分步表单和表单校验 如何利用vue和Element-plus实现分步表单和表单校验 Jul 17, 2023 pm 10:43 PM

    如何利用Vue和ElementPlus实现分步表单和表单校验在Web开发中,表单是非常常见的用户交互组件之一。而对于复杂的表单,我们常常需要进行分步填写以及表单校验的功能。本文将介绍如何利用Vue和ElementPlus框架来实现这两个功能。一、分步表单分步表单指的是将一个大表单分割为几个小步骤,用户需要按照步骤进行填写。我们可以利用Vue的组件化和路由

    如何使用vue和Element-plus实现上传和下载文件功能 如何使用vue和Element-plus实现上传和下载文件功能 Jul 18, 2023 pm 12:28 PM

    如何使用Vue和ElementPlus实现上传和下载文件功能引言:在Web应用程序中,文件的上传和下载功能非常常见。本文将介绍如何使用Vue和ElementPlus来实现文件的上传和下载功能。通过示例代码,可以简单直观地了解如何使用Vue和ElementPlus来实现这些功能。一、安装和导入ElementPlus安装ElementPlus在Vue项

    Vue3如何实现刷新页面局部内容 Vue3如何实现刷新页面局部内容 May 26, 2023 pm 05:31 PM

    想要实现页面的局部刷新,我们只需要实现局部组件(dom)的重新渲染。在Vue中,想要实现这一效果最简便的方式方法就是使用v-if指令。在Vue2中我们除了使用v-if指令让局部dom的重新渲染,也可以新建一个空白组件,需要刷新局部页面时跳转至这个空白组件页面,然后在空白组件内的beforeRouteEnter守卫中又跳转回原来的页面。如下图所示,如何在Vue3.X中实现点击刷新按钮实现红框范围内的dom重新加载,并展示对应的加载状态。由于Vue3.X中scriptsetup语法中组件内守卫只有o

    vue3+vite:src使用require动态导入图片报错怎么解决 vue3+vite:src使用require动态导入图片报错怎么解决 May 21, 2023 pm 03:16 PM

    vue3+vite:src使用require动态导入图片报错和解决方法vue3+vite动态的导入多张图片vue3如果使用的是typescript开发,就会出现require引入图片报错,requireisnotdefined不能像使用vue2这样imgUrl:require(’…/assets/test.png’)导入,是因为typescript不支持require所以用import导入,下面介绍如何解决:使用awaitimport

    如何利用vue和Element-plus实现消息通知和弹窗提示 如何利用vue和Element-plus实现消息通知和弹窗提示 Jul 17, 2023 pm 10:42 PM

    如何利用Vue和ElementPlus实现消息通知和弹窗提示简介:在Web应用开发中,消息通知和弹窗提示是非常重要的功能之一。Vue作为一种流行的前端框架,结合ElementPlus这个优秀的UI库,能够轻松地实现各种弹窗提示和消息通知的功能。本文将介绍如何在Vue项目中使用ElementPlus组件库来实现消息通知和弹窗提示功能,并附上相关代码示例。

    如何利用vue和Element-plus实现数据的导出和打印功能 如何利用vue和Element-plus实现数据的导出和打印功能 Jul 18, 2023 am 09:13 AM

    如何利用Vue和ElementPlus实现数据的导出和打印功能近年来,随着前端开发的迅速发展,越来越多的网页应用需要提供数据导出和打印功能,以满足用户对数据的多样化使用需求。Vue作为一种流行的JavaScript框架,配合ElementPlus组件库的使用,可以轻松实现数据的导出和打印功能。本文将介绍一种基于Vue和ElementPlus的数据导出和

    如何通过vue和Element-plus实现自动完成和自动填充 如何通过vue和Element-plus实现自动完成和自动填充 Jul 17, 2023 pm 06:45 PM

    如何通过Vue和ElementPlus实现自动完成和自动填充引言:在现代网页开发中,表单的自动完成和自动填充是一个重要的功能要求。它能提高用户体验,减少重复输入的繁琐和错误。本文将介绍如何使用Vue和ElementPlus来实现自动完成和自动填充功能,并提供相应的代码示例。一、什么是自动完成和自动填充自动完成(Autocomplete):当用户在一个文本

    See all articles