欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue3快速實(shí)現(xiàn)主題切換功能的步驟詳解

 更新時(shí)間:2024年06月04日 10:57:09   作者:蒾酒  
本文介紹一種基于css變量的主題切換實(shí)現(xiàn)方式,這種是最簡(jiǎn)單,最直接,最容易理解的方式,實(shí)現(xiàn)的原理就是定義不同的HTML根標(biāo)簽元素的樣式,通過data屬性來區(qū)分不同主題css變量樣式,感興趣的朋友可以參考下

內(nèi)容概要

本文介紹一種基于css變量的主題切換實(shí)現(xiàn)方式,這種是最簡(jiǎn)單,最直接,最容易理解的方式。

實(shí)現(xiàn)的原理就是定義不同的HTML根標(biāo)簽元素的樣式,通過data屬性來區(qū)分不同主題css變量樣式,通過修改根元素的data屬性值來加載不同的css變量,實(shí)現(xiàn)主題切換。

實(shí)現(xiàn)步驟

1.定義不同主題的css樣式變量

一般把該css文件放在styles目錄下的theme.css里面

代碼如下:

/* 淺色色主題 */
html[data-theme="light"]{
	--page-bg: #ecf4fd;
	--bg1: #ffffff;
	--bg2: #ffffff;
	--txt-color: #000000;
	--prominent-txt-color :#ffffff;
	--prominent-color :#000000;
}
/* 暗色主題 */
html[data-theme="dark"]{
	--page-bg: #06142a;/*頁面級(jí)背景色*/
	--bg1: #06142a;/*菜單導(dǎo)航欄級(jí)背景色*/
	--bg2: #06142a;/*按鈕控件等小組件背景色*/
	--txt-color: #ffffff;
	--prominent-txt-color :#000000;
	--prominent-color :#ffffff;
}

2.入口main.ts中引入這個(gè)樣式文件

3.主題樣式css變量引用

在頁面各種根據(jù)主題變化的地方,如頁面背景色,導(dǎo)航欄背景色,文字顏色等引用這些css變量

比如:

通過var()來引用css變量 

此時(shí)全部的前置工作已經(jīng)完成。

4.設(shè)置默認(rèn)主題樣式 

在index.html設(shè)置默認(rèn)樣式。如圖設(shè)置的是深色主題

代碼如下: 

<!DOCTYPE html>
<html lang="en" data-theme="dark">
  <head>
    <meta charset="UTF-8">
    <link rel="icon" href="/favicon.ico" rel="external nofollow" >
    <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>

此時(shí)你的頁面就變成深色主題了。

5.實(shí)現(xiàn)點(diǎn)擊按鈕主題切換

準(zhǔn)備一個(gè)主題切換按鈕

js部分代碼:

//當(dāng)前主題
const theme=ref('dark')
//切換主題
const toggleTheme=()=>{
//獲取根元素并設(shè)置屬性
document.documentElement.setAttribute('data-theme',theme.value=='dark'?'light':'dark')
theme.value=theme.value=='dark'?'light':'dark'
}

html部分:

 <div class="theme" @click="toggleTheme()">
            <div class="theme-img">
                <a href="#" rel="external nofollow" >
                   
                    <div v-if="theme==='light'">
                        <img src="../../assets/月亮 .png" alt="">
                    </div>
                    <div v-if="theme==='dark'">
                      
                        <img src="../../assets/太陽.png" alt="">
                    </div>
                    
                </a>
            </div>
        </div>

效果:

點(diǎn)擊切換即可。

總結(jié)

這種實(shí)現(xiàn)主題切換的原理就是通過 HTML 的 data 屬性和 CSS 變量來動(dòng)態(tài)改變頁面的樣式,從而實(shí)現(xiàn)不同主題下的樣式切換。當(dāng)用戶切換主題時(shí),只需改變 HTML 標(biāo)簽上的 data 屬性的值,頁面的樣式會(huì)自動(dòng)更新為對(duì)應(yīng)主題下的樣式。 

