国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

vue3 element-plus 暗黑模式(主題切換)簡易版

這篇具有很好參考價值的文章主要介紹了vue3 element-plus 暗黑模式(主題切換)簡易版。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

暗黑模式是說明

暗黑模式是指在應(yīng)用程序或操作系統(tǒng)中使用暗色背景和淺色文本的界面設(shè)計。與傳統(tǒng)的亮色模式相比,暗黑模式具有以下特點:

  1. 減少眼部疲勞:使用暗色背景可以減少屏幕發(fā)出的藍光,減輕長時間使用電子設(shè)備對眼睛的疲勞程度。這對于在晚上或低光環(huán)境下使用設(shè)備的人來說尤為重要。

  2. 節(jié)省電池壽命:在有機發(fā)光二極管(OLED)或柔性有機發(fā)光二極管(AMOLED)屏幕上,黑色像素是不發(fā)光的,因此在暗黑模式下使用這些屏幕可以節(jié)省電池壽命,延長續(xù)航時間。

  3. 強調(diào)內(nèi)容:暗黑模式通過減少背景的明亮度,使內(nèi)容元素更加突出。這有助于提高可讀性,并使用戶更專注于應(yīng)用程序或網(wǎng)站中的核心信息。

  4. 美觀與時尚:暗黑模式因其現(xiàn)代感和時尚外觀而受到很多用戶的歡迎。它為用戶提供了一種與傳統(tǒng)亮色界面不同的視覺體驗。

暗黑模式現(xiàn)在廣泛應(yīng)用于各種應(yīng)用程序和操作系統(tǒng)中,包括移動設(shè)備、計算機操作系統(tǒng)和各種在線服務(wù)。許多應(yīng)用程序和平臺都提供了切換到暗黑模式的選項,以便用戶根據(jù)自己的偏好進行設(shè)置。

前端如何實現(xiàn),邏輯是什么

在前端實現(xiàn)暗黑模式時,主要涉及以下幾個方面的邏輯:

  1. CSS樣式:使用CSS來定義不同主題下的樣式。創(chuàng)建兩套樣式表,一套是亮色主題的樣式表,另一套是暗黑主題的樣式表。根據(jù)當前選擇的主題,動態(tài)加載相應(yīng)的樣式表。

  2. 主題切換:為用戶提供切換主題的選項,通常是一個切換按鈕或開關(guān)。當用戶切換主題時,通過JavaScript來切換樣式表。

  3. 存儲用戶選擇:為了記住用戶的主題偏好,可以使用本地存儲(如localStorage)來保存用戶選擇的主題。這樣,在下次訪問時,可以根據(jù)存儲的值來加載正確的主題。

vue3 + element-plus 項目中實現(xiàn)

  1. main 引入暗黑主題css
    import ‘element-plus/theme-chalk/dark/css-vars.css’
import { createApp } from 'vue'
import App from './App.vue'
import router from './router'

import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import zhCn from 'element-plus/es/locale/lang/zh-cn'
import 'element-plus/theme-chalk/dark/css-vars.css'
import '@/styles/main.css'
import pinia  from '@/store'

const app = createApp(App)
app.use(ElementPlus, { locale: zhCn })
app.use(pinia)
app.use(router)
app.mount('#app')

import '@/router/permission'

  1. index.html配置
    class=“l(fā)ight”
<!DOCTYPE html>
<html lang="zh-CN" class="light">
  <head>
    <meta charset="UTF-8">
    <link rel="icon" href="/favicon.ico">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>渠道管理</title>
  </head>
  <body>
    <div id="app"></div>
    <script type="module" src="/src/main.ts"></script>
  </body>
</html>

  1. 具體實現(xiàn)組件
<template>
  <div class="dark-box">
    <el-button text class="switch" :class="isDark ? 'isDark-switch' : 'noDark-switch'" @click="toggleDark">
      <el-icon v-if="isDark">
        <svg viewBox="0 0 24 24">
          <path
            d="M6.05 4.14l-.39-.39a.993.993 0 0 0-1.4 0l-.01.01a.984.984 0 0 0 0 1.4l.39.39c.39.39 1.01.39 1.4 0l.01-.01a.984.984 0 0 0 0-1.4zM3.01 10.5H1.99c-.55 0-.99.44-.99.99v.01c0 .55.44.99.99.99H3c.56.01 1-.43 1-.98v-.01c0-.56-.44-1-.99-1zm9-9.95H12c-.56 0-1 .44-1 .99v.96c0 .55.44.99.99.99H12c.56.01 1-.43 1-.98v-.97c0-.55-.44-.99-.99-.99zm7.74 3.21c-.39-.39-1.02-.39-1.41-.01l-.39.39a.984.984 0 0 0 0 1.4l.01.01c.39.39 1.02.39 1.4 0l.39-.39a.984.984 0 0 0 0-1.4zm-1.81 15.1l.39.39a.996.996 0 1 0 1.41-1.41l-.39-.39a.993.993 0 0 0-1.4 0c-.4.4-.4 1.02-.01 1.41zM20 11.49v.01c0 .55.44.99.99.99H22c.55 0 .99-.44.99-.99v-.01c0-.55-.44-.99-.99-.99h-1.01c-.55 0-.99.44-.99.99zM12 5.5c-3.31 0-6 2.69-6 6s2.69 6 6 6s6-2.69 6-6s-2.69-6-6-6zm-.01 16.95H12c.55 0 .99-.44.99-.99v-.96c0-.55-.44-.99-.99-.99h-.01c-.55 0-.99.44-.99.99v.96c0 .55.44.99.99.99zm-7.74-3.21c.39.39 1.02.39 1.41 0l.39-.39a.993.993 0 0 0 0-1.4l-.01-.01a.996.996 0 0 0-1.41 0l-.39.39c-.38.4-.38 1.02.01 1.41z"
            fill="currentColor"></path>
        </svg>
      </el-icon>
      <el-icon v-else>
        <svg viewBox="0 0 24 24">
          <path
            d="M11.01 3.05C6.51 3.54 3 7.36 3 12a9 9 0 0 0 9 9c4.63 0 8.45-3.5 8.95-8c.09-.79-.78-1.42-1.54-.95A5.403 5.403 0 0 1 11.1 7.5c0-1.06.31-2.06.84-2.89c.45-.67-.04-1.63-.93-1.56z"
            fill="currentColor"></path>
        </svg>
      </el-icon>
    </el-button>
  </div>
</template>

<script setup lang="ts">
import { ref } from 'vue'
const isDark = ref(true)
const toggleDark = () => {
  isDark.value = !isDark.value
  const html = document.querySelector('html')
  if (html) {
    if (isDark.value) {
      html.classList.remove("dark");
      html.classList.add("light");
    } else {
      html.classList.remove("light");
      html.classList.add("dark");
    }
}
}

</script>

<style scoped lang="scss">
.dark-box {
  margin-right: 20px;
}
.switch {
  width: 40px;
  height: 20px;
  border: 1px solid #dcdfe6;
  border-radius: 10px;
  box-sizing: border-box;
  cursor: pointer;
  padding-bottom: 0;
  padding-top: 0px;

  background-color: #ebeef5 !important;
  font-size: 12px;
}

.isDark-switch {
  .el-icon {
    background-color: #fff !important;
    padding: 2px;
    border-radius: 50%;
    color: #000;
    margin-left: -8px;
  }
}

.noDark-switch {
  background-color: rgb(8, 8, 8) !important;

  .el-icon {
    color: #fff;
    margin-left: 15px;
  }
}
</style>

  1. 引入 組件(具體開關(guān)組件)
<template>
  // 省略...
  <Dark />
</template>
<script setup lang="ts">
import Dark from './dark.vue'
</script>


5.示例

vue3 element-plus 暗黑模式(主題切換)簡易版
vue3 element-plus 暗黑模式(主題切換)簡易版
6. 總結(jié)
使用Vue 3和TypeScript編寫,實現(xiàn)了一個切換暗黑模式的功能。代碼中使用了Element Plus UI庫來展示按鈕和圖標。

首先,在模板部分定義了一個按鈕,其中使用了isDark變量來決定顯示哪個圖標,通過@click事件綁定toggleDark函數(shù)來切換主題。

<script setup>塊中,使用ref函數(shù)創(chuàng)建了一個名為isDark的響應(yīng)式變量,并定義了toggleDark函數(shù)。當點擊按鈕時,toggleDark函數(shù)會切換isDark的值,并根據(jù)isDark的值添加或移除HTML元素的類名來切換主題。

最后,在樣式部分,使用了SCSS語法來定義按鈕的樣式。.switch類定義了按鈕的基本樣式,.isDark-switch.noDark-switch類分別定義了暗黑模式和非暗黑模式下的樣式。

需要注意的是,代碼中使用了scoped關(guān)鍵字來限定樣式的作用域,確保樣式只應(yīng)用于當前組件。

總體來說,通過按鈕的點擊事件,動態(tài)切換主題,并根據(jù)主題切換來添加或移除HTML元素的類名,從而實現(xiàn)了暗黑模式的切換效果。文章來源地址http://www.zghlxwxcb.cn/news/detail-476296.html

