Eu tenho isso no meu arquivo SCSS:
.class-a{
display: inline-block;
//some other properties
&:hover{
color: darken(#FFFFFF, 10%);
}
}
.class-b{
//Inherite class-a here
//some properties
}
Na classe b, gostaria de herdar todas as propriedades e declarações aninhadas de class-a
. Como isso é feito? Eu tentei usar @include class-a
, mas isso apenas gera um erro ao compilar.
inheritance
sass
F21
fonte
fonte
@extend
- há alguns efeitos colaterais complicados você deve estar ciente: stackoverflow.com/questions/30744625/....myclass
não é usado em nenhum outro lugar (suponho) além de.myotherclass
, então é melhor ter.myclass
definido como%myclass
e estendido em.myotherclass
como@extend %myclass;
..myotherclass{ font-weight: bold; font-size: 90px; color: #000000; }
Tente o seguinte:
Agora você pode estender% da classe base em qualquer uma das suas classes (por exemplo, minha classe).
fonte
Usar @extend é uma boa solução, mas esteja ciente de que o css compilado interromperá a definição de classe. Quaisquer classes que estendem o mesmo espaço reservado serão agrupadas e as regras que não forem estendidas na classe estarão em uma definição separada. Se várias classes forem estendidas, pode ser indisciplinado procurar um seletor nas ferramentas css compiladas ou nas ferramentas de desenvolvimento. Enquanto um mixin duplicará o código do mixin e adicionará outros estilos.
Você pode ver a diferença entre @extend e @mixin neste sassmeister
fonte
fonte
@extend #{'.my-class', '.my-other-class'};
Outra opção poderia estar usando um Seletor de Atributos:
Enquanto todas as classes que começam com "nome-da-classe" usam esse estilo.
Portanto, no seu caso, você poderia fazer o seguinte:
Mais sobre os Seletores de Atributos no w3Schools
fonte