ЛУЧШИЙ САЙТ ДЛЯ ВЕБ-РАЗРАБОТЧИКОВ
Sass. Уроки для начинающих

Sass @mixin и @include


Sass Миксины

Директива @mixin позволяет создавать CSS-код, который будет повторно использоваться на всем веб-сайте.

Директива @include создана, чтобы вы могли использовать (включать) миксин.


Определение миксина

Миксин определяется с помощью директивы @mixin.

Sass @mixin Синтаксис:

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

В следующем примере создается миксин с именем "important-text":

SCSS Синтаксис:

@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;
}

Т.о., чтобы включить миксин с важным текстом, созданный выше:

SCSS Синтаксис:

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

Транспиллер Sass преобразует вышеуказанное в обычный CSS:

CSS вывод:

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

Выполнить пример »

Миксин также может включать другие миксины:

SCSS Синтаксис:

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


Передача переменных в миксин

Миксины принимают аргументы. Таким образом вы можете передавать переменные в миксин.

Вот как определить миксин с аргументами:

SCSS Синтаксис:

/* Определите миксин с двумя аргументами */
@mixin bordered($color, $width) {
  border: $width solid $color;
}

.myArticle {
  @include bordered(blue, 1px);  // Вызов миксина с двумя значениями
}

.myNotes {
  @include bordered(red, 2px); // Вызов миксина с двумя значениями
}

Обратите внимание, что аргументы задаются как переменные, а затем используются как значения (цвет и ширина) свойства границы.

После компиляции CSS будет выглядеть так:

CSS вывод:

.myArticle {
  border: 1px solid blue;
}

.myNotes {
  border: 2px solid red;
}

Выполнить пример »


Значения по умолчанию для миксина

Также возможно определить значения по умолчанию для переменных миксина:

SCSS Синтаксис:

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

Затем вам нужно только указать значения, которые изменяются при включении миксина:

SCSS Синтаксис:

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

Использование миксина для префиксов поставщиков

Еще одно хорошее использование миксина - префиксы поставщиков.

Вот пример преобразования:

SCSS Синтаксис:

@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);
}