手机版

详细说明如何在React项目中安装和使用Less

时间:2021-08-26 来源:互联网 编辑:宝哥软件园 浏览:

较少的安装配置

安装反应-应用-重新布线,反应-应用-重新布线-无,巴别塔-插件-导入插件

执行命令:

NPM安装react-app-rewire-save-dev NPM安装react-app-rewire-less-save-dev NPM安装babel-plugin-import-save-dev配置package.json文件找到scripts属性,修改start值为react-app-rewire start,如下图:所示

在根目录下创建config-overrides.js文件

const { injectBabelPlugin }=require(' react-app-rewired ');const Rewireless=require(' react-app-Rewireless-less ');module.exports=函数重写(config,env){ config=rewireless . with loaderooptions({ modify var s : { ' @ primary-color ' : ' # 9f 35ff ' },})(config,env);返回配置;}少的基本用途

作为CSS的一种扩展形式,less并没有阉割CSS的功能,而是在现有的CSS语法上增加了很多额外的功能。了解了安装过程之后,我们再来具体看看如何使用LESS。

可变的

用@符号来定义变量很容易理解:复制代码

@ nice-blue : # 5b 83AD;@浅蓝色: @尼斯蓝# 111;# header { color: @浅蓝色;}上述代码编译后的输出为:

# header { color : # 6 c94 be;}less支持将变量名定义为变量,例如:

@fnord:“我是fnord。”;@ var :“fnord”;content: @ @ var解析后:

内容:“我是fnord。”;注意:LESS中的变量是一个完整的“常量”,所以只能定义一次

混合

在LESS中,我们可以将一些常见的属性集定义为一个类,然后在另一个类中调用这些属性。这是一个班级。边框{ border-top:虚线1px黑色;border-bottom:纯黑2px}那么如果我们现在需要将这些公共属性集引入到其他类中,我们只需要在任何类中调用它们,如下所示。

#菜单a { color: # 111。有边界的;}.贴出一张{ color:红色;有边界的;{中的属性样式。带边框的类将反映在#menu a和。张贴a :

#菜单a { color: # 111边框-top:点状1px黑色;border-bottom:纯黑2px}.贴出一张{ color:红色;边框-top:点状1px黑色;border-bottom:纯黑2px}任何CSS类、id或元素属性集都可以用同样的方式引入。

与参数混合

在LESS中,您还可以像函数一样定义一组带有参数:的属性。边框半径(@radius) {边框半径: @ radius;-moz-border-radius : @半径;-web kit-border-radius : @ radius;}然后像这样在其他类中调用它:

#header {。边界半径(4px);}.按钮{。边界半径(6px);}我们还可以为这样的参数设置默认值:border-radius(@ radius : 5px){ border-radius : @ radius;-moz-border-radius : @半径;-web kit-border-radius : @ radius;}所以现在如果我们这样称呼,

#header {。边界半径;}半径的值将为5px。也可以定义不带参数的属性集。如果你想隐藏这个属性集,防止它暴露给CSS,但你仍然想在其他属性集中引用它,你会发现这个方法非常容易使用:wrap(){ text-wrap : wrap;white-space:预包装;white-space :-moz-预包装;word-wrap:断字;}pre {。wrap}输出:

预{ text-wrap : wrap;white-space:预包装;white-space :-moz-预包装;word-wrap:断字;}@arguments变量

