您好,登錄后才能下訂單哦!
demo
框架選擇: create-react-app + mobx + webpack5 + antdesign
說明
安裝
antd-theme-generator
缺點: 需要配合 LESS v2.7.x 使用,不兼容IE。
cnpm install antd-theme-generator -S
添加主題切換文件 color.js
根目錄下添加文件 color.js ,添加配置內(nèi)容:
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: [ //需要動態(tài)切換的主題變量 '@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的變量文件,實現(xiàn)變量的覆蓋 @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文件的配置
"scripts": { "start": "node color && node scripts/start.js", "build": "node color && node scripts/build.js", "test": " node color && node scripts/test.js" },
頁面調(diào)用方法切換主題
頁面點擊主題切換配置,這樣寫的緣故是因為我配置的變量不同:
window.less.modifyVars( { '@primary-color': '#aaa', '@menu-dark-item-active-bg':'#aaa', '@link-color': '#aaa', '@text-color':'#aaa', '@btn-primary-bg': '#aaa', } ) .then(() => { message.success('主題切換成功') }) .catch(error => { message.error(`主題切換失敗`); console.log(error) });
由于之后的配置中新增的樣式需要遵循主題配置的可以選擇使用統(tǒng)一變量,所以變量設(shè)置的時候,可以添加 var(--PC)
的全局變量設(shè)置
總結(jié)
以上所述是小編給大家介紹的react實現(xiàn)antd線上主題動態(tài)切換功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對億速云網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。