Less 中的混入指将通用的样式抽取出来放在一个 class 下面,然后在需要的地方应用该 class。
在 LESS 中我们可以为一个 class 定义一些通用的属性集,然后在另一个 class 中去调用这些属性。下面有这样一个 class:
// 公用的样式
.bordered {
border-top: dotted 1px black;
border-bottom: solid 2px black;
}如果我们现在需要在其他 class 中引入那些通用的属性集,那么我们只需要在任何 class 中像下面这样调用就可以了:
#menu a {
color: #111;
// 引入公用的样式
.bordered;
}
.post a {
color: red;
// 引入公用的样式
.bordered;
}.bordered class 里面的属性样式都会在 #menu a 和 .post a 中体现出来,编译 less 输出的 CSS 如下:
.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;
}注意:在 Less 中,任何 CSS 的 class, id 或者 元素 属性集都可以以同样的方式引入。
在 LESS 中,你还可以像函数一样定义一个带参数的属性集合。例子:
// 这里定义了一个类,默认参数为 5px
.rounded-corners (@radius: 5px) {
border-radius: @radius;
-webkit-border-radius: @radius;
-moz-border-radius: @radius;
}
#header {
// 调用前面定义的类 rounded-corners,参数使用默认值 5px
.rounded-corners;
}
#footer {
// 调用前面定义的类 rounded-corners,且传递参数 10px
.rounded-corners(10px);
}编译 less,输出的 CSS 如下:
#header {
border-radius: 5px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
}
#footer {
border-radius: 10px;
-webkit-border-radius: 10px;
-moz-border-radius: 10px;
}使用 Less 动态设置圆角大小,通过参数 @radius 动态传递圆角大小。如下:
// 定义通用代码
.border-radius (@radius) {
border-radius: @radius;
-moz-border-radius: @radius;
-webkit-border-radius: @radius;
}
#header {
// 调用,圆角为 4px
.border-radius(4px);
}
.button {
// 调用,圆角为 6px
.border-radius(6px);
}编译 less,输出的 CSS 如下:
#header {
border-radius: 4px;
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
}
.button {
border-radius: 6px;
-moz-border-radius: 6px;
-webkit-border-radius: 6px;
}使用 Less 给参数设置默认值:
// 定义公用样式,设置参数 @radius 默认值为 5px
.border-radius (@radius: 5px) {
border-radius: @radius;
-moz-border-radius: @radius;
-webkit-border-radius: @radius;
}
#header {
// 引用公用样式,采用默认值参数
.border-radius;
}编译 less,输出的 CSS 如下:
#header {
border-radius: 5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
}你也可以定义不带参数属性集合,如果你想隐藏这个属性集合,不让它暴露到 CSS 中去,但是你还想在其他的属性集合中引用。那么在定义属性集合时添加一对空括号集合。例子:
// 下面带了 () 括号,所以不会输出到 CSS,除非手动调用
.wrap() {
text-wrap: wrap;
white-space: pre-wrap;
white-space: -moz-pre-wrap;
word-wrap: break-word;
}
pre {
// 引用属性集合,即调用
.wrap
}编译 less,输出的 CSS 如下:
pre {
text-wrap: wrap;
white-space: pre-wrap;
white-space: -moz-pre-wrap;
word-wrap: break-word;
}