变量
LESS的变量用法非常简单,一看就懂:
@nice-blue: #5B83AD; @light-blue: @nice-blue + #111; #header { color: @light-blue; }
输出:
#header { color: #6c94be; }
记住,每个变量都只能定义一次的。
混合代码
混合代码就是可以把几个CSS的属性集都放到一个属性集里来写,假如说我们有这样一个类:
.bordered { border-top: dotted 1px black; border-bottom: solid 2px black; }
然后我们想在其他属性集里面包括这个类所描述的属性,我们只需要在其他属性集里面写上这个类名就好了,例如:
#menu a { color: #111; .bordered; } .post a { color: red; .bordered; }
最终编译出来的结果里,在#menu a和.post a这两个属性集里是不会显示“.bordered”的,而是把”.bordered“替换成相应的属性。除了使用类(.xxxxxx)你还可以用#id来混合。
层级规则
在LESS中,你可以使用层级的写法,比如说我们有这样一段CSS:
#header { color: black; } #header .navigation { font-size: 12px; } #header .logo { width: 300px; }
在LESS中,我们就可以写成这样:
#header { color: black; .navigation { font-size: 12px; } .logo { width: 300px; } }
你还可以混合使用伪选择器,这里有一个用混合方法重写的CSS类(&表示当前的父选择器):
.clearfix { display: block; zoom: 1; &:after { content: " "; display: block; font-size: 0; height: 0; clear: both; visibility: hidden; } }
运算符
任何一个数字、颜色和变量都可以进行运算,这里有几个例子:
@base: 5%; @filler: @base * 2; @other: @base + @filler; color: #888 / 4; background-color: @base-color + #111; height: 100% / 2 + @filler;
输入的结果和你想象的一样──LESS懂得分辨不同颜色和单位之间的不同,如果在一条表达式中有一个单位被使用了,比如:
@var: 1px + 5;
那么LESS就会使用这个单位作为最终结果输出──在这里就是6px了。
命名空间和访问器
有时候,你可能想要给你的变量和混合代码分组,可能为了方便组织,或者要封装起来。在LESS中这一切变得非常简易。比如说你要把#bundle下面的混合代码和变量打包起来以方便日后重用或者发布,你可以这样写:
#bundle { .button { display: block; border: 1px solid black; background-color: grey; :hover { background-color: white } } .tab { ... } .citation { ... } }
现在你要在另外一个规则集#header中使用上面包含的.button类,你可以这样子做:
#header a { color: orange; #bundle > .button; }
LESS还允许你访问其他规则集中的属性或者变量(所谓的”访问器“):
#defaults { @width: 960px; @color: black; } .article { color: #294366; } .comment { width: #defaults[@width]; color: .article['color']; }
变量和访问器在使用上几乎可以没什么差别,选择哪一个才能最适应实际情况──如果属性只需要被访问一次的话应该是选择访问器会比较合理一下。
访问域
LESS访问域跟编程语言的访问域非常相似。编译器首先会在当前区域内找相应变量和混合代码,如果没有找到,则到上一层寻找,反复如此,因此声明的先后顺序就变得不是很重要了。
@var: red; #page { @var: white; #header { color: @var; // white } }
注释
C语言风格的注释和行内注释都是可以接受的:
/* One hell of a comment */ @var: red; // Get in line! @var: white;
引用
LESS的导入功能跟你想不会差多少。你可以在代码中引用别的LESS文件,所有在引用文件中的变量都将可用。如果你引用的是以.less为后缀的文件,那么引用时后缀名可写可不写:
@import "library"; @import "typo.css";
LESS果然是一种很简洁的语言吧!