Saltar al contenido
Programer

Lección 7 de 1512 min

HTML, el DOM y la semántica

Del texto HTML al árbol DOM, cómo el navegador corrige tus errores y por qué elegir bien la etiqueta importa.

HTML (HyperText Markup Language) describe la estructura y el significado del contenido: esto es un título, esto un párrafo, esto un enlace, esto una lista. No decide cómo se ve (eso es CSS) ni cómo se comporta (eso es JavaScript).

Elementos, etiquetas y atributos

Un documento HTML está hecho de elementos. Cada elemento suele tener una etiqueta de apertura, un contenido y una etiqueta de cierre. Los atributos añaden información extra al elemento, como el destino de un enlace.

Anatomía de un elemento
<a href="/contacto" class="boton">Escríbenos</a>

<a …>              → etiqueta de apertura
href="/contacto"   → atributo (nombre="valor")
class="boton"      → otro atributo
Escríbenos         → contenido
</a>               → etiqueta de cierre

Algunos elementos no tienen contenido ni etiqueta de cierre, como <img>, <br> o <input>. Se llaman elementos vacíos.

Del texto al árbol: el DOM

El navegador no trabaja con tu HTML tal cual. Lo analiza y construye un árbol de objetos en memoria: el DOM (Document Object Model). Cada elemento es un nodo, el texto que contiene es otro nodo hijo, y así sucesivamente. Cuando JavaScript cambia la página o CSS aplica un estilo, actúan sobre este árbol.

Interactivo

De HTML a DOM

Escribe HTML a la izquierda y mira el árbol que construye el navegador. Prueba los ejemplos con errores.

Un documento completo y bien formado: el árbol refleja exactamente lo que escribiste.

Construyendo el árbol…

¿Sabías que…?

HTML es extremadamente tolerante con los errores. El estándar no solo dice cómo debe ser el HTML correcto: también describe, paso a paso, cómo reparar cualquier HTML roto. Por eso todos los navegadores construyen exactamente el mismo árbol a partir del mismo código, aunque tenga errores.

HTML semántico

Podrías construir cualquier página solo con <div> y <span>, y con CSS se vería igual. Pero perderías el significado. Los elementos semánticos le dicen al navegador qué es cada cosa, y eso tiene ventajas muy concretas:

  • Accesibilidad: los lectores de pantalla permiten saltar entre encabezados, ir directo al contenido principal o a la navegación.
  • Comportamiento gratis: un <button> ya se puede enfocar y pulsar con el teclado; un <a> se puede abrir en otra pestaña.
  • Buscadores: entienden mejor qué parte de la página es la importante.
  • Mantenimiento: el código se explica solo.

Interactivo

Etiqueta cada bloque

Esta página está hecha solo con <div>. Elige la etiqueta semántica adecuada para cada bloque.

Logo y nombre del sitio
Inicio · Blog · Contacto
Contenido principal de la página
Entrada del blog: título, fecha y texto
Entradas relacionadas
© 2026 · Aviso legal · Contacto
<div>Logo y nombre del sitio</div>
<div>…enlaces…</div>
<div>
  <div>…la entrada…</div>
</div>
<div>…relacionadas…</div>
<div>© 2026…</div>

Un documento mínimo

Toda página HTML debería empezar con este esqueleto:

index.html
<!doctype html>
<html lang="es">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>Mi primera página</title>
  </head>
  <body>
    <h1>Hola, web</h1>
  </body>
</html>
  • <!doctype html> activa el modo estándar del navegador. Sin él, el navegador imita fallos de navegadores de los años 90 («modo quirks»).
  • lang="es" declara el idioma del contenido.
  • <meta charset="utf-8"> indica cómo interpretar los caracteres, para que tildes y eñes se vean bien.
  • La etiqueta viewport hace que la página se adapte al ancho de los móviles en lugar de mostrarse diminuta.
  • <title> es el texto de la pestaña y el título que muestran los buscadores.

Comprueba lo aprendido

Cuestionario

Responde las 5 preguntas para completar la lección.

  1. 1.¿Qué es el DOM?

  2. 2.Escribes <p>Uno<p>Dos sin cerrar las etiquetas. ¿Qué hace el navegador?

  3. 3.¿Qué elemento es el adecuado para el menú principal de enlaces del sitio?

  4. 4.¿Por qué usar <button> en lugar de un <div> con un evento de clic?

  5. 5.¿Para qué sirve el atributo lang en <html lang="es">?