| [ Web Proxy ] |
| Viewing: https://developer.mozilla.org/es/docs/Web/API/Web_components | [Back] [Original] |
Get to know MDN better
Esta pgina ha sido traducida del ingls por la comunidad. Aprende ms y nete a la comunidad de MDN Web Docs.
Los Componentes Web son un paquete de diferentes tecnologas que te permiten crear elementos personalizados reutilizables con su funcionalidad encapsulada apartada del resto del cdigo y utilizarlos en las aplicaciones web.
Como desarrolladores, sabemos que reutilizar cdigo tanto como sea posible es una buena idea. Esto tradicionalmente no es sencillo para estructuras de marcado personalizadas piense en el complejo HTML (y sus estilos y scripts asociados) que en ocasiones se han tenido que escribir para renderizar controles de interfaz (UI) personalizados, y ahora usarlos mltiples veces puede crear un caos en la pgina si no se es cuidadoso.
Los Componentes Web apuntan a resolver dichos problemas consiste en tres tecnologas principalmente, las que se pueden usar juntas para crear elementos personalizables verstiles que encapsulan la funcionalidad y pueda ser reutilizada donde sea sin miedo a colisiones de cdigo.
<template> y <slot> permiten escribir plantillas de marcado que no son desplegadas en la pgina renderizada. stas pueden ser reutilizadas en mltiples ocasiones como base de la estructura de un elemento personalizado.La aproximacin bsica para implementar un componente web, generalmente es la siguiente:
CustomElementRegistry.define(), pasndole el nombre del elemento a ser definido, la clase o funcin en la cul su funcionalidad esta especificada, y opcionalmente, de que elemento hereda.Element.attachShadow(). Aadir elementos hijos, oyentes de eventos, etc., al shadow DOM utilizando mtodos normales del DOM.<template> y <slot>. Nuevamente usar mtodos regulares del DOM para clonar la plantilla y acoplarla al shadow DOM.Gua que muestra como usar las caractersticas de los elementos personalizados para crear componentes web sencillos, as como revisar las llamadas del ciclo de vida y algunas caractersticas ms avanzadas.
Gua que trata los fundamentos del shadow DOM, mostrando como adjuntar un shadow DOM a un elemento, aadir el rbol del shadow DOM, aadirle estilos y ms.
Gua que muestra como definir una estructura HTML reutilizable utilizando elementos <template> y <slot> elements, y entonces usar esa estructura debto del componente web.
CustomElementRegistryContiene funcionalidad relacionada a los elementos personalizados, ms notablemente el mtodo CustomElementRegistry.define() utilizado para registrar nuevos elementos personalizados para que se puedan usar en el documento
Window.customElementsRetorna una referencia al objeto CustomElementRegistry.
Llamadas de funciones especiales declaradas dentro de la clase de definicin de los componentes personalizados, los que afectan su comportamiento:
connectedCallback: Invocado cuando el componente personalizado se conecta por primera vez al DOM del documento.disconnectedCallback: Invocado cuando el componente personalizado se deconecta del DOM del documento.adoptedCallback: Invocado cuando el componente personalizado se mueve a un nuevo documento.attributeChangedCallback: Invocado cuando uno de los atributos del componente personalizado es aadido, removido o modificado.
is: Permite especificar que un elemento estandar HTML debe comportarse como un elemento incorporado personalizado registrado.Document.createElement(): Permite crear una instancia de un elemento HTML estandar que se comporta como un determinado elemento incorporado personalizado registrado.Pseudo-clases relacionadas especficamente a elementos personalizados:
:defined: Coincide con cualquier elemento declarado, incluyendo elementos incorporados y elementos personalizados definidos con CustomElementRegistry.define()).:host: Selecciona el shadow host del shadow DOM conteniendo el CSS que es usado.:host(): Selecciona el shadow host del shadow DOM conteniendo el CSS que es usado (para que se pueda seleccionar un elemento personalizado desde dentro de su shadow DOM) pero solo si el selector determinado como el parmetro de la funcin coincide con el shadow host.:host-context(): Selecciona el shadow host del shadow DOM conteniendo el CSS que es usado (para que se pueda seleccionar un elemento personalizado desde dentro de su shadow DOM) pero solo si el selector determinado como el parmetro de la funcin coincide con el shadow host de los ancestros del sitio desde el cual esta ubicado en la jerarqua del DOM.Pseudo-elementos relacionados especificamente a elementos personalizados:
::part: Representa cualquier elemento dentro del shadow tree que contiene un atributo part que coincida.ShadowRootRepresenta el nodo raz de un subrbol de un shadow DOM.
DocumentOrShadowRootUn mixin definiendo caractersticas que son disponibles a travs de documentos y shadow roots.
ElementExtensiones a la interfaz Element relacionada al shadow DOM:
Element.attachShadow() conecta un rbol shadow DOM al elemento especificado.Element.shadowRoot retorna el shadow root acoplado al elemento determinado, o null si no hay un shadow root adjuntado.NodeAdiciones a la interfaz Node relevantes al shadow DOM:
Node.getRootNode() retorna la raz del objeto del contexto, que opcionalmente incluye el shadow root si se encuentra disponible.Node.isConnected retorna un boleano indicando si el Nodo esta o no conectado (directamente o indirectamente) al objeto del contexto, es decir, el objeto Document en el caso del DOM normal, o al ShadowRoot en el caso del shadow DOM.EventExtensiones a la interfaz Event relacionada al shadow DOM:
Event.composed: Retorna un Boolean que indica si el evento se va a propagar a travs de los lmites del shadow DOM hacia el DOM normal (true), o no (false).Event.composedPath: Retorna la ruta del evento (objetos en los que oyentes sern invocados). Esto no incluye nodos en shadow trees si el shadow root fue creado con ShadowRoot.mode cerrado.<template>Contiene un fragmento de HTML que no es renderizado cuando se carga inicialmente un documento que lo contiene, pero puede ser desplegado en tiempo de ejecucin usando JavaScript, principalmente usado como la base de la estructura de los elementos personalizados. La interfaz DOM asociada es HTMLTemplateElement.
<slot>Un espacio termporal dentro de un componente web que se puede llenar con una plantilla de marcado propia, lo que permite crear rboles DOM separados y presentarlos juntos. La interfaz DOM asociada es HTMLSlotElement.
slotAsigna un slot en un shadow tree de un shadow DOM shadow tree a un elemento.
SlotableUn mixin implementado tanto por los nodos Element y Text, definiendo caractersticas que les permiten convertirse en el contenido de un elemento <slot>. El mixin define un atributo, Slotable.assignedSlot, el cual retorna una referencia al nodo del slot donde esta insertado.
ElementExtensiones a la interfaz Element relacionadas a slots:
Element.slot: Retorna el nombre del slot del shadow DOM adjunto al elemento.Pseudo-elementos especificamente relacionados a slots:
::slotted: Coincide cualquier contenido que es insertado dentro de un slot.slotchangeDisparado en una instancia HTMLSlotElement (elemento <slot>) cuando el o los nodos contenidos es ese slot cambia.
Se estn construyendo varios ejemplos en nuestro repositorio de GitHub web-components-examples. Se aadirn ms con el tiempo.
| Specification |
|---|
| HTML # the-template-element |
| DOM # interface-shadowroot |
(Imagen tomada de webcomponents.org)
Para revisar detalladamente el soporte para ciertas caractersticas (sobre todo en versiones anteriores o navegadores antiguos), se puede consultar las pginas de referencia listadas anteriormente
class y this. Provee de una sencilla y funcional API para crear elementos personalizados.This page was last modified on 24 jun 2025 by MDN contributors.
Your blueprint for a better internet.
Portions of this content are 19982026 by individual mozilla.org contributors. Content available under a Creative Commons license.
| Web Proxy Viewer | New URL | Original Page |