Sass @extender regla

La regla Sass @extend se puede usar cuando es necesario que una clase tenga los estilos de otra clase, junto con sus propios estilos específicos. Esta regla le dice a Sass que un selector debe heredar la clase de otro selector.

Sintaxis:

@extend <selector>

Ejemplo:

SASS

.gfg
  border: 1px green
  background-color: black
  font-family: sans-serif
  
  &--geeks
    @extend .gfg
    border-width: 4px

Producción:

.gfg, .gfg--geeks {
  border: 1px green;
  background-color: black;
  font-family: sans-serif;
}
.gfg--geeks {
  border-width: 4px;
}

Los estilos Sass son los elementos que coinciden con el extensor como si también coincidieran con la clase que se está extendiendo, cuando una clase extiende a la otra. Los selectores no se usan solos en las reglas de estilo. Sass sabe extenderse a todas partes donde se usa el selector. Esto garantiza que los elementos tengan el mismo estilo que si coincidieran con el selector extendido.

Ejemplo: 

SASS

.gfg:hover
  border: 1px green
  background-color: black
  font-family: sans-serif
  
.gfg--geeks
  @extend .gfg
  border-width: 4px

Producción: 

.gfg:hover, .gfg--geeks:hover {
  border: 1px green;
  background-color: black;
  font-family: sans-serif;
}
.gfg--geeks {
  border-width: 4px;
}

Funcionamiento de la regla: la regla @extend actualiza las reglas de estilo que contienen el selector extendido para que contenga el selector extendido. Al extender los selectores, Sass realiza una unificación inteligente al no generar nunca los selectores como #main#footer que no pueden coincidir con ningún elemento. También garantiza que los selectores complejos se intercalen para que funcionen independientemente del orden en que se aniden los elementos HTML.

La unificación inteligente también se realiza recortando los selectores redundantes tanto como sea posible, mientras se asegura que la especificidad sea mayor o igual que la del extensor. En resumen, maneja inteligentemente combinadores, selectores universales y pseudoclases que contienen selectores.

Ejemplo:

css

.content nav.sidebar
  @extend .gfg
   
/* This won't be extended, because 
  `p` is incompatible with `nav` */
p.gfg
  background-color: green
  color: white
   
/* There is no way to know whether
  `<div class="guide">` will be inside
   or outside `<div class="content">`,
   so Sass generates both to be safe */
.geeks .gfg
  border: 1px solid black
  border-radius: 4px
   
/* Sass knows that every element 
   matching "main.content" also 
   matches ".content" and avoids
   generating unnecessary 
   interleaved selectors */
main.content .gfg
  font-size: 2px
  font-family: sans-serif

Producción:

p.gfg {
  background-color: green;
  color: white;
}

.geeks .gfg, .geeks .content nav.sidebar, 
.content .geeks nav.sidebar {
  border: 1px solid black;
  border-radius: 4px;
}

main.content .gfg, main.content nav.sidebar {
  font-size: 2px;
  font-family: sans-serif;
}

Se puede acceder directamente a la unificación inteligente de Sass usando las funciones del selector. La función selector.unify() devuelve un selector que coincide con la intersección de dos selectores, mientras que la función selector.extend() funciona como @extend , pero en un solo selector.

Publicación traducida automáticamente

Artículo escrito por Slash_IT y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *