DOM

O que é DOM?

DOM (abreviação de Document Object Model, ou Modelo de Objetos do Documento) é uma interface de programação que representa documentos HTML, XML ou XHTML como uma estrutura hierárquica de objetos, permitindo que scripts e programas acessem e manipulem o conteúdo, a estrutura e o estilo de uma página web.

Essa interface transforma o documento em uma árvore de nós, onde cada elemento, atributo e texto é representado como um objeto que pode ser modificado dinamicamente usando linguagens como JavaScript. Essa capacidade de manipulação dinâmica é essencial para criar páginas web interativas e responsivas.

Características

Estrutura de árvore: O DOM organiza o documento em uma hierarquia de nós, onde cada elemento HTML é um nó que pode ter filhos (elementos internos) e irmãos (elementos no mesmo nível).

Manipulação dinâmica: Permite adicionar, remover ou modificar elementos e atributos da página em tempo real, sem recarregá-la.

Independência de linguagem: Embora seja comumente acessado via JavaScript, pode ser utilizado com outras linguagens de programação.

Eventos: Permite a associação de eventos (como cliques, movimentos do mouse e teclas pressionadas) a elementos da página, criando interatividade.

Compatibilidade: É suportado por todos os navegadores modernos, garantindo que as manipulações funcionem de forma consistente.

Estrutura do DOM

Um exemplo simples de um documento HTML e sua representação no DOM:

<!DOCTYPE html>  
<html>  
  <head>  
    <title>Exemplo DOM</title>  
  </head>  
  <body>  
    <h1 id="titulo">Olá, mundo!</h1>  
    <p>Este é um exemplo de DOM.</p>  
  </body>  
</html>  
  • document: O nó raiz que representa todo o documento HTML.
  • html: O nó principal, que contém os nós <head> e <body>.
  • head: Contém o nó <title>.
  • body: Contém os nós <h1> e <p>.

Manipulação com JavaScript

Aqui está um exemplo de como pode ser manipulado usando JavaScript:

// Acessa o elemento <h1> pelo ID e altera seu conteúdo  
document.getElementById("titulo").innerText = "Bem-vindo ao DOM!";  

// Cria um novo elemento <p> e o adiciona ao final do <body>  
const novoParagrafo = document.createElement("p");  
novoParagrafo.innerText = "Este parágrafo foi adicionado dinamicamente.";  
document.body.appendChild(novoParagrafo);  

Benefícios do DOM

Interatividade: Permite criar páginas web dinâmicas e responsivas, melhorando a experiência do usuário.

Flexibilidade: Facilita a manipulação de conteúdo e estilo de forma programática, sem a necessidade de recarregar a página.

Padronização: É um padrão definido pelo W3C (World Wide Web Consortium), garantindo consistência entre navegadores.

Integração com outras tecnologias: Pode ser combinado com CSS para estilização dinâmica e com APIs para interações avançadas.

Acessibilidade: Permite a manipulação de elementos para melhorar a acessibilidade, como a adição de atributos ARIA.

Exemplos de uso

“Ele usou o DOM para criar um menu dropdown que aparece ao clicar em um botão.”

“A equipe de desenvolvimento utilizou o DOM para atualizar dinamicamente a lista de produtos em um site de e-commerce.”

“Ela implementou um formulário que valida os dados em tempo real usando manipulação do DOM.”

Curiosidades

  • O DOM foi introduzido pela primeira vez no Netscape Navigator e no Internet Explorer no final dos anos 1990, mas foi padronizado pelo W3C em 1998.
  • O DOM Level 1 foi a primeira versão oficial, seguida por versões mais avançadas, como Level 2 e Level 3, que adicionaram suporte a eventos, estilos e manipulação de XML.
  • O DOM não é exclusivo do JavaScript; ele pode ser acessado por outras linguagens, como Python (usando bibliotecas como BeautifulSoup) e PHP.
  • Frameworks modernos, como React e Vue.js, abstraem grande parte da manipulação direta do DOM, mas ainda dependem dele para renderizar componentes.
  • O Shadow DOM é uma extensão que permite encapsular elementos e estilos, criando componentes web reutilizáveis e isolados.
  • Ferramentas como o Chrome DevTools permitem inspecionar e manipular o DOM diretamente no navegador, facilitando o desenvolvimento e a depuração.

Palavras relacionadas

html, xml, javascript, css