三、Sass混合宏
在Sass中,我们可以使用“混合宏(mixin)”来处理经常被多个地方使用的相同的CSS代码块。混合宏,跟JavaScript中的函数很相似,我们可以称之为“Sass中的函数”。
一、混合宏的定义和调用
在Sass中,我们使用“@mixin”来定义一个混合宏,然后使用“@include”来调用一个混合宏。
语法:
代码语言:javascript复制
//定义一个混合宏
@mixin 混合宏名
{
样式属性1:取值1;
样式属性2:取值2;
……
}
//调用一个混合宏
选择器
{
@include 混合宏名;
}
说明:
Sass中的混合宏跟C语言的宏是非常相似的。所谓的“宏”,指的是可重用的代码块。
@mixin用来定义一个混合宏,@include用来调用一个混合宏。此外,@mixin跟CSS3中的@font-face和@media语法是一样的。
举例:
代码语言:javascript复制@mixin radius
{
border-radius:5px;
-webkit-border-radius:5px;
-moz-border-radius:5px;
}
#heade
{
color:red;
@include radius;
}
#foote
{
color:green;
@include radius;
}
编译出来的CSS代码如下:
代码语言:javascript复制
#heade
{
color: red;
border-radius: 5px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
}
#foote
{
color: green;
border-radius: 5px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
}
二、混合宏的参数
在Sass中,我们不仅可以定义“不带参数的混合宏”,也可以定义“带参数的混合宏”。其中,混合宏的参数可以是1个,也可以是N个。
举例:带一个参数的混合宏
代码语言:javascript复制
@mixin radius($radius)
{
border-radius:$radius;
-webkit-border-radius:$radius;
-moz-border-radius:$radius;
}
#heade
{
color:red;
@include radius(3px);
}
#foote
{
color:green;
@include radius(5px);
}
编译出来的CSS代码如下:
代码语言:javascript复制
#heade
{
color: red;
border-radius: 3px;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
}
#foote
{
color: green;
border-radius: 5px;
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
}
举例:带多个参数的混合宏
代码语言:javascript复制1
2
3
4
5
6
7
8
9
10
11
12
13
14
代码语言:javascript复制@mixin center($width,$height)
{
width: $width;
height: $height;
position: absolute;
top: 50%;
left: 50%;
margin-top: -($height) / 2;
margin-left: -($width) / 2;
}
div
{
@include center(100px,80px);
}
编译出来的CSS代码如下:
代码语言:javascript复制div
{
width: 100px;
height: 80px;
position: absolute;
top: 50%;
left: 50%;
margin-top: -40px;
margin-left: -50px;
}
分析:
这个混合宏里面的CSS代码是一个功能代码块,是用来同时实现元素的水平居中和垂直居中的。在实际开发中,对于这些功能代码块,我们都是配合混合宏(mixin)来使用,非常的简单快速。现在大家体会到Sass比纯CSS强大的地方了吧。对于这种开发技巧,更多请参考“HTML和CSS进阶教程”中的“第13章 CSS技巧”。
在Sass中,我们还可以为混合宏传递的参数定义默认值。混合宏参数的默认值,跟变量的默认值是非常相似的,小伙伴们记得对比一下,这样更能加深理解和记忆。