混合:
混合可以将一个定义好的classA轻松的引入到另一个classB中,从而简单实现classB继承classA中的所有属性。任何CSS中的class或者id都可以引入
Less:
1
2
3
4
5
6
|
.aWidth{
width
:
400px
;}
#aHeight{
height
:
600px
;}
p{
.aWidth;
#aHeight;
}
|
CSS:
1
2
3
4
5
6
7
8
9
10
|
.aWidth {
width
:
400px
;
}
#aHeight {
height
:
600px
;
}
p {
width
:
400px
;
height
:
600px
;
}
|
带选择器的混合集:
混合集不仅可以包含各种属性,而且可以包含各种选择器
Less:
1
2
3
4
5
6
7
8
|
.my-hover-mixin(){//加个空括号,不执行这段代码的编译
&:hover{
border
:
1px
solid
#ddd
;
}
}
button{
.my-hover-mixin;
}
|
CSS:
1
2
3
|
button:hover {
border
:
1px
solid
#ddd
;
}
|
不输出混合集:
如果你想创建一个混合集,但是却不想让它输出到你的样式中,你可以在混合集的名字后面加一个括号。这句话怎么理解呢?对比以下两段代码:
代码一:
Less:
1
2
3
4
5
6
7
8
9
10
11
12
|
.my-mixin{
color
:
black
;
}
/*看这里*/
.my-other-mixin{
background
:
white
;
}
.class{
.my-mixin;
/*看这里*/
.my-other-mixin;
}
|
CSS:
1
2
3
4
5
6
7
8
9
10
11
12
|
.my-mixin {
color
:
black
;
}
/*看这里*/
.my-other-mixin {
background
:
white
;
}
.class {
color
:
black
;
/*看这里*/
background
:
white
;
}
|
代码二:
Less:
1
2
3
4
5
6
7
8
9
10
11
12
|
.my-mixin{
color
:
black
;
}
/*看这里*/
.my-other-mixin(){
background
:
white
;
}
.class{
.my-mixin;
/*看这里*/
.my-other-mixin;
}
|
CSS:带空括号的混合集并没有编译过来,但是可以编译到另一个引用它的选择器里面
1
2
3
4
5
6
7
8
9
|
.my-mixin {
color
:
black
;
}
/*看这里*/
.class {
color
:
black
;
/*看这里*/
background
:
white
;
}
|
我们还可以带参数的调用,就像使用函数一样
Less:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
.filter(@blur){
-webkit-filter:blur(@blur);
-moz-filter:blur(@blur);
-ms-filter:blur(@blur);
filter:blur(@blur);
}
.border-radius(@radius:
5px
){
-webkit-border-radius: @radius;
-moz-border-radius: @radius;
border-radius: @radius;
}
#section{
.border-radius;
/*如果写公共样式的时候没有设定具体的数值,引用的时候就必须设定,否则出不来效果*/
.filter(
5px
);
}
#footer{.border-radius(
10px
);}
|
CSS:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
#section {
-webkit-border-radius:
5px
;
-moz-border-radius:
5px
;
border-radius:
5px
;
/*如果写公共样式的时候没有设定具体的数值,引用的时候就必须设定,否则出不来效果*/
-webkit-filter: blur(
5px
);
-moz-filter: blur(
5px
);
-ms-filter: blur(
5px
);
filter: blur(
5px
);
}
#footer {
-webkit-border-radius:
10px
;
-moz-border-radius:
10px
;
border-radius:
10px
;
}
|
带多个参数的混合
参数可以用逗号或分号分隔,但是推荐用分号分隔。
定义多个具有相同名称和参数数量的mixins是合法的,less会使用它可以使用的属性。如果使用mixin的时候只带一个参数,比如.mixin(red),这个属性会导致所有的mixin都会强制使用这个明确的参数:
Less:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
.mixin(@color) {
color
-1:
@color;
}
.mixin(@color; @
padding
:
2px
) {
color
-2:
@color;
padding
-2:
@padding;
}
.mixin(@color; @padding; @
margin
:
5px
) {
color
-3:
@color;
padding
-3:
@padding;
margin
: @margin @margin @margin @margin;
}
h
1
{
.mixin(
red
);
}
div{
.mixin(
green
;
4px
);
}
span{
.mixin(
blue
;
6px
;
8px
);
}
|
CSS:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
h
1
{
color
-1:
#ff0000
;
color
-2:
#ff0000
;
padding
-2:
2px
;
}
div {
color
-2:
#008000
;
padding
-2:
4px
;
color
-3:
#008000
;
padding
-3:
4px
;
margin
:
5px
5px
5px
5px
;
}
span {
color
-3:
#0000ff
;
padding
-3:
6px
;
margin
:
8px
8px
8px
8px
;
}
|
命名参数
引用mixin时可以通过参数名称而不是参数的位置来为mixin提供参数值,任何参数都通过它的名称来引用,而不是特定的顺序
Less:
1
2
3
4
5
6
7
8
9
10
11
|
.mixin(@
color
:
blue
; @
padding
:
10px
; @
margin
:
15px
;){
color
:@color;
padding
:@padding;
margin
:@margin;
}
.class
1
{
.mixin(@
margin
:
20px
; @
color
:
#e4393c
;)
}
.class
2
{
.mixin(
#bf6da5
;
60px
;)
}
|
CSS:
1
2
3
4
5
6
7
8
9
10
|
.class
1
{
color
:
#e4393c
;
padding
:
10px
;
margin
:
20px
;
}
.class
2
{
color
:
#bf6da5
;
padding
:
60px
;
margin
:
15px
;
}
|
@arguments变量
arguments在Javascript中代表所有的参数,在这里也是同样的意思,只不过用法稍有区别。如果你不想单个单个的处理参数,这一特性是很有用的:
Less:
1
2
3
4
5
6
7
8
|
.box-shadow(@x:
0
; @y:
0
; @blur:
1px
; @
color
:
#000
;){
-webkit-box-shadow: @arguments;
-moz-box-shadow: @arguments;
box-shadow: @arguments;
}
.big-
block
{
.box-shadow(
2px
;
5px
;)
}
|
CSS:
1
2
3
4
5
|
.big-
block
{
-webkit-box-shadow:
2px
5px
1px
#000000
;
-moz-box-shadow:
2px
5px
1px
#000000
;
box-shadow:
2px
5px
1px
#000000
;
}
|
!important关键字
在调用的混合集后面追加!important关键字,可以使混合集里面所有的属性都继承!important
Less:
1
2
3
4
5
6
7
8
9
10
|
.foo(@bg:
#f00
, @
color
:
#666
){
background
:@bg;
color
:@color;
}
.unimportant{
.foo;
}
.important{
.foo
!important
;
}
|
CSS:
1
2
3
4
5
6
7
8
|
.unimportant {
background
:
#ff0000
;
color
:
#666666
;
}
.important {
background
:
#ff0000
!important
;
color
:
#666666
!important
;
}
|
在这里,也可以体验一把Less在实际开发中关于提高代码维护,给我们带来的魅力
示例一
Less:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
@pink:
#f0f
;
#header{
h
2
{
font-size
:
26px
;
font-weight
:
bold
;
}
.sub_title{
color
:@pink;
}
.study_list{
color
:@pink+
111
;
}
p{
font-size
:
12px
;
a{
text-decoration
:
none
;
&:hover{
border-width
:
1px
;
color
:@pink+
666
;
}
}
}
}
|
CSS:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
#header h
2
{
font-size
:
26px
;
font-weight
:
bold
;
}
#header .sub_title {
color
:
#ff00ff
;
}
#header .study_list {
color
:
#ff6fff
;
}
#header p {
font-size
:
12px
;
}
#header p a {
text-decoration
:
none
;
}
#header p a:hover {
border-width
:
1px
;
color
:
#ffffff
;
}
|
示例二
Less:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
@url:
"../images"
;
.filter(@blur){
-webkit-filter:blur(@blur);
-moz-filter:blur(@blur);
-ms-filter:blur(@blur);
filter:blur(@blur);
}
.border-radius(@radius:
5px
){
-webkit-border-radius: @radius;
-moz-border-radius: @radius;
border-radius: @radius;
}
#loginForm{
width
:
80%
;
margin
:
0
auto
;
ul{
li{
margin
:
15px
0
;
&:nth-child(
2
){
position
:
relative
;
}
label{
color
:
#d4d2d2
;
font-family
:
'Microsoft Yahei'
;
font-weight
:
bold
;
font-size
:
1.1em
;
}
}
}
.imgBground{
width
:
100%
;
height
:
28
vh;
filter:
url
(blur.svg#blur);
.filter(
5px
);
.border-radius(
10px
);
background
:
url
(
'@{url}/1.jpg'
);
}
|
CSS:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#loginForm {
width
:
80%
;
margin
:
0
auto
;
}
#loginForm ul li {
margin
:
15px
0
;
}
#loginForm ul li:nth-child(
2
) {
position
:
relative
;
}
#loginForm ul li label {
color
:
#d4d2d2
;
font-family
:
'Microsoft Yahei'
;
font-weight
:
bold
;
font-size
:
1.1em
;
}
#loginForm .imgBground {
width
:
100%
;
height
:
28
vh;
filter:
url
(blur.svg#blur);
-webkit-filter: blur(
5px
);
-moz-filter: blur(
5px
);
-ms-filter: blur(
5px
);
filter: blur(
5px
);
-webkit-border-radius:
10px
;
-moz-border-radius:
10px
;
border-radius:
10px
;
background
:
url
(
'../images/1.jpg'
);
}
|
详情参考官方文档:
http://www.css88.com/doc/less/features/#mixins-feature
本文转自 frwupeng517 51CTO博客,原文链接:http://blog.51cto.com/dapengtalk/1862989