Tengo esto en mi archivo SCSS:
.class-a{
display: inline-block;
//some other properties
&:hover{
color: darken(#FFFFFF, 10%);
}
}
.class-b{
//Inherite class-a here
//some properties
}
En la clase b, me gustaría heredar todas las propiedades y declaraciones anidadas de class-a
. ¿Cómo se hace esto? Intenté usarlo @include class-a
, pero eso solo arroja un error al compilar.
inheritance
sass
F21
fuente
fuente
@extend
- hay algunos efectos secundarios difíciles que debe tener en cuenta: stackoverflow.com/questions/30744625/….myclass
no se usa en ningún otro lugar (supongo) aparte de.myotherclass
, entonces es mejor haber.myclass
definido%myclass
y extendido.myotherclass
como@extend %myclass;
. Se generará como.myotherclass{ font-weight: bold; font-size: 90px; color: #000000; }
Prueba esto:
Ahora puede extender% clase base en cualquiera de sus clases (por ejemplo, mi clase).
fuente
Usar @extend es una buena solución, pero tenga en cuenta que el CSS compilado romperá la definición de la clase. Cualquier clase que extienda el mismo marcador de posición se agrupará y las reglas que no se extiendan en la clase se definirán por separado. Si se amplían varias clases, puede resultar desordenado buscar un selector en el css compilado o en las herramientas de desarrollo. Mientras que un mixin duplicará el código mixin y agregará cualquier estilo adicional.
Puedes ver la diferencia entre @extend y @mixin en este sassmeister
fuente
fuente
@extend #{'.my-class', '.my-other-class'};
Otra opción podría ser usar un selector de atributos:
Mientras que cada clase que comienza con "your-class-name" usa este estilo.
Entonces, en su caso, podría hacerlo así:
Más información sobre los selectores de atributos en w3Schools
fuente