Sass @mixin 和 @include

Sass @mixin 和 @include

@mixin 指令允许我们定义一个可以在整个样式表中重复使用的样式。

@include 指令可以将混入(mixin)引入到文档中。


@mixin 与 @include

混入(mixin)通过 @mixin 指令来定义。

Sass @mixin 语法:

@mixin name {
  property: value;
  property: value;
  ...
}

以下实例创建一个名为 "important-text" 的混入:

Sass 语法:

@mixin important-text {
  color: red;
  font-size: 25px;
  font-weight: bold;
  border: 1px solid blue;
}

提示: Sass 的连接符号 - 与下划线符号 _ 是相同的,也就是 @mixin important-text { } 与 @mixin important_text { } 是一样的混入!


使用混入

@include 指令可用于包含一混入:

Sass @include 混入语法:

selector {
  @include mixin-name;
}

因此,包含 important-text 混入代码如下:

Sass 代码:

.danger {
  @include important-text;
  background-color: green;
}

将以上代码转换为 CSS 代码,如下所示:

CSS 代码:

.danger {
  color: red;
  font-size: 25px;
  font-weight: bold;
  border: 1px solid blue;
  background-color: green;
}

混入中也可以包含混入,如下所示:

Sass 代码:

@mixin special-text {
  @include important-text;
  @include link;
  @include special-border;
}



向混入传递变量

混入可以接收参数。我们可以向混入传递变量。

定义可以接收参数的混入:

Sass Syntax:

/* 混入接收两个参数 */
@mixin bordered($color, $width) {
  border: $width solid $color;
}

.myArticle {
  @include bordered(blue, 1px);  // 调用混入,并传递两个参数
}

.myNotes {
  @include bordered(red, 2px); // 调用混入,并传递两个参数
}

以上实例的混入参数为设置边框的属性 (color 和 width) 。

将以上代码转换为 CSS 代码,如下所示:

CSS 代码:

.myArticle {
  border: 1px solid blue;
}

.myNotes {
  border: 2px solid red;
}

定义默认值

混入的参数也可以定义默认值,语法格式如下:

Sass 代码:

@mixin bordered($color: blue, $width: 1px) {
  border: $width solid $color;
}

然后,您只需要指定在包含mixin时更改的值:

Sass 代码:

.myTips {
  @include bordered($color: orange);
}


浏览器前缀使用混入

浏览器前缀使用混入也是非常方便的,如下实例:

Sass 语法:

@mixin transform($property) {
  -webkit-transform: $property;
  -ms-transform: $property;
  transform: $property;
}

.myBox {
  @include transform(rotate(20deg));
}

将以上代码转换为 CSS 代码,如下所示:

CSS 代码:

.myBox {
  -webkit-transform: rotate(20deg);
  -ms-transform: rotate(20deg);
  transform: rotate(20deg);
}