最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Element Plus暗黑模式及模式自由切換的實(shí)現(xiàn)

 更新時(shí)間:2024年11月08日 09:34:50   作者:狂愛代碼的碼農(nóng)  
本文詳細(xì)介紹了如何在使用Vite構(gòu)建的Vue項(xiàng)目中實(shí)現(xiàn)ElementPlus暗黑模式及模式切換,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

環(huán)境介紹

使用vite構(gòu)建vue項(xiàng)目

1、安裝element plus依賴

npm install element-plus --save

2、使用element plus組件及導(dǎo)入樣式

// /src/main.js
import { createApp } from 'vue'
import App from './App.vue'

//引入路由器組件
import { router } from './router/index'

//引入樣式
import "./styles/index.scss"

//引入windicss
import 'virtual:windi.css'

//引入pinia
import { createPinia } from 'pinia';
const pinia = createPinia();

const app = createApp(App)

app.use(router)

app.use(pinia)

//掛在容器
app.mount('#app')

3、element plus 樣式文件

// src/styles/element/light.scss 可以忽略重寫 將element的默認(rèn)樣式定義為light
/* 重寫 */
@forward 'element-plus/theme-chalk/src/common/var.scss' with (
  $colors: (
    'primary': (
      'base': green,
    ),
  ),
);
// 導(dǎo)入所有樣式:
@use "element-plus/theme-chalk/src/index.scss" as *;
// src/styles/element/drak.scss 暗黑模式
@forward 'element-plus/theme-chalk/src/dark/var.scss' with (
    $colors: (
        'primary': (
          'base': green,
        ),
      ),
);
@use 'element-plus/theme-chalk/src/dark/css-vars.scss' as *;
// src/styles/index.scss  順序不要錯(cuò)  一定要是先默認(rèn)主題  再暗黑主題 這里官網(wǎng)有說明
// 參開鏈接  https://element-plus.org/zh-CN/guide/dark-mode.html
/*
自定義變量?
通過 CSS?
直接覆蓋對(duì)應(yīng)的 css 變量即可
像這樣,新建一個(gè) styles/dark/css-vars.css文件:
css
html.dark {
  --el-bg-color: #626aef;
}
在 Element Plus 的樣式之后導(dǎo)入它

ts
// main.ts
*/
@use './element/light.scss' as *;
@use './element/dark.scss' as *;
@use './element/self.scss' as *;    

4、安裝pinia 用來保存切換模式的狀態(tài)

 npm install pinia

5、配置pinia

// src/store/theme.js
import { defineStore } from 'pinia';
import { watchEffect } from 'vue';

export const useThemeStore = defineStore('theme', {
  state: () => ({
    isDarkTheme: false
  }),
  actions: {
    toggleDarkMode() {
      this.isDarkTheme =!this.isDarkTheme;
    },
    setupThemeWatcher() {
      const htmlElement = document.documentElement;
      watchEffect(() => {
        htmlElement.classList.toggle('dark', this.isDarkTheme);
        htmlElement.classList.toggle('light',!this.isDarkTheme);
      });
    }
  }
});

6、創(chuàng)建模式切換的組件

//src/pages/components/ThemeSwitch.vue
<template>
    <el-switch v-model="themeStore.isDarkTheme" active-text="普通模式" inactive-text="暗黑模式" inline-prompt />
</template>
  
<script setup lang='ts'>
import { useThemeStore } from '@/store/theme'; 

const themeStore = useThemeStore();

themeStore.setupThemeWatcher();
  </script>
  <style scoped lang='scss'>
  
  </style>

7、使用

<template>
  <div>
    <h2>我是登錄頁面</h2>
    <theme-switch></theme-switch>
  </div>
</template>

<script setup lang='ts'>
import DarkModeSwitch from 'components/ThemeSwitch.vue';
</script>

<style scoped lang='scss'>
</style>

關(guān)于vite的配置

/vite.config.js
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// element plus 相關(guān)
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'

import WindiCSS from 'vite-plugin-windicss'

import path from 'path';
// https://vite.dev/config/
export default defineConfig({
  plugins: [
    AutoImport({
      resolvers: [ElementPlusResolver()],
    }),
    Components({
      resolvers: [ElementPlusResolver()],
    }),
    WindiCSS(),
    vue()
  ],
  css: {
    preprocessorOptions: {
      scss: {
        additionalData: `@use 'src/styles/element/define.scss' as *;`
      }
    }
  },
  resolve: {
    alias: {
      '@': path.resolve(__dirname, './src'),
      'pages': path.resolve(__dirname, './src/pages'),
      'components': path.resolve(__dirname, './src/pages/components'),
    },
  },
})

其他配置

