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

Инструкция Sass @extend

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

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

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

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">Report this</button>. Достаточно указать .button-report, чтобы получить两组 стилей.

@extend Инструкции помогают поддерживать ваш код Sass очень сухим (DRY).