以上就是vue3快速實(shí)現(xiàn)主題切換功能的步驟詳解的詳細(xì)內(nèi)容,更多關(guān)于vue3主題切換的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Vue項(xiàng)目如何引入bootstrap、elementUI、echarts

    Vue項(xiàng)目如何引入bootstrap、elementUI、echarts

    這篇文章主要介紹了Vue項(xiàng)目如何引入bootstrap、elementUI、echarts,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-11-11
  • Vue2異步更新及nextTick原理詳解

    Vue2異步更新及nextTick原理詳解

    Vue2的異步更新機(jī)制是基于JavaScript的事件循環(huán)機(jī)制實(shí)現(xiàn)的。nextTick方法則是在DOM更新后執(zhí)行回調(diào)函數(shù)。本文詳細(xì)介紹了Vue2的異步更新機(jī)制和nextTick原理,對(duì)于理解Vue2的渲染機(jī)制和優(yōu)化性能有很大的幫助。
    2023-04-04
  • 如何在vite初始化項(xiàng)目中安裝scss以及scss的使用

    如何在vite初始化項(xiàng)目中安裝scss以及scss的使用

    今天想要給vite項(xiàng)目,添加全局的scss變量文件引用,這樣我們?cè)谑褂胹css變量和函數(shù)的時(shí)候就不需要每個(gè)組件都取引用了,下面這篇文章主要給大家介紹了關(guān)于如何在vite初始化項(xiàng)目中安裝scss以及scss使用的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • 詳解使用vue-router進(jìn)行頁面切換時(shí)滾動(dòng)條位置與滾動(dòng)監(jiān)聽事件

    詳解使用vue-router進(jìn)行頁面切換時(shí)滾動(dòng)條位置與滾動(dòng)監(jiān)聽事件

    本篇文章主要介紹了詳解使用vue-router進(jìn)行頁面切換時(shí)滾動(dòng)條位置與滾動(dòng)監(jiān)聽事件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • vue addRoutes路由動(dòng)態(tài)加載操作

    vue addRoutes路由動(dòng)態(tài)加載操作

    這篇文章主要介紹了vue addRoutes路由動(dòng)態(tài)加載操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 基于vue-router的matched實(shí)現(xiàn)面包屑功能

    基于vue-router的matched實(shí)現(xiàn)面包屑功能

    本文主要介紹了基于vue-router的matched實(shí)現(xiàn)面包屑功能,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • VUE引入騰訊地圖并實(shí)現(xiàn)軌跡動(dòng)畫的詳細(xì)步驟

    VUE引入騰訊地圖并實(shí)現(xiàn)軌跡動(dòng)畫的詳細(xì)步驟

    這篇文章主要介紹了VUE引入騰訊地圖并實(shí)現(xiàn)軌跡動(dòng)畫,引入步驟大概是在 html 中通過引入 script 標(biāo)簽加載API服務(wù),結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • 手把手教你如何創(chuàng)建一個(gè)VUE項(xiàng)目(超簡(jiǎn)單)

    手把手教你如何創(chuàng)建一個(gè)VUE項(xiàng)目(超簡(jiǎn)單)

    這篇文章主要給大家介紹了關(guān)于如何創(chuàng)建一個(gè)VUE項(xiàng)目的相關(guān)資料,創(chuàng)建vue項(xiàng)目有很多種方式,這里給大家介紹一種非常簡(jiǎn)單的方法,需要的朋友可以參考下
    2023-08-08
  • Vue+webpack實(shí)現(xiàn)懶加載過程解析

    Vue+webpack實(shí)現(xiàn)懶加載過程解析

    這篇文章主要介紹了Vue+webpack實(shí)現(xiàn)懶加載過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Vue + element 實(shí)現(xiàn)多選框組并保存已選id集合的示例代碼

    Vue + element 實(shí)現(xiàn)多選框組并保存已選id集合的示例代碼

    這篇文章主要介紹了Vue + element 實(shí)現(xiàn)多選框組并保存已選id集合,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06

最新評(píng)論