安装react-app-rewired、react-app-rewire-less babel-plugin-import插件
执行命令:
npm安装react-app-rewired——save-dev npm安装react-app-rewire-less——save-dev npm安装babel-plugin-import——save-dev
配置包。json文件找到脚本属性,修改开始的值为react-app-rewired开始,如下图:<人物> 图>
,
根目录下创建config-overrides.js文件
const {injectBabelPlugin}=要求(“react-app-rewired”); const rewireLess=要求(“react-app-rewire-less”); 模块。出口=函数覆盖(配置、env) { 配置=rewireLess.withLoaderOptions ({ modifyVars: {“@primary-color”:“# 9 f35ff "}, })(配置、env); 返回配置; }
少做为CSS的一种形式的扩展,它并没有阉割CSS的功能,而是在现有的CSS语法上,添加了很多额外的功能,了解完安装过程,接下来看看少具体怎么使用
<强>变量强>
在减少中利用@符号进行变量的定义,很容易理解:复制代码
@nice-blue: # 5 b83ad; @light-blue: @nice-blue + # 111; #标题{颜色:@light-blue;}
以上代码编译后输出为:
#标题{颜色:# 6 c94be;}
中少支持变量名定义为变量,例如:
@fnord:“我fnord。”; @var:“fnord”; 内容:@@var;
解析后:
内容:“我fnord。”;
注意:中更少的变量为完全的“常”量,所以只能定义一次
<强>混合强>
中少在我们可以定义一些通用的属性集为一个类,然后在另一个类中去调用这些属性。下面有这样一个类:
.bordered { border-top:黑色虚线1 px; 边界底部:固体2 px黑色; }
那如果我们现在需要在其他类中引入那些通用的属性集,那么我们只需要在任何类中像下面这样调用就可以:
#菜单{ 颜色:# 111; .bordered; } . post一个{ 颜色:红色; .bordered; }
。与班级里面的属性样式都会在#菜单和. post一个中体现出来:
#菜单{ 颜色:# 111; border-top:黑色虚线1 px; 边界底部:固体2 px黑色; } . post一个{ 颜色:红色; border-top:黑色虚线1 px; 边界底部:固体2 px黑色; }
任何CSS类,id或者元素属性集都可以以同样的方式引入。
<>强带参数混合强>
在中越少,你还可以像函数一样定义一个带参数的属性集合:
.border-radius (@radius) { border - radius: @radius; -moz-border-radius: @radius; -webkit-border-radius: @radius; }
然后在其他类中像这样调用它:
#标题{ .border-radius (4 px); } .button { .border-radius (6 px); }
我们还可以像这样给参数设置默认值:
.border-radius (@radius: 5 px) { border - radius: @radius; -moz-border-radius: @radius; -webkit-border-radius: @radius; }
所以现在如果我们像这样调用它的话:
#标题{ .border-radius; }
半径的值就会是5 px。你也可以定义不带参数属性集合,如果你想隐藏这个属性集合,不让它暴露到CSS中去,但是你还想在其他的属性集合中引用,你会发现这个方法非常的好用:
.wrap () { 文本绕排:包装; 空白:pre-wrap; 空白:-moz-pre-wrap; 自动换行:break-word; } 前{.wrap}
输出:
{前 文本绕排:包装; 空白:pre-wrap; 空白:-moz-pre-wrap; 自动换行:break-word; }
<强> @arguments变量强>
@arguments包含了所有传递进来的参数。如果你不想单独处理每一个参数的话就可以像这样写: