国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

react實現antd線上主題動態切換功能

2024-05-06 15:35:58
字體:
來源:轉載
供稿:網友

demo

框架選擇: create-react-app + mobx + webpack5 + antdesign

說明

由于最近公司有多個主題的共存性,所以需要實現線上主題切換的功能,所以本文主要描述的是基于create-react-app之上的主題切換。
CSS切換 有考慮過根據用戶選擇的主題在切換的時候選擇加載頁面css文件的區分方案,但是考慮到這種形式需要在頁面切換的時候去reload,因為htmlDOM是在css與JS的結合產物,用戶體驗不是很好。
Less切換 單純引入所有的less文件去做切換,這樣不能實現css的動態加載了,會增加無用css文件的加載 最后通過比較及查詢,獲取到第三方插件:antd-theme-generator
功能實現原則:使用 less 的 modifyVars 完成 antd 的主題變量替換。

安裝 

antd-theme-generator

缺點: 需要配合 LESS v2.7.x 使用,不兼容IE。

cnpm install antd-theme-generator -S

添加主題切換文件 color.js

根目錄下添加文件 color.js ,添加配置內容:

const path = require('path');const { generateTheme, } = require('antd-theme-generator');const options = { stylesDir: path.join(__dirname, './src/css'), antDir: path.join(__dirname, './node_modules/antd'), varFile: path.join(__dirname, './src/css/variables.less'), mainLessFile: path.join(__dirname, './src/css/index.less'), themeVariables: [ //需要動態切換的主題變量  '@primary-color',  '@secondary-color',  '@text-color',  '@text-color-secondary',  '@heading-color',  '@layout-body-background' ], indexFileName: 'index.html', outputFilePath: path.join(__dirname, './public/color.less'), //頁面引入的主題變量文件}generateTheme(options).then(less => { console.log('Theme generated successfully');}).catch(error => { console.log('Error', error);});

CSS 文件下添加less文件

添加 variables.less 文件:

@import "~antd/lib/style/themes/default.less"; //引入antd的變量文件,實現變量的覆蓋@primary-color: #1DA57A;@link-color: #1DA57A;@btn-primary-bg:#1DA57A;

HTML文件中加入全局less配置

index.html 中加入全局 less 變量配置,從而使 less 的 modifyVars 方法可以全局使用,切換主題時覆蓋 default.less 中的變量:

<!-- 使用自動生成的color.less,主要路徑與index.html文件同級 --><link rel="stylesheet/less" type="text/css" href="%PUBLIC_URL%/color.less" rel="external nofollow" /> <script> window.less = {  async: false,  env: 'production' };</script><script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/less.js/2.7.2/less.min.js"></script>

項目啟動處修改

修改項目運行配置 package.json ,項目運行的同時完成頁面color文件的配置

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 法库县| 平泉县| 兴海县| 华宁县| 吉水县| 武清区| 英吉沙县| 霸州市| 都江堰市| 安远县| 青冈县| 尼木县| 化州市| 江口县| 淮阳县| 鸡西市| 普兰店市| 孟村| 建瓯市| 宝应县| 渝北区| 司法| 杭锦旗| 杭州市| 乐平市| 佛冈县| 丁青县| 罗江县| 罗定市| 肥城市| 湘潭县| 巧家县| 巫溪县| 崇信县| 桂东县| 常德市| 双峰县| 胶州市| 台湾省| 达拉特旗| 清徐县|