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

vue實現(xiàn)換膚功能

 更新時間:2022年07月01日 15:47:35   作者:不想寫代碼的程序員  
這篇文章主要為大家詳細介紹了vue實現(xiàn)換膚功能,一套深色,一套淺色,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

公司項目要實現(xiàn)vue項目換膚功能,要求,考慮到最節(jié)省時間的就是寫兩套css,一套light.css,一套dark.css,然后切換css

一、實現(xiàn)思路

切換選中的皮膚狀態(tài)(light,或者dark)存儲在sessionStorage中,監(jiān)聽sessionStorage數(shù)據(jù)變化,切換index.html中引入的css文件

二、實現(xiàn)過程

1、在main.vue添加:

?<p style="display: inline-block;"> 切換主題:</p>
? <RadioGroup v-model="theme" @on-change="changeTheme">
? ? ? ? <Radio label="light"></Radio>
? ? ? ? <Radio label="dark"></Radio>
? ? </RadioGroup>
? ??
?//methods:
? ?changeTheme(){
?//localStorage.setItem('themeColor',this.theme);?
?this.resetSetItem('themeColor', this.theme);
? ?},

2、main.js添加:(參考網(wǎng)上)

Vue.prototype.resetSetItem = function (key, newVal) {
? if (key === 'themeColor') {

? ? ? // 創(chuàng)建一個StorageEvent事件
? ? ? var newStorageEvent = document.createEvent('StorageEvent');
? ? ? const storage = {
? ? ? ? ? setItem: function (k, val) {
? ? ? ? ? ? ? sessionStorage.setItem(k, val);

? ? ? ? ? ? ? // 初始化創(chuàng)建的事件
? ? ? ? ? ? ? newStorageEvent.initStorageEvent('setItem', false, false, k, null, val, null, null);

? ? ? ? ? ? ? // 派發(fā)對象
? ? ? ? ? ? ? window.dispatchEvent(newStorageEvent)
? ? ? ? ? }
? ? ? }
? ? ? return storage.setItem(key, newVal);
? }
}

3.index.html 添加

<!DOCTYPE html>
<html>

<head>
? <meta charset="utf-8">
? <meta name="viewport" content="width=device-width,initial-scale=1.0">
? //添加默認css
? <link rel="stylesheet" href="./static/css/dark.css">
? <title>xxx</title>
</head>

<body>
? <div id="app"></div>
</body>

</html>

<script>
//在js添加默認引入的dark.css,如果不引入,ivew自帶的樣式會覆蓋在html中引入的dark.css,所以需要在js重新引入,用來覆蓋ivew的默認樣式
? var link = document.createElement("link");
? link.rel = "stylesheet";
? link.type = "text/css";
? link.href = "./static/css/dark.css";
? var head = document.getElementsByTagName("head")[0];
? head.appendChild(link);
? //監(jiān)聽sessionStorage切換主題
? window.addEventListener('setItem', () => {
? ? var themeColor = sessionStorage.getItem('themeColor');
? ? let url = "./static/css/" + themeColor + ".css"
? ? changeStyles(url);
? })

? function changeStyles(url) {
? ? var links = document.getElementsByTagName("link")
? ? console.log(links)
? ? //替換之前引入的css
? ? if (links.length != 0) {
? ? ? for (var i = 0; i < links.length; i++) {
? ? ? ? // links[i].parentNode.removeChild(links[i]);
? ? ? ? links[i].href = url
? ? ? }
? ? }
? ? var links = document.getElementsByTagName("link")
? ? //console.log(links)

? }

</script>

4、效果

三、總結(jié)

1、在實現(xiàn)的過程中,發(fā)現(xiàn)localStorage數(shù)據(jù)監(jiān)聽不到,在網(wǎng)上的看到數(shù)據(jù)存儲在sessionStorage中
2、css執(zhí)行順序需要注意:頁面先渲染index.html中head標(biāo)簽引入的dark.css,main.js引入的iview.css后渲染,因此會覆蓋head標(biāo)簽引入的dark.css,所以需要在js標(biāo)簽中重新引入一遍。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • VUE 實現(xiàn)復(fù)制內(nèi)容到剪貼板的兩種方法

    VUE 實現(xiàn)復(fù)制內(nèi)容到剪貼板的兩種方法

    這篇文章主要介紹了VUE 實現(xiàn)復(fù)制內(nèi)容到剪貼板功能,本文通過兩種方法,給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-04-04
  • vue項目實現(xiàn)搜索內(nèi)容變紅色顯示

    vue項目實現(xiàn)搜索內(nèi)容變紅色顯示

    這篇文章主要為大家介紹了vue項目實現(xiàn)搜索內(nèi)容變紅色顯示,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-12-12
  • vue3組件化開發(fā)常用API知識點總結(jié)

    vue3組件化開發(fā)常用API知識點總結(jié)

    Vue是目前Web前端最流行的開發(fā)框架技術(shù),?下面這篇文章主要給大家介紹了關(guān)于vue3組件化開發(fā)常用API的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • 解決Vue頁面固定滾動位置的處理辦法

    解決Vue頁面固定滾動位置的處理辦法

    本篇文章主要介紹了解決Vue固定滾動位置的處理辦法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-07-07
  • Vue 2.x教程之基礎(chǔ)API

    Vue 2.x教程之基礎(chǔ)API

    這篇文章主要介紹了Vue 2.x基礎(chǔ)API的相關(guān)資料,文中介紹的非常詳細,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • Vue中如何處理token過期問題

    Vue中如何處理token過期問題

    這篇文章主要介紹了Vue中如何處理token過期問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue仿攜程輪播圖效果(滑動輪播,下方高度自適應(yīng))

    vue仿攜程輪播圖效果(滑動輪播,下方高度自適應(yīng))

    這篇文章主要介紹了vue仿攜程輪播圖效果(滑動輪播,下方高度自適應(yīng)),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • vue中jsonp的使用方法

    vue中jsonp的使用方法

    這篇文章主要介紹了vue中jsonp的使用方法,文章從安裝開始展開具體的vue中jsonp的使用詳細內(nèi)容,需要的朋友可以參考一下,希望對大家有所幫助
    2021-11-11
  • vue虛擬化列表封裝的實現(xiàn)

    vue虛擬化列表封裝的實現(xiàn)

    這篇文章主要介紹了vue實現(xiàn)虛擬化列表封裝方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • 基于vue組件實現(xiàn)猜數(shù)字游戲

    基于vue組件實現(xiàn)猜數(shù)字游戲

    這篇文章主要為大家詳細介紹了基于vue組件實現(xiàn)猜數(shù)字游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11

最新評論