J'ai ceci dans mon fichier SCSS:
.class-a{
display: inline-block;
//some other properties
&:hover{
color: darken(#FFFFFF, 10%);
}
}
.class-b{
//Inherite class-a here
//some properties
}
Dans la classe-b, je voudrais hériter de toutes les propriétés et déclarations imbriquées de class-a
. Comment cela se fait-il? J'ai essayé d'utiliser @include class-a
, mais cela génère simplement une erreur lors de la compilation.
inheritance
sass
F21
la source
la source
@extend
- il y a des effets secondaires délicats que vous devez savoir: stackoverflow.com/questions/30744625/….myclass
- dessus, il n'est utilisé nulle part ailleurs (je suppose).myotherclass
, alors il vaut mieux avoir.myclass
défini as%myclass
et étendu.myotherclass
as@extend %myclass;
. Il générera comme.myotherclass{ font-weight: bold; font-size: 90px; color: #000000; }
Essaye ça:
Vous pouvez maintenant étendre% base-class dans n'importe laquelle de vos classes (par exemple .my-class).
la source
L'utilisation de @extend est une bonne solution, mais sachez que le CSS compilé brisera la définition de classe. Toutes les classes qui étendent le même espace réservé seront regroupées et les règles qui ne sont pas étendues dans la classe seront dans une définition distincte. Si plusieurs classes sont étendues, il peut devenir indiscipliné de rechercher un sélecteur dans le CSS compilé ou les outils de développement. Alors qu'un mixin va dupliquer le code mixin et ajouter des styles supplémentaires.
Vous pouvez voir la différence entre @extend et @mixin dans ce sassmeister
la source
la source
@extend #{'.my-class', '.my-other-class'};
Une autre option pourrait être d'utiliser un sélecteur d'attributs:
Alors que chaque classe commençant par "votre-nom-de-classe" utilise ce style.
Donc dans votre cas, vous pouvez le faire comme ceci:
En savoir plus sur les sélecteurs d'attributs sur w3Schools
la source