Table of Contents
1. Basic use
2. Custom dark styles
1. Dark style
2. Variable coverage
3. element-plus variable coverage
4. scss variables
3. Pictures in dark mode
Home Web Front-end Vue.js How to implement dark mode based on vue3 and element-plus

How to implement dark mode based on vue3 and element-plus

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

    1. Basic use

    Because by adding the dark class to the html tag, you can switch by yourself

    But in order to facilitate switching and further customization, it is officially recommended to use useDark | VueUse

    Example: Below, a dark mode switch component is created based on the element-plus switch component, and it is placed in the menu bar. You can switch modes easily

    <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>
    Copy after login

    2. Custom dark styles

    In dark mode, once non-dark styles are mixed in, it will be very ugly and dazzling. Some custom-style dark modes Adaptation is indispensable

    1. Dark style

    element-plus defines some variables in dark mode to meet the dark mode adaptation project of its own style

    Styles with colors set in cannot be automatically adapted. We need to manually write a set of dark styles to cover

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

    2. Variable coverage

    Some repeatedly used styles can be defined as Variable reuse, so that you can adapt to the dark mode through simple variable coverage

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

    3. element-plus variable coverage

    If you want to change the default dark style of element-plus, you can Define it again and overwrite it. For correct coverage, the following styles need to be introduced after introducing the element-plus style

    src/styles/demo.scss:

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

    main.js:

    import &#39;element-plus/dist/index.css&#39;
    import &#39;./styles/demo.scss&#39;
    Copy after login

    4. scss variables

    scss defines variables and introduces them into other styles. Combined with css variables, dark mode adaptation can also be easily realized

    src/styles/variables.scss:

    $menuBg:var(--menuBg);
    $menuActiveText:var(--themeColor);
    $btnColor: var(--themeColor);
    Copy after login

    src/styles/index.scss:

    @import &#39;./variables.scss&#39;;
    
    :root {
      --themeColor: #409EFF;
      --menuBg: #304156;
    }
    html.dark {
      --themeColor: #46ACFF;
      --menuBg: #263445;
    }
    Copy after login

    main .js:

    import &#39;./styles/index.scss&#39;
    Copy after login

    Having said that, if you just use scss variables as css variables, then why not use css variables directly? Moreover, css variables can also be changed using js

    3. Pictures in dark mode

    One line of code solution found on CodePen Dark mode image filter

    In fact, the brightness and saturation of the image are set by using CSS3 filter:

    filter: brightness(0.8) saturate(1.25);

    In dark mode When displaying pictures, some parts will be brighter and dazzling. You can use CSS filters to set the brightness and saturation of images

    In addition to images, you can add the class dark-img-bg or other css selectors to containers that use images as background images

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

    The above is the detailed content of How to implement dark mode based on vue3 and element-plus. For more information, please follow other related articles on the PHP Chinese website!

    Statement of this Website
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

    Hot AI Tools

    Undresser.AI Undress

    Undresser.AI Undress

    AI-powered app for creating realistic nude photos

    AI Clothes Remover

    AI Clothes Remover

    Online AI tool for removing clothes from photos.

    Undress AI Tool

    Undress AI Tool

    Undress images for free

    Clothoff.io

    Clothoff.io

    AI clothes remover

    Video Face Swap

    Video Face Swap

    Swap faces in any video effortlessly with our completely free AI face swap tool!

    Hot Tools

    Notepad++7.3.1

    Notepad++7.3.1

    Easy-to-use and free code editor

    SublimeText3 Chinese version

    SublimeText3 Chinese version

    Chinese version, very easy to use

    Zend Studio 13.0.1

    Zend Studio 13.0.1

    Powerful PHP integrated development environment

    Dreamweaver CS6

    Dreamweaver CS6

    Visual web development tools

    SublimeText3 Mac version

    SublimeText3 Mac version

    God-level code editing software (SublimeText3)

    Hot Topics

    Java Tutorial
    1659
    14
    PHP Tutorial
    1257
    29
    C# Tutorial
    1231
    24
    How to implement table editability and row selection through vue and Element-plus How to implement table editability and row selection through vue and Element-plus Jul 17, 2023 am 09:43 AM

    How to implement table editability and row selection through vue and Element-plus Introduction: Tables are one of the frequently used components when developing web applications. Table editability and row selection functions are very common and practical requirements. In the Vue.js framework, these two functions can be easily achieved by combining the Element-plus component library. This article will introduce how to implement table editability and row selection functions through Vue and Element-plus, and provide corresponding code examples. 1. Project accuracy

    How to use vue and Element-plus to implement step-by-step forms and form verification How to use vue and Element-plus to implement step-by-step forms and form verification Jul 17, 2023 pm 10:43 PM

    How to use Vue and ElementPlus to implement step-by-step forms and form verification. In web development, forms are one of the most common user interaction components. For complex forms, we often need to perform step-by-step filling and form verification functions. This article will introduce how to use Vue and ElementPlus framework to achieve these two functions. 1. Step-by-step form A step-by-step form refers to dividing a large form into several small steps, and users need to fill in the steps according to the steps. We can take advantage of Vue’s componentization and routing

    How to use vue and Element-plus to implement upload and download file functions How to use vue and Element-plus to implement upload and download file functions Jul 18, 2023 pm 12:28 PM

    How to use Vue and ElementPlus to implement file upload and download functions Introduction: In web applications, file upload and download functions are very common. This article will introduce how to use Vue and ElementPlus to implement file upload and download functions. Through the sample code, you can easily and intuitively understand how to use Vue and ElementPlus to implement these functions. 1. Install and import ElementPlus. Install ElementPlus in the Vue project.

    How to refresh partial content of the page in Vue3 How to refresh partial content of the page in Vue3 May 26, 2023 pm 05:31 PM

    To achieve partial refresh of the page, we only need to implement the re-rendering of the local component (dom). In Vue, the easiest way to achieve this effect is to use the v-if directive. In Vue2, in addition to using the v-if instruction to re-render the local dom, we can also create a new blank component. When we need to refresh the local page, jump to this blank component page, and then jump back in the beforeRouteEnter guard in the blank component. original page. As shown in the figure below, how to click the refresh button in Vue3.X to reload the DOM within the red box and display the corresponding loading status. Since the guard in the component in the scriptsetup syntax in Vue3.X only has o

    vue3+vite: How to solve the error when using require to dynamically import images in src vue3+vite: How to solve the error when using require to dynamically import images in src May 21, 2023 pm 03:16 PM

    vue3+vite:src uses require to dynamically import images and error reports and solutions. vue3+vite dynamically imports multiple images. If vue3 is using typescript development, require will introduce image errors. requireisnotdefined cannot be used like vue2 such as imgUrl:require(' .../assets/test.png') is imported because typescript does not support require, so import is used. Here is how to solve it: use awaitimport

    How to use vue and Element-plus to implement message notifications and pop-up prompts How to use vue and Element-plus to implement message notifications and pop-up prompts Jul 17, 2023 pm 10:42 PM

    Introduction to how to use Vue and ElementPlus to implement message notifications and pop-up prompts: In web application development, message notifications and pop-up prompts are one of the very important functions. As a popular front-end framework, Vue, combined with ElementPlus, an excellent UI library, can easily implement various pop-up prompts and message notification functions. This article will introduce how to use the ElementPlus component library in a Vue project to implement message notification and pop-up prompt functions, and attach relevant code examples.

    How to use vue and Element-plus to export and print data How to use vue and Element-plus to export and print data Jul 18, 2023 am 09:13 AM

    How to use Vue and ElementPlus to implement data export and print functions. In recent years, with the rapid development of front-end development, more and more web applications need to provide data export and print functions to meet users' diverse needs for data use. As a popular JavaScript framework, Vue can easily implement data export and printing functions when used with the ElementPlus component library. This article will introduce a data export and

    How to select an avatar and crop it in Vue3 How to select an avatar and crop it in Vue3 May 29, 2023 am 10:22 AM

    The final effect is to install the VueCropper component yarnaddvue-cropper@next. The above installation value is for Vue3. If it is Vue2 or you want to use other methods to reference, please visit its official npm address: official tutorial. It is also very simple to reference and use it in a component. You only need to introduce the corresponding component and its style file. I do not reference it globally here, but only introduce import{userInfoByRequest}from'../js/api' in my component file. import{VueCropper}from'vue-cropper&

    See all articles