到了這里,關(guān)于vue3 element-plus 暗黑模式(主題切換)簡易版的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • vue3使用element-plus

    vue3使用element-plus

    element-ui 是配合 vue2 使用,element-plus 是配置 vue3 使用的 1. 包管理器的方式 如果是使用?webpack 或者 vite 打包工具新建的項目 2. 瀏覽器直接導(dǎo)入 直接通過瀏覽器的 HTML 標簽導(dǎo)入 Element Plus,然后就可以使用全局變量 ElementPlus 1. 導(dǎo)入全部組件且注冊所有的圖標 聲明使用 ElementPl

    2024年02月08日
    瀏覽(35)
  • Vue3導(dǎo)入Element-plus方法

    Vue3導(dǎo)入Element-plus方法

    先引入依賴 main.js中要引入兩個依賴 然后 這個東西 我們最好還是掛載vue上 所以 還是 然后 我們可以在組件上試一下用一個ElementUi的表格組件 參考代碼如下 運行結(jié)果如下 也是沒有任何問題

    2024年02月06日
    瀏覽(97)
  • vue3 element-plus 實現(xiàn)圖片預(yù)覽

    vue3 element-plus 實現(xiàn)圖片預(yù)覽

    element-plus下有這么一個組件 el-image-viewer /,但是這個組件是沒寫在文檔上面的,像普通組件一樣使用即可 可以通過點擊按鈕實現(xiàn)圖片預(yù)覽,而非el-image組件只能通過點擊圖片實現(xiàn)預(yù)覽 2.1封裝組件 2.3組件使用 在需要使用的地方引入,然后使用即可,這不是重點,每個人使用的

    2024年02月15日
    瀏覽(28)
  • Vue3 封裝 element-plus 圖標選擇器

    Vue3 封裝 element-plus 圖標選擇器

    效果一: 效果二: ? 效果一的這個是把全部的icon圖標都讓它顯示出來,讓我們自己選擇說選圖標 2.1. 全局注冊 icon 組件 2.2. 組件實現(xiàn)? 2.3. 使用? 效果二的這個是渲染后端返回的icon圖標 3.1. 全局注冊 icon 組件 3.2. 組件實現(xiàn)? 3.3. 使用?

    2024年02月07日
    瀏覽(240)
  • vue3項目搭建并配置element-plus

    安裝完成后,輸入如下指令查看vue的版本: 選擇一個要存放項目的目錄,打開小黑窗輸入如下命令: 一開始輸入項目名稱或者默認vue-project,然后根據(jù)需求選擇Yes/No 生成完項目后,輸入如下指令: src/main.js里引入 index.css的文件位置根據(jù)實際情況寫,也有可能是 const app后面加

    2024年02月13日
    瀏覽(30)
  • vue3+element-plus上傳文件,預(yù)覽文件

    vue3+element-plus上傳文件,預(yù)覽文件

    vue3+ts+element-plus上傳文件,預(yù)覽文件 場景:使用element-plus的el-upload標簽,手動上傳文件,可預(yù)覽docx,xlsx,pdf,jpg,jpeg,png(本地資源以及網(wǎng)絡(luò)資源)。 1、使用el-upload標簽 檢查上傳文件的文件格式與大小 上傳的附件信息在fileList中,組裝接口所需數(shù)據(jù)進行上傳 使用docx-preview插件預(yù)覽

    2024年02月11日
    瀏覽(37)
  • vue3+element-plus 表單輸入框無法輸入

    vue3+element-plus 表單輸入框無法輸入

    Element-Plus在進行reactive在對登錄用戶密碼輸入輸入時失效,最后發(fā)現(xiàn)是el-form,在進行ref和model進行綁定的時候,綁定的屬性名稱都是一致的,導(dǎo)致界面無法輸入,如下圖所示都綁定的是:loginForm,代碼入下圖所示: 此時界面操作輸入框,是無法編輯的: 而el-form修改的model=\\\"logi

    2024年02月11日
    瀏覽(27)
  • 新星計劃打卡學(xué)習(xí):VUE3引入element-plus

    新星計劃打卡學(xué)習(xí):VUE3引入element-plus

    目錄 1、安裝element-plus 2、安裝按需導(dǎo)入插件 3、修改配置文件 4、添加頁面內(nèi)容 5、保存并重啟項目 官網(wǎng)說要想使用element-plus需要先進行安裝,并給出了三種安裝方式,我選擇了第三種。 ?報錯了: ?解決的辦法: 原因是沒有安裝pnpm,看此博主文章進行解決 https://blog.csdn.n

    2024年02月16日
    瀏覽(96)
  • vue3中element-plus Upload上傳文件

    vue3中element-plus Upload上傳文件

    先上效果圖: ?上傳后: ?頁面: 我這里做個限制,僅限上傳一個pdf文件,如果不需要可以去掉,更多api請參考官方upload上傳官方文檔 js部分: 完結(jié),撒花~

    2024年02月13日
    瀏覽(34)
  • Vue3+element-plus實現(xiàn)后臺管理系統(tǒng)

    Vue3+element-plus實現(xiàn)后臺管理系統(tǒng)

    ?環(huán)境:node.js軟件 、Vs code、vite、elemnt-plus、windicss(樣式框架) ? ? 1、首先,使用npm 命令構(gòu)建項目( vscode安裝的插件 vscode中文顯示插件 ? 2、高亮提示插件volar ? 3、vue 3 sni 代碼提示) 快速上手 | Vue.js ? ?a. npm -v 查看node.js 版本 ? ?b. ?npm ?config get registry ? 查看注冊鏡像是

    2024年02月09日
    瀏覽(33)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包