摘要:補充說明雖說是的方法,但是目前等主流方法也都支持,可以放心的使用而另一方面也支持及以上。進行本地存儲通過變量實現(xiàn)這個方法就簡單很多,不過開發(fā)前請先了解其兼容性,開發(fā)時主題色相關(guān)顏色直接調(diào)用變量,就像大家平時用一樣。
前言
大家應該見過不少可以更換主題或主題顏色的網(wǎng)站,如果是更換內(nèi)置的幾套方案可以直接通過簡單的替換css文件來實現(xiàn),我們就不說了;本文就介紹一種用戶自定義替換的主題題色的簡單方案!1. 相關(guān)知識點 1.1 CSSStyleSheet.insertRule()
CSSStyleSheet.insertRule(rule, index);
參數(shù):
rule: string,包含要插入的樣式規(guī)則
index: number, 插入的位置, 可選,默認:0
document.styleSheets[0].insertRule(".selector {color: red}", 0);1.2 CSSStyleSheet.addRule()
CSSStyleSheet.addRule(selector, cssText, index)
參數(shù):
selector: string,選擇器文本
rule: string,包含要插入的樣式規(guī)則
index: number, 插入的位置, 可選,默認:length - 1
document.styleSheets[0].addRule(".selector", "color: red", 0);
關(guān)于insertRule與addRule的區(qū)別
addRule是IE專用的方法
傳參略有不同,并且insertRule默認將樣式規(guī)則添加到css的第一條,而addRule默認添加到最后一條。
補充說明:雖說addRule是IE的方法,但是目前chrome等主流方法也都支持,可以放心的使用;而另一方面insertRule也支持IE9及以上。
1.3 CSS3變量可以讓我們像Sass、Less那樣創(chuàng)建變量;
:root{ --color: pink; } div{ color: var(--color); } .content{ --red: red; --string: "支持字符串"; --中文名: 20; background-color: var(--red); }
遺憾的是目前不支持IE,不過可以用JS來判斷
varisSupported = window.CSS && window.CSS.supports && window.CSS.supports("--a", 0); if (isSupported) { /* supported */ } else { /* not supported */ }
更多關(guān)于css3變量: 請點這里
2. 具體方案 2.1 通過insertRule/addRule 實現(xiàn)function setTheme(color){ let link = document.createElement("style"); let head = document.getElementsByTagName("head")[0]; //設置主題色時現(xiàn)將原先的樣式文件移除,雖然樣式之間可以覆蓋,但為了避免添加過多,還是清一下。 document.getElementById("theme") && head.removeChild(document.getElementById("theme")); link.rel = "stylesheet"; link.type = "text/css"; link.id = "theme"; head.appendChild(link); let themeData = { color: color, }; let len = document.styleSheets.length - 1; //進行本地存儲 localStorage.setItem("Theme", JSON.stringify(themeData)); document.styleSheets[len].addRule(".T-BG", `background-color: ${this.color} !important`); document.styleSheets[len].addRule(".T-FT", `color: ${color} !important`); document.styleSheets[len].addRule(".T-FT-H:hover", `color: ${color} !important`); document.styleSheets[len].addRule(".T-BD", `border-color: ${color} !important`); document.styleSheets[len].addRule(".T-SD", `box-shadow: 0 0 5px 1px ${color} !important`); document.styleSheets[len].addRule(".T-SD-H:hover", `box-shadow: 0 0 5px 1px ${color} !important`); document.styleSheets[len].addRule(".T-TSD-H:hover", `text-shadow: 0 0 5px ${color} !important`); document.styleSheets[len].addRule(".T-TSD", `text-shadow: 0 0 5px ${color} !important`); }2.2 通過css3變量 實現(xiàn)
//這個方法就簡單很多,不過開發(fā)前請先了解其兼容性,開發(fā)時主題色相關(guān)顏色直接調(diào)用變量,就像大家平時用Sass一樣。 function setTheme(color){ // 設置變量, document.body.style.setProperty("--ThemeColor", "red"); }
如果大家還有什么比較好的方案也希望留言多多分享
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/117444.html
摘要:補充說明雖說是的方法,但是目前等主流方法也都支持,可以放心的使用而另一方面也支持及以上。進行本地存儲通過變量實現(xiàn)這個方法就簡單很多,不過開發(fā)前請先了解其兼容性,開發(fā)時主題色相關(guān)顏色直接調(diào)用變量,就像大家平時用一樣。 showImg(https://segmentfault.com/img/bVbo0Mb?w=1105&h=806); 前言 大家應該見過不少可以更換主題或主題顏色的網(wǎng)站,...
摘要:補充說明雖說是的方法,但是目前等主流方法也都支持,可以放心的使用而另一方面也支持及以上。進行本地存儲通過變量實現(xiàn)這個方法就簡單很多,不過開發(fā)前請先了解其兼容性,開發(fā)時主題色相關(guān)顏色直接調(diào)用變量,就像大家平時用一樣。 showImg(https://segmentfault.com/img/bVbo0Mb?w=1105&h=806); 前言 大家應該見過不少可以更換主題或主題顏色的網(wǎng)站,...
摘要:暴露年齡了廣告詞飯后嚼兩粒大概,故事性很強,比較有意思同時直入主題,飯后吃益達口香糖有益健康。書里破繭成蝶說道,揣摩用戶的心思遠遠不夠,你不可能完整的想到別人在想什么,所以還需要去體驗用戶的生活。 用戶體驗(User Experience,簡稱UX 或是UE),它指用戶在使用一個產(chǎn)品、系統(tǒng)或者服務時建立起來的純主觀感受。 showImg(https://segmentfault.com...
摘要:暴露年齡了廣告詞飯后嚼兩粒大概,故事性很強,比較有意思同時直入主題,飯后吃益達口香糖有益健康。書里破繭成蝶說道,揣摩用戶的心思遠遠不夠,你不可能完整的想到別人在想什么,所以還需要去體驗用戶的生活。 用戶體驗(User Experience,簡稱UX 或是UE),它指用戶在使用一個產(chǎn)品、系統(tǒng)或者服務時建立起來的純主觀感受。 showImg(https://segmentfault.com...
閱讀 2600·2021-11-15 11:38
閱讀 2618·2021-11-04 16:13
閱讀 17979·2021-09-22 15:07
閱讀 1014·2019-08-30 15:55
閱讀 3260·2019-08-30 14:15
閱讀 1663·2019-08-29 13:59
閱讀 3206·2019-08-28 18:28
閱讀 1575·2019-08-23 18:29