//jsconfig.json 如果文件不存在 那么就創(chuàng)建該文件即可
{
    "compilerOptions": {
      "baseUrl": ".",
      "paths": {
        "@/*": ["src/*"],
        "pages/*": ["src/pages/*"],
        "components/*": ["src/pages/components/*"]
      }
    }
  }

 到此這篇關(guān)于Element Plus暗黑模式及模式自由切換的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Element Plus暗黑模式及模式自由切換內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • axios取消請(qǐng)求CancelToken的用法示例代碼

    axios取消請(qǐng)求CancelToken的用法示例代碼

    Axios提供了取消請(qǐng)求的功能,可以通過使用CancelToken來實(shí)現(xiàn),這篇文章主要給大家介紹了關(guān)于axios取消請(qǐng)求CancelToken的用法,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • Vite+Vue3加載速度優(yōu)化全過程

    Vite+Vue3加載速度優(yōu)化全過程

    文章介紹了優(yōu)化前端項(xiàng)目性能的幾種方法,包括減小打包體積、異步加載、使用CDN、路由懶加載和組件異步加載等,以提升首屏加載速度和用戶體驗(yàn)
    2025-12-12
  • vue eslint簡要配置教程詳解

    vue eslint簡要配置教程詳解

    這篇文章主要介紹了vue eslint簡要配置,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-07-07
  • Nginx部署前端Vue項(xiàng)目的完全流程

    Nginx部署前端Vue項(xiàng)目的完全流程

    在前后端分離架構(gòu)中,vue項(xiàng)目通常需要部署到nginx服務(wù)器以實(shí)現(xiàn)生產(chǎn)環(huán)境運(yùn)行,這篇文章主要介紹了Nginx部署前端Vue項(xiàng)目的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2026-05-05
  • vue輪播圖插件vue-concise-slider的使用

    vue輪播圖插件vue-concise-slider的使用

    這篇文章主要介紹了vue輪播圖插件vue-concise-slider的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-03-03
  • vue3錨點(diǎn)定位兩種實(shí)現(xiàn)方式示例

    vue3錨點(diǎn)定位兩種實(shí)現(xiàn)方式示例

    這篇文章主要給大家介紹了關(guān)于vue3錨點(diǎn)定位兩種實(shí)現(xiàn)的相關(guān)資料,說到錨點(diǎn)定位,很多人第一時(shí)間會(huì)想到 a標(biāo)簽,但是a標(biāo)簽實(shí)現(xiàn)的錨點(diǎn)定位并不是那么的完美,需要的朋友可以參考下
    2023-07-07
  • vue3?typescript封裝axios過程示例

    vue3?typescript封裝axios過程示例

    這篇文章主要為大家介紹了vue3?typescript封裝axios過程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-10-10
  • Vue項(xiàng)目中Element UI組件未注冊(cè)的問題原因及解決方法

    Vue項(xiàng)目中Element UI組件未注冊(cè)的問題原因及解決方法

    在 Vue 項(xiàng)目中使用 Element UI 組件庫時(shí),開發(fā)者可能會(huì)遇到一些常見問題,例如組件未正確注冊(cè)導(dǎo)致的警告或錯(cuò)誤,本文將詳細(xì)探討這些問題的原因、解決方法,以及如何在需要時(shí)撤銷相關(guān)操作,需要的朋友可以參考下
    2025-01-01
  • vue webpack開發(fā)訪問后臺(tái)接口全局配置的方法

    vue webpack開發(fā)訪問后臺(tái)接口全局配置的方法

    今天小編就為大家分享一篇vue webpack開發(fā)訪問后臺(tái)接口全局配置的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vue+vuex+axio從后臺(tái)獲取數(shù)據(jù)存入vuex實(shí)現(xiàn)組件之間共享數(shù)據(jù)

    vue+vuex+axio從后臺(tái)獲取數(shù)據(jù)存入vuex實(shí)現(xiàn)組件之間共享數(shù)據(jù)

    這篇文章主要介紹了vue+vuex+axio從后臺(tái)獲取數(shù)據(jù)存入vuex,組件之間共享數(shù)據(jù),非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-04-04

最新評(píng)論

蒙山县| 西华县| 青川县| 利辛县| 盘锦市| 通城县| 横峰县| 蓬莱市| 湖南省| 牡丹江市| 民县| 郎溪县| 无锡市| 鹿泉市| 龙里县| 池州市| 永登县| 寿光市| 宿州市| 湘西| 绵阳市| 土默特左旗| 冕宁县| 汝南县| 河北区| 台江县| 洮南市| 疏勒县| 临沂市| 双柏县| 石楼县| 浙江省| 通海县| 衡水市| 沭阳县| 洪江市| 鲁甸县| 孟连| 合肥市| 尉犁县| 类乌齐县|