您好,登錄后才能下訂單哦!
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 ,添加配置內容:
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文件的配置
"scripts": { "start": "node color && node scripts/start.js", "build": "node color && node scripts/build.js", "test": " node color && node scripts/test.js" },
頁面調用方法切換主題
頁面點擊主題切換配置,這樣寫的緣故是因為我配置的變量不同:
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) });
由于之后的配置中新增的樣式需要遵循主題配置的可以選擇使用統一變量,所以變量設置的時候,可以添加 var(--PC)
的全局變量設置
總結
以上所述是小編給大家介紹的react實現antd線上主題動態切換功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。