Extend y selectores placeholder
Comparta estilos entre selectores mediante @extend y selectores placeholder silenciosos.
Extend y selectores placeholder es una lección gratuita de CSS Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de CSS Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de CSS Academy incluye 4 lecciones en total.
@extend en Sass
@extend permite que un selector herede todos los estilos de otro. En lugar de duplicar código, la extensión crea un conjunto de reglas compartidas en el CSS compilado.
<div class="error">Error message</div>
<div class="critical-error">Critical error message</div>
Selectores placeholder
Un selector placeholder (con el prefijo %) define un bloque de estilos que nunca se compila por sí solo, sino únicamente cuando se extiende. No genera CSS a menos que algo lo extienda.
<div class="product-card">Product card</div>
<div class="profile-card">Profile card</div>
Por qué usar placeholders en lugar de clases
Extender una clase real añade todo el contexto del selector de esa clase a la salida compilada. Los placeholders son más limpios: generan selectores agrupados únicamente para los selectores que los extienden.
Salida compilada de @extend
Cuando varios selectores extienden el mismo placeholder, Sass los agrupa en una regla separada por comas:
<div class="product-card">Product card</div>
<div class="profile-card">Profile card</div>
Problemas de @extend
@extend tiene inconvenientes importantes:
- No puede usarse dentro de consultas de medios
- Puede producir selectores agrupados grandes e inesperados cuando se encadenan varias extensiones
- Hace que sea más difícil rastrear el CSS compilado hasta los archivos de origen
Ventajas y desventajas de @extend frente a mixin
Comparación:
@extend: CSS más pequeño (reglas compartidas), pero cadenas de selectores complejas y limitaciones en consultas de medios@mixin: duplica las declaraciones, pero es más predecible y puede usarse dentro de consultas de medios
Por lo general, el mixin es mejor
En la práctica moderna de Sass, normalmente se prefieren los mixins a @extend. HTTP/2 y la compresión gzip hacen que la duplicación de declaraciones sea menos importante, mientras que la facilidad de depuración de los mixins compensa la mínima diferencia en el tamaño del CSS.
Cuándo tiene sentido usar @extend
@extend (con placeholders) es adecuado cuando:
- Varios selectores comparten realmente el mismo estado semántico (por ejemplo, estados de error)
- No se encuentra dentro de una consulta de medios
- Los estilos base son estables y están bien definidos
Placeholders y tematización
Los placeholders funcionan bien para conjuntos de utilidades similares a los resets que heredan varios componentes:
<a href="#" class="skip-link">Skip to content</a>
<span class="sr-label">Screen reader label</span>
Consideración sobre la obsolescencia
Algunas guías de estilo y equipos prohíben completamente @extend debido a su complejidad y al crecimiento excesivo de selectores que puede provocar. Conozca las ventajas y desventajas, y siga las convenciones de su equipo.
Comprobación rápida
¿Cuál es la diferencia entre extender una clase normal y extender un selector placeholder (%)?
Repaso
@extend permite que un selector herede los estilos de otro, agrupando los selectores en el CSS compilado. Los placeholders (%name) no se compilan hasta que se extienden, por lo que son más limpios que extender clases reales. Evite usar @extend dentro de consultas de medios. En el Sass moderno, normalmente se prefieren los mixins a @extend por su previsibilidad y facilidad de depuración.
Preguntas frecuentes
¿La lección «Extend y selectores placeholder» es gratis?
Sí — el texto completo de «Extend y selectores placeholder» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de CSS Academy, actualiza a CoddyKit PRO. El curso de CSS Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Extend y selectores placeholder»?
Comparta estilos entre selectores mediante @extend y selectores placeholder silenciosos. Practicas CSS Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar CSS Academy?
No se requiere experiencia previa. CSS Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Extend y selectores placeholder»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de CSS Academy?
Sí. Cada lección de CSS Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Variables, anidamiento y parciales
- Mixins e inclusiones
- Extend y selectores placeholder
- Funciones y flujo de control de Sass