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

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標簽引入的dark.css,main.js引入的iview.css后渲染,因此會覆蓋head標簽引入的dark.css,所以需要在js標簽中重新引入一遍。

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

相關文章

  • 詳解在vue使用weixin-js-sdk常見使用方法

    詳解在vue使用weixin-js-sdk常見使用方法

    這篇文章主要介紹了 詳解在vue使用weixin-js-sdk常見使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-05-05
  • Vue 實現(xiàn)CLI 3.0 + momentjs + lodash打包時優(yōu)化

    Vue 實現(xiàn)CLI 3.0 + momentjs + lodash打包時優(yōu)化

    今天小編就為大家分享一篇Vue 實現(xiàn)CLI 3.0 + momentjs + lodash打包時優(yōu)化,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • vue-router鉤子執(zhí)行順序示例解析

    vue-router鉤子執(zhí)行順序示例解析

    這篇文章主要為大家介紹了vue-router鉤子執(zhí)行順序示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-07-07
  • vue(2.x,3.0)配置跨域代理

    vue(2.x,3.0)配置跨域代理

    這篇文章主要介紹了vue(2.x,3.0)配置跨域代理,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • 如何解決el-checkbox選中狀態(tài)更改問題

    如何解決el-checkbox選中狀態(tài)更改問題

    這篇文章主要介紹了如何解決el-checkbox選中狀態(tài)更改問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • vue.js中created()與activated()的個人使用解讀

    vue.js中created()與activated()的個人使用解讀

    這篇文章主要介紹了vue.js中created()與activated()的個人使用,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • iview form清除校驗狀態(tài)的實現(xiàn)

    iview form清除校驗狀態(tài)的實現(xiàn)

    這篇文章主要介紹了iview form清除校驗狀態(tài)的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-09-09
  • vue3父子組件通信之子組件修改父組件傳過來的值

    vue3父子組件通信之子組件修改父組件傳過來的值

    這篇文章主要介紹了vue3父子組件通信之子組件修改父組件傳過來的值,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友跟隨小編一起看看吧
    2024-05-05
  • Vue3+Ant?design?實現(xiàn)Select下拉框一鍵全選/清空功能

    Vue3+Ant?design?實現(xiàn)Select下拉框一鍵全選/清空功能

    在做后臺管理系統(tǒng)項目的時候,產(chǎn)品增加了一個在Select選擇器中添加一鍵全選和清空的功能,他又不讓在外部增加按鈕,其實如果說在外部增加按鈕實現(xiàn)全選或者清空的話,功能比較簡單的,下面給大家分享Vue3+Ant?design?實現(xiàn)Select下拉框一鍵全選/清空功能,需要的朋友可以參考下
    2024-05-05
  • Vue封裝一個TodoList的案例與瀏覽器本地緩存的應用實現(xiàn)

    Vue封裝一個TodoList的案例與瀏覽器本地緩存的應用實現(xiàn)

    這篇文章主要介紹了Vue封裝一個TodoList的案例與瀏覽器本地緩存的應用實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04

最新評論

延边| 林周县| 兴海县| 吐鲁番市| 丰原市| 晋州市| 谷城县| 南和县| 奉新县| 虹口区| 霸州市| 杂多县| 林甸县| 育儿| 昌宁县| 洱源县| 台山市| 龙州县| 开阳县| 原阳县| 景东| 纳雍县| 呼伦贝尔市| 竹北市| 郴州市| 萨迦县| 临武县| 威远县| 乌鲁木齐市| 丹寨县| 兰溪市| 莱州市| 嘉祥县| 大英县| 东阿县| 鄄城县| 鞍山市| 亳州市| 祁门县| 抚顺市| 谷城县|