一、LESS的基本使用
经过上述介绍,我们知道Less属于预处理器 可以简单理解Less其实就是CSS的扩展语言,它增加了一些CSS原本没有的东西,如变量、混合(mixin)、函数等功能,让CSS`变得更容易书写和维护
1.变量
Less可以使用一个变量,需要配合@,并且支持表达式
@width:10px;@height:@width+10px;#header{width:@width;height:@height;}
编译成:
#header{width:10px;height:20px;}
2.混入Mixins
Mixins常常用于将一组通用的属性混合到另一个需要的地方,混入时需要配合()使用
.bordered{border-top:dotted 1px black;border-bottom:solid 2px black;}#menu a{color:#111;.bordered();}.post a{color:red;.bordered();}
编译成
.bordered{border-top:dotted 1px black;border-bottom:solid 2px black;}#menu a{color:#111;border-top:dotted 1px black;border-bottom:solid 2px black;}.post a{color:red;border-top:dotted 1px black;border-bottom:solid 2px black;}
3.嵌套Nesting
Less书写的代码更加简洁,模仿了HTML的组织结构,例如以前
#header{color:black;}#header .navigation{font-size:12px;}#header .logo{width:300px;}
使用Less
#header{color:black;.navigation{font-size:12px;}.logo{width:300px;}}
另外,在Less内,&可以表示当前选择器的父级
4.运算符
Less支持+、-、*、/算术运算符,可以对任何数字、颜色或变量进行运算
需要注意:算术运算符在加、减或比较之前会进行单位换算。计算的结果以最左侧操作数的单位类型为准。如果单位换算无效或失去意义,则忽略单位。无效的单位换算例如:px到cm或rad到%的转换
// 所有操作数被转换成相同的单位@conversion-1:5cm+10mm;// 结果是 6cm@conversion-2:2-3cm-5mm;// 结果是 -1.5cm// conversion is impossible@incompatible-units:2+5px-3cm;// 结果是 4px// example with variables@base:5%;@filler:@base*2;// 结果是 10%@other:@base+@filler;// 结果是 15%//对颜色的计算@color:#224488/2;//结果是 #112244background-color:#112244+#111;// 结果是 #223355
另外,乘法和除法不作转换
@base:2cm*3mm;// 结果是 6cm
5.转义Escaping
Less可以使用使用任意字符串作为属性或变量值,前提是格式:~"anything"或~'anything'
@min768:~"(min-width: 768px)";.element{@media @min768{font-size:1.2rem;}}
编译为
@media(min-width:768px){.element{font-size:1.2rem;}}
6.函数Functions
Less内置了非常多的函数,用于转换颜色、处理字符串、算术运算等
@base:#f04615;@width:0.5;.class{width:percentage(@width);// returns `50%`color:saturate(@base,5%);background-color:spin(lighten(@base,25%),8);}
这个例子利用percentage函数将 0.5 转换为 50%,利用saturate将颜色饱和度增加 5%,以及利用lighten将颜色亮度降低 25% 并且利用spin将色相值增加 8
7.命名空间和访问符
有时,出于组织结构或仅仅是为了提供一些封装的目的,你希望对混合(mixins)进行分组。你可以用Less更直观地实现这一需求。
#bundle(){.button{display:block;border:1px solid black;background-color:grey;&:hover{background-color:white;}}}
现在,如果我们希望把.button类混合到#header a中,我们可以这样做:
#header a{color:orange;#bundle.button();// 还可以书写为 #bundle > .button 形式}
编译成
#header a{color:orange;display:block;border:1px solid black;background-color:grey;}#header a:hover{background-color:white;}
8.映射Maps
从Less 3.5版本开始,可以将混合(mixins)和规则集(rulesets)作为一组值的映射(map)使用。简单来说就是想js中的对象.属性来读取值,但是是用[]的形式
#colors(){primary:blue;secondary:green;}.button{color:#colors[primary];border:1px solid #colors[secondary];}
编译成
.button{color:blue;border:1px solid green;}
9.作用域Scope
Less中的作用域的概念与JavaScript类似,首先在本地查找变量和混合(mixins),如果找不到,则从“父”级作用域继承
@var:red;#page{@var:white;#header{color:@var;// white}}
并且变量类似js有提升效果,例如
@var:red;#page{#header{color:@var;// white}@var:white;}
10.注释
less的注释跟js一致,分单行注释和多行注释
/* 一个块注释
* style comment! */@var:red;// 这一行被注释掉了!@var:white;
11.导入Importing
Less也支持导入语法,如果导入的文件是.less扩展名,则可以将扩展名省略掉
@import"library";// library.less@import"typo.css";
作者:深度剖析JavaScript
链接:https://www.jianshu.com/p/6d5f8ec6e2f4
来源:
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。