Web Components: Custom Elements, template, slot y Shadow DOM

Construye componentes nativos reutilizables sin framework, con encapsulación real y API clara.

Web Components te permiten crear etiquetas propias que viven bien en cualquier stack.

Custom Elements definen comportamiento; template y slot definen estructura reusable.

Shadow DOM encapsula estilos y evita colisiones con el CSS global.

Con una API bien diseñada, tus componentes son más mantenibles que una mezcla de HTML suelto.

  • Cuando entiendes estas piezas, el resto fluye. 🧱
  • Diseña primero la API del HTML, luego el JS.
  • Un buen componente expone una interfaz simple: atributos de entrada, slots para contenido y eventos si hace falta interacción.
  • Evita lógica excesiva dentro del componente. Si hace de todo, termina siendo un mini-framework difícil de mantener.
  • Úsalo cuando necesites encapsulación real, no por moda.

Las 4 piezas que necesitas dominar

Cuando entiendes estas piezas, el resto fluye. 🧱

Flujo real de un componente nativo

Diseña primero la API del HTML, luego el JS.

Un buen componente expone una interfaz simple: atributos de entrada, slots para contenido y eventos si hace falta interacción.

Evita lógica excesiva dentro del componente. Si hace de todo, termina siendo un mini-framework difícil de mantener.

Shadow DOM con criterio

Úsalo cuando necesites encapsulación real, no por moda.

Si tu componente se usará en distintos contextos con CSS impredecible, Shadow DOM evita conflictos de estilos.

Si necesitas heredar estilos globales de forma abierta, quizá no conviene encapsular tanto. Evalúa caso por caso.

HTML
22

Web Components: Custom Elements, template, slot y Shadow DOM

Construye componentes nativos reutilizables sin framework, con encapsulación real y API clara.

Código del tema: customElements.define | <template> | <slot> | attachShadow

📘 Teoría

Las 4 piezas que necesitas dominar

Cuando entiendes estas piezas, el resto fluye. 🧱

1

Custom Element

Registra tu etiqueta con `customElements.define`.

2

template

Define markup reusable sin render inmediato.

3

slot

Permite insertar contenido externo en huecos concretos.

4

Shadow DOM

Aísla estilos y estructura del documento principal.

Flujo real de un componente nativo

Diseña primero la API del HTML, luego el JS.

1

Un buen componente expone una interfaz simple: atributos de entrada, slots para contenido y eventos si hace falta interacción.

2

Evita lógica excesiva dentro del componente. Si hace de todo, termina siendo un mini-framework difícil de mantener.

Shadow DOM con criterio

Úsalo cuando necesites encapsulación real, no por moda.

1

Si tu componente se usará en distintos contextos con CSS impredecible, Shadow DOM evita conflictos de estilos.

2

Si necesitas heredar estilos globales de forma abierta, quizá no conviene encapsular tanto. Evalúa caso por caso.

🧪 Aprende probando

Ejemplo Ejemplo guiado: tarjeta con slot Componente simple con contenido proyectado.

🏁 Retos

Reto Reto: registra correctamente el custom element Completa el registro con nombre válido (con guion).

🧰 Recursos

¿Qué es esto?

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

La hice en febrero de 2026 para facilitar el aprendizaje de mis alumnos. La idea es aprender desarrollo web practicando y que el proyecto siga creciendo con nuevos temas, tests y retos.

Está inspirada en MDN, W3Schools, CodePen, Manz y muchos otros sitios de documentación sobre desarrollo web. Quería combinar teoría útil, ejemplos ejecutables, retos y el sistema de tests que ya tenía en culTest. culTest

Si te gustó, si no te gustó o si quieres escribirme, puedes hacerlo en cristianeslava@gmail.com