@extend y placeholders (%) sin contaminar el CSS

Aprende a reutilizar reglas con placeholders y @extend, entendiendo cuándo conviene frente a mixins para evitar selectores inesperados.

@extend comparte reglas entre selectores, pero puede crear combinaciones difíciles de rastrear si se abusa.

Los placeholders (%) evitan generar CSS innecesario hasta que otro selector los extiende.

En componentes complejos, mezcla de @extend y nesting puede inflar la especificidad si no se controla.

Para patrones con variaciones frecuentes, muchas veces un mixin sigue siendo más claro.

  • Úsalo para compartir una base semántica muy estable entre variantes cercanas.
  • Evita extender selectores de utilidad genéricos en todo el proyecto porque acopla bloques sin querer.
  • Un placeholder no aparece en CSS final hasta que se extiende desde una clase real.
  • Esto ayuda a mantener salida más limpia que declarar clases base solo para heredar estilos.
  • @extend comparte reglas entre selectores, pero puede crear combinaciones difíciles de rastrear si se abusa.

Cuándo usar @extend

Úsalo para compartir una base semántica muy estable entre variantes cercanas.

Evita extender selectores de utilidad genéricos en todo el proyecto porque acopla bloques sin querer.

Placeholders % para base no renderizada

Un placeholder no aparece en CSS final hasta que se extiende desde una clase real.

Esto ayuda a mantener salida más limpia que declarar clases base solo para heredar estilos.

Sass
05

@extend y placeholders (%) sin contaminar el CSS

Aprende a reutilizar reglas con placeholders y @extend, entendiendo cuándo conviene frente a mixins para evitar selectores inesperados.

Código del tema: Arquitectura Sass escalable

📘 Teoría

Cuándo usar @extend

1

Úsalo para compartir una base semántica muy estable entre variantes cercanas.

2

Evita extender selectores de utilidad genéricos en todo el proyecto porque acopla bloques sin querer.

Placeholders % para base no renderizada

1

Un placeholder no aparece en CSS final hasta que se extiende desde una clase real.

2

Esto ayuda a mantener salida más limpia que declarar clases base solo para heredar estilos.

%base-button + @extend
%btn-base {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  padding: .625rem 1rem;
  border-radius: 10px;
}

.btn-primary {
  @extend %btn-base;
  background: #2563eb;
  color: #fff;
}

.btn-danger {
  @extend %btn-base;
  background: #dc2626;
  color: #fff;
}

🧪 Aprende probando

Ejemplo Ejemplo: placeholder tipográfico Comparte una base de texto entre títulos sin generar selector huérfano.

🏁 Retos

Reto Reto: crea %surface y extiéndelo Declara un placeholder de superficie y úsalo en .card.

🧰 Recursos

Test

Comprueba tus conocimientos con un test sobre Sass.

Test de Sass
CodePen: utility classes y composición
Abrir en CodePen

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros 😉.

Esta la hice en febrero de 2026 para facilitar el aprendizaje de mis alumnxs. Aprender desarrollo web practicando. La idea es que crezca semanalmente con nuevos temas, tests y retos.

Inspirado en MDN, en W3Schools, en Codepen, en el crack de Manz y en mil sitios de documentación sobre desarrollo web. Quería aportar además de bloques teóricos con ejemplos, la gamificación de los retos y el sistema de test que ya tenía en culTest .

Si te gustó, si no te gustó, si quieres saludarme, o invitarme a 🍻 no dudes en escribirme en cristianeslava@gmail.com .