Sobes.tech
Middle

O que é Shadow DOM?

sobes.tech IA

Resposta da IA

Shadow DOM é um padrão web que permite encapsular o DOM e CSS dentro de um componente. Ele cria uma árvore DOM separada e isolada, chamada de "árvore de sombra" (shadow tree), que é anexada a um elemento no documento principal, chamado de "raiz de sombra" (shadow root).

Vantagens do Shadow DOM:

  • Isolamento de CSS: Os estilos definidos dentro do Shadow DOM não "escapam" para fora, afetando o documento principal, e por padrão, os estilos do documento principal não afetam o Shadow DOM.
  • Isolamento do DOM: A estrutura do Shadow DOM está oculta do documento principal e não é acessível através de métodos padrão de seleção (por exemplo, querySelector).
  • Isolamento de JavaScript: Os scripts que executam no documento principal não podem acessar facilmente os elementos dentro do Shadow DOM.
  • Reutilização: Os componentes criados com Shadow DOM podem ser facilmente utilizados em outras partes da aplicação ou até em outros sites.

Criação do Shadow DOM:

// Obtemos o elemento ao qual queremos anexar o Shadow DOM
const hostElement = document.getElementById('my-component');

// Criamos Shadow Root
// 'open' torna o Shadow DOM acessível de fora através de hostElement.shadowRoot
// 'closed' oculta o Shadow DOM
const shadowRoot = hostElement.attachShadow({ mode: 'open' });

// Adicionamos elementos dentro do Shadow DOM
shadowRoot.innerHTML = `
  <style>
    /* Estilos específicos para este componente */
    h2 {
      color: blue;
    }
  </style>
  <h2>Título dentro do componente</h2>
  <p>Parágrafo dentro do componente.</p>
`;

Características:

  • Slots: Permitem inserir conteúdo externo em locais específicos dentro do Shadow DOM.
  • Partes de sombra (Shadow Parts): Permitem estilizar certos elementos dentro do Shadow DOM de fora.

O Shadow DOM é uma componente chave para criar componentes web (Web Components), fornecendo uma forte encapsulação necessária para criar elementos de UI reutilizáveis e autossuficientes.