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

Sass @extend и наследование


Sass @extend директива

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

Директива @extend полезна, если у вас есть элементы с почти одинаковым стилем, которые отличаются только некоторыми мелкими деталями.

В следующем примере Sass сначала создается базовый стиль для кнопок (этот стиль будет использоваться для большинства кнопок). Затем мы создаем один стиль для кнопки "Report" и один стиль для кнопки "Submit". И кнопка "Report" и кнопка "Submit" наследуют все свойства CSS от класса .button-basic через директиву @extend. Кроме того, для них определены собственные цвета:

SCSS Синтаксис:

.button-basic  {
  border: none;
  padding: 15px 30px;
  text-align: center;
  font-size: 16px;
  cursor: pointer;
}

.button-report  {
  @extend .button-basic;
  background-color: red;
}

.button-submit  {
  @extend .button-basic;
  background-color: green;
  color: white;
}

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

CSS вывод:

.button-basic, .button-report, .button-submit {
  border: none;
  padding: 15px 30px;
  text-align: center;
  font-size: 16px;
  cursor: pointer;
}

.button-report  {
  background-color: red;
}

.button-submit  {
  background-color: green;
  color: white;
}

Используя директиву @extend вам не нужно указывать несколько классов для элемента в вашем HTML-коде, например: <button class="button-basic button-report">Сообщить об этом</button>. Вам просто нужно указать .button-report, чтобы получить оба набора стилей.

Директива @extend помогает сохранить ваш код Sass очень DRY (чистым).