@arguments包含传入的所有参数。如果不想单独处理每个参数,可以这样写:box-shadow (@x: 0,@y: 0,@blur: 1px,@ color : # 000){ box-shadow : @ arguments;-moz-box-shadow : @ arguments;-web kit-box-shadow : @ arguments;}.箱形阴影(2px,5px);将输出:

box-shadow : 2px 5px 1px # 000;-moz-box-shadow : 2px 5px 1px # 000;-web kit-box-shadow : 2px 5px 1px # 000;模式匹配和引导表达式

在某些情况下,我们希望根据传入的参数更改混合的默认渲染,例如以下示例:mixin (@s,@ color){ 0.}.类{。mixin(@switch,# 888);}如果你愿意。mixin要根据不同的@switch值表现不同,请按如下方式进行设置:mixin(深色,@color) { color:加深(@color,10%);}.mixin (light,@ color){ color : light(@ color,10%);}.mixin (@_,@ color){ display : block;}现在,如果运行:

@switch:灯;类{。mixin(@switch,# 888);}您将获得以下CSS:class { color: # a2a2a2display:块;}如上所述,mixin将获得输入颜色的浅色。如果@switch设置为深色,你会得到深色。具体实现如下:

第一个混合定义不匹配,因为它只接受暗作为第一个参数,第二个混合定义成功匹配,因为它只接受光,第三个混合定义成功匹配,因为它接受任意值

只会使用匹配的混合物。变量可以匹配任何传入值,而变量以外的固定值只匹配其相等的传入值。我们还可以匹配多个参数:mixin(@ a){ color : @ a;}.mixin (@a,@b) { color: fade(@a,@ b);}当我们想要根据表达式而不是值和参数进行匹配时,指导非常有用。如果你非常熟悉函数式编程,你可能已经使用过指南。

为了尽可能保留CSS的声明性,LESS通过引导混合而不是if/else语句来实现条件判断,因为前者已经在@media查询属性中定义了。从这个例子开始:mixin (@a)当(明度(@a)=50%) {底色-颜色:黑色;}.mixin (@a)当(明度(@a) 50%) { background-color:白色;}.mixin(@ a){ color : @ a;}当关键字用于定义引线序列时(本例中只有一个引线)。接下来,我们运行以下代码:class1 {。mixin (# DDD)}。class2 {。mixin (# 555)}将获得:

. class1 {底色-颜色:黑色;color: # ddd}.class2 { background-color:白色;color: # 555}导航中所有可用的比较操作为:===。此外,关键字true仅表示布尔真值,以下两种混合是相同的:真理(@ a)当(@ a) {时.}.当(@ a=true)时为true(@ a).}除关键字true之外的所有值都被视为布尔值false:类{。真理(40);//将不符合上述任何定义。}前导序列用逗号“,”分隔,当且仅当所有条件都满足时,它将被视为成功匹配。

那个。mixin (@ a)当(@ a 10)、(@ a-10) {时.}指南可以没有参数,或者比较参数:

@ media: mobile。当(@media=mobile)时,mixin (@a).}.当(@media=desktop) {时,mixin (@a).}.当(@a @b) { width: @a }时,最大值(@a,@b)。max (@a,@b) when (@a @b) {width: @b}最后,如果我们想根据值类型进行匹配,可以使用is*函数:当(isnumber (@ b))时,mixin (@ a,@ b: 0).}.当(iscolor (@ b))时,mixin (@ a,@ b: black).}以下是常见的检测功能:

Is color is number is string is关键字is URL如果要确定一个值是纯数字还是某个单位数量,可以使用以下函数:

Ispixel ispercentage isem。最后,可以再补充一点。在导频序列中,and关键字可用于实现and条件:mixin (@ a) when (isnumber (@ a))和(@ a)0.}使用not关键字实现或条件。不在(@b 0)时mixin (@b).}嵌套规则

LESS允许我们以嵌套的方式编写级联样式。我们先来看看下面的CSS:

# header { color: black} #标题。导航{ font-size : 12px;} #标题。徽标{ width: 300px} # header . logo : hover { text-decoration : none;}在LESS中,我们可以这样写:

# header { color: black。导航{ font-size : 12px;} .徽标{ width: 300px:悬停{text-decoration : none}}或者这样写:

# header { color: black。导航{ font-size: 12px }。徽标{ width: 300px: hover { text-decoration : none } }代码比较简洁,感觉有点像DOM结构格式。注意符号的使用——如果你想写一个序列选择器而不是后代选择器,你可以使用它们。这对于伪类尤其有用,例如: Hover和:focus,例如:带边框的{。向左浮动{ float:} .top { margin: 5px}}将输出

. bordered.float { float: left}.有边的。top { margin: 5px}操作

任何数字、颜色或变量都可以参与操作。让我们看一组例子:

@ base : 5%;@ filler : @ base * 2;@ other: @ base @ fillercolor : # 888/4;背景色: @基色# 111;height : 100%/2 @填充物;LESS的操作超出了我们的预期,可以区分颜色和单位。如果单元操作如下,

@ var : 1px 5;LESS将输出6px括号,也允许:

width :(@ var 5)* 2;并且操作:可以在复合属性中执行

border :(@ width * 2)solid black命名空间

有时,您可能会打包一些变量或混合模块来更好地组织CSS,或者只是为了更好地封装。在#bundle中定义了一些属性集后,可以重用:如下所示。

#bundle {。button(){ display : block;border: 1px纯黑;背景-颜色:灰色;悬停{背景色:白色}}。选项卡{.}.引文.}}你只需要介绍。#header a中的按钮3360是这样的

# header a { color: orange#捆绑。按钮;}字符串插值

变量可以以类似于ruby和php的方式嵌入到字符串中,例如@{name} structure :

@ base-URL : ' http://assets . fnord.com ';背景-image : URL(' @ { base-URL }/images/BG . png ');以上就是本文的全部内容。希望对大家的学习有帮助,支持我们。

版权声明:详细说明如何在React项目中安装和使用Less是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。