У меня есть это в моем файле SCSS:
.class-a{
display: inline-block;
//some other properties
&:hover{
color: darken(#FFFFFF, 10%);
}
}
.class-b{
//Inherite class-a here
//some properties
}
В классе b я хотел бы унаследовать все свойства и вложенные объявления class-a
. Как это сделать? Я пытался использовать @include class-a
, но это просто выдает ошибку при компиляции.
inheritance
sass
F21
источник
источник
@extend
- есть некоторые хитрые побочные эффекты, о которых вы должны знать: stackoverflow.com/questions/30744625/….myclass
, не используется где-либо еще (я полагаю) кроме.myotherclass
, тогда лучше.myclass
определить как%myclass
и расширить.myotherclass
как@extend %myclass;
. Это будет генерировать как.myotherclass{ font-weight: bold; font-size: 90px; color: #000000; }
Попробуй это:
Теперь вы можете расширить% base-class на любой из ваших классов (например, .my-class).
источник
Использование @extend - хорошее решение, но имейте в виду, что скомпилированный CSS нарушит определение класса. Любые классы, которые расширяют один и тот же заполнитель, будут сгруппированы, а правила, которые не расширены в классе, будут представлены в отдельном определении. Если несколько классов становятся расширенными, может оказаться неуправляемым искать селектор в скомпилированных CSS или инструментах разработки. Принимая во внимание, что mixin будет дублировать код mixin и добавлять любые дополнительные стили.
Вы можете увидеть разницу между @extend и @mixin в этом sassmeister
источник
источник
@extend #{'.my-class', '.my-other-class'};
Другим вариантом может быть использование селектора атрибутов:
Тогда как каждый класс, начинающийся с «your-class-name», использует этот стиль.
Так что в вашем случае вы можете сделать это так:
Подробнее о селекторах атрибутов на w3Schools
источник