摘要:項(xiàng)目項(xiàng)目中用了,有切換主題色的需要。但官方的方式,有幾個問題需要下載整個的樣式,并替換其中的樣式顏色。代碼已開源在,歡迎并提交其他庫的主題色獲取方法。
項(xiàng)目項(xiàng)目中用了element-ui,有切換主題色的需要。但官方的方式,有幾個問題:
1、需要下載整個element-ui的樣式css,并替換其中的css樣式顏色。文件較大,下載慢且影響性能。
2、只能替換element-ui本身的顏色樣式,項(xiàng)目中自己寫的顏色樣式替換不掉。
3、全部的element-ui樣式都重新覆蓋,渲染較慢,且容易導(dǎo)致覆蓋已有樣式出現(xiàn)意外問題。
其實(shí)帶顏色的樣式規(guī)則只占了所有css中很少的一部分。所以,我希望可以只替換css中與顏色相關(guān)的部分css規(guī)則。
于是花了半天時間,寫了個webpack插件來實(shí)現(xiàn)這個功能。
基本思路就是,webpack構(gòu)建時,在emit事件(準(zhǔn)備寫入dist結(jié)果文件時)中,將即將生成的所有css文件的內(nèi)容中 帶有指定顏色的css規(guī)則多帶帶提取出來,再合并為一個theme-colors.css輸出文件。然后在切換主題色時,下載這個文件,并替換為需要的顏色,應(yīng)用到頁面上。這樣,下載的樣式中就只包含顏色相關(guān)的css規(guī)則,文件較小;同時它已經(jīng)包含了項(xiàng)目中所有的css中的指定顏色樣式,一次下載全部顏色樣式都搞定。
經(jīng)過反復(fù)測試,實(shí)現(xiàn)的效果比較理想。而且還可以根據(jù)需要,替換掉任意數(shù)目的顏色。理論上是只要是css的顏色,都可以通過這個插件來提取顏色樣式。
為了方便使用,目前集成了element-ui的系列主題色獲取方法(即根據(jù)主色得到同一色調(diào)由淺入深的一系列顏色)在組件里。代碼已開源在github,歡迎fork并提交其他UI庫的主題色獲取方法。
分享給大家:效果預(yù)覽
插件源碼
完整項(xiàng)目源碼
適用場景理論上,只要是使用webpack + css-loader來進(jìn)行構(gòu)建的項(xiàng)目,都可以用類似的方法來實(shí)現(xiàn)主題色動態(tài)切換。
這個項(xiàng)目中有完整的示例, 基于vue + element-ui
其他一些常見項(xiàng)目我也有做了例子,可供參考:
vue-element-admin, 基于vue + element-ui
ant-design, 基于react + typescript + ant-design
ant-design-vue, 基于vue + ant-design-vue
iview, 基于vue + iview
效果: 原始顏色: 切換後:文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/108320.html
摘要:社區(qū)的認(rèn)可目前已經(jīng)是相關(guān)最多的開源項(xiàng)目了,體現(xiàn)出了社區(qū)對其的認(rèn)可。監(jiān)聽事件手動維護(hù)列表這樣我們就簡單的完成了拖拽排序。 完整項(xiàng)目地址:vue-element-admin 系類文章一:手摸手,帶你用vue擼后臺 系列一(基礎(chǔ)篇)系類文章二:手摸手,帶你用vue擼后臺 系列二(登錄權(quán)限篇)系類文章三:手摸手,帶你用vue擼后臺 系列三(實(shí)戰(zhàn)篇)系類文章四:手摸手,帶你用vue擼后臺 系列...
摘要:社區(qū)的認(rèn)可目前已經(jīng)是相關(guān)最多的開源項(xiàng)目了,體現(xiàn)出了社區(qū)對其的認(rèn)可。監(jiān)聽事件手動維護(hù)列表這樣我們就簡單的完成了拖拽排序。 完整項(xiàng)目地址:vue-element-admin 系類文章一:手摸手,帶你用vue擼后臺 系列一(基礎(chǔ)篇)系類文章二:手摸手,帶你用vue擼后臺 系列二(登錄權(quán)限篇)系類文章三:手摸手,帶你用vue擼后臺 系列三(實(shí)戰(zhàn)篇)系類文章四:手摸手,帶你用vue擼后臺 系列...
摘要:該插件主要用于提取主題顏色提取到的數(shù)據(jù)會掛載到下通過顏色替換再插入到,可達(dá)到動態(tài)修改主題的目的編譯后會在中插入,其內(nèi)容類似以下接著只要使用簡單的 css-color-extract-plugin Install npm install css-color-extract-plugin yarn add css-color-extract-plugin 該插件主要用于提取主題顏色...
摘要:該插件主要用于提取主題顏色提取到的數(shù)據(jù)會掛載到下通過顏色替換再插入到,可達(dá)到動態(tài)修改主題的目的編譯后會在中插入,其內(nèi)容類似以下接著只要使用簡單的 css-color-extract-plugin Install npm install css-color-extract-plugin yarn add css-color-extract-plugin 該插件主要用于提取主題顏色...
PM說要實(shí)現(xiàn)一個一鍵設(shè)置主題的功能,作為技術(shù),你能想到的實(shí)現(xiàn)方式有哪些呢? 1. 什么是主題樣式? 相信大家對網(wǎng)頁的主題樣式功能肯定不陌生。對于一些站點(diǎn),在基礎(chǔ)樣式上,開發(fā)者還會為用戶提供多種主題樣式以供選擇。 下面就是一個主題樣式功能:用戶可以在右側(cè)選擇自己喜歡的主題色,從而得到一個個性的頁面。 showImg(https://segmentfault.com/img/remote/146000...
閱讀 2396·2021-09-30 09:47
閱讀 1381·2021-09-28 09:35
閱讀 3260·2021-09-22 15:57
閱讀 2504·2021-09-22 14:59
閱讀 3653·2021-09-07 10:25
閱讀 3085·2021-09-03 10:48
閱讀 3048·2021-08-26 14:14
閱讀 952·2019-08-30 15:55