React中使用less修改界面主题 less.modifyVars
- 新建两个文件一个是theme.less样式文件,一个是less.js文件,js文件的内容可以在 点击下载。
- 安装 less 和 less-loader
npm i less --save npm i less-loader --save
- 配置环境,在webpack.config.js文件里面修改,找到css的规则,修改三个地方 css-loader’的test: /.css$/ 改为 /.(css|less)/ css-loader’的 importLoaders:1改为2 添加loader: less-loader 添加完后类似以下代码:
{ test: /.(css|less)/, // 添加less或者css use: [ require.resolve(style-loader), { loader: require.resolve(css-loader), options: { importLoaders: 2, // 改为2 }, }, { loader: require.resolve(postcss-loader), options: { ident: postcss, plugins: () => [ require(postcss-flexbugs-fixes), autoprefixer({ browsers: [ >1%, last 4 versions, Firefox ESR, not ie < 9, ], flexbox: no-2009, }), ], }, }, // 添加less-loader { loader: less-loader } ] }
- 在 index.html 页面将 less 文件和 js 文件引入,注意路径问题
<link rel="stylesheet/less" href="/theme.less"> <script type="text/javascript" src="/less.min.js"></script>
在 less 文件里定义主题变量
@primary-color: white; body{ background: @primary-color; /* 我这里使用的是antd框架 */ .ant-btn{ color: @primary-color; } }
- 在修改的页面,引入less
import less from less; // 通过方法修改主题 changeTheme = (value) => { less.modifyVars({ @primary-color: value }); }