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 (чистым).