Parte 2: HTML: la estructura · Lección 7 de 18

#07 La estructura de una página

Cabecera, menú, contenido principal, secciones y pie: organiza tu página con etiquetas que dicen qué es cada parte. 30 min

Las páginas tienen partes

Fíjate en casi cualquier web: arriba hay una cabecera con el logo y un menú; en el centro, el contenido principal; a veces una barra lateral; y abajo, un pie con datos de contacto. Es tan habitual que HTML tiene una etiqueta para cada parte:

text
┌──────────────────────────────────┐
│ <header>  logo + <nav> menú      │
├────────────────────────┬─────────┤
│ <main>                 │ <aside> │
│   <section> / <article>│ lateral │
│   <section> / <article>│         │
├────────────────────────┴─────────┤
│ <footer>  contacto, créditos     │
└──────────────────────────────────┘
EtiquetaQué es
<header>Cabecera: logo, título y a menudo el menú.
<nav>La navegación: el grupo de enlaces principal.
<main>El contenido principal. Solo uno por página.
<section>Una parte temática, normalmente con su encabezado (<h2>…).
<article>Un contenido que se entiende solo: un post, una noticia, un producto.
<aside>Contenido secundario o complementario: una barra lateral, una nota.
<footer>Pie: contacto, redes, avisos legales.

Una página con estructura

Así se combinan. Lee el código con calma: es la forma de casi todas las páginas que harás.

Página con estructura semántica

Tab añade una sangría. Pulsa Escape y luego Tab para salir del editor.

Resultado

¿Para qué sirve, si no cambia nada?

Escribir HTML que dice qué es cada cosa se llama HTML semántico (semántica = significado). Tiene ventajas muy reales:

  • Accesibilidad. Los lectores de pantalla permiten saltar directamente al <main> o al <nav>. Sin estas etiquetas, una persona ciega tendría que escuchar toda la página desde el principio.
  • Buscadores. Google entiende mejor qué es lo importante de tu página.
  • Tu yo del futuro. Un código lleno de <header>, <nav> y <footer> se entiende de un vistazo. Uno lleno de cajas sin nombre, no.

<section> o <article>

Es la duda más habitual. Hazte esta pregunta: ¿tendría sentido este bloque por sí solo, si lo copiara en otra web?

  • Sí → <article>: un post de un blog, una noticia, una receta, la ficha de un producto, un comentario.
  • No, es una parte de esta página → <section>: «Quiénes somos», «Servicios», «Preguntas frecuentes».

Y una <section> puede contener varios <article> (como la carta del ejemplo), o al revés: un artículo largo puede dividirse en secciones.

Cajas sin significado: <div> y <span>

A veces necesitas agrupar cosas solo para darles estilo con CSS, y ninguna etiqueta semántica encaja. Para eso están las dos «cajas genéricas»:

  • <div>: una caja de bloque. Ocupa todo el ancho y empieza en una línea nueva, como un párrafo.
  • <span>: una caja en línea. Marca un trozo de texto sin cortar la línea.
div y span

Tab añade una sangría. Pulsa Escape y luego Tab para salir del editor.

Resultado

No verás ninguna diferencia todavía. Cobrarán sentido en cuanto empieces con CSS: podrás decir «pon este <div> con fondo gris» o «este <span> en verde».

Errores típicos

  • Hacerlo todo con <div>, incluso la cabecera, el menú y el pie.
  • Poner varios <main>. Solo hay un contenido principal.
  • Usar <section> como si fuera un <div>, solo para agrupar estilos. Una sección es una parte temática y suele llevar encabezado.
  • Meter en <nav> todos los enlaces de la página. Es para la navegación importante, como el menú principal.
  • Esperar que estas etiquetas cambien el aspecto. Eso lo hace CSS.

Ejercicios

Ejercicio 1: ponle nombre a cada caja (fácil)

Esta página está hecha solo con <div>. Cambia cada <div> por la etiqueta semántica que le corresponde.

Ejercicio 1

Tab añade una sangría. Pulsa Escape y luego Tab para salir del editor.

Resultado
Pista

Hay una cabecera, un menú dentro de ella, un contenido principal con dos partes temáticas y un pie.

Solución
html
<header>
  <h1>Ana López, fotógrafa</h1>
  <nav>
    <a href="#trabajos">Trabajos</a>
    <a href="#contacto">Contacto</a>
  </nav>
</header>
<main>
  <section id="trabajos">
    <h2>Trabajos</h2>
    <p>Bodas, retratos y viajes.</p>
  </section>
  <section id="contacto">
    <h2>Contacto</h2>
    <p>ana@ejemplo.com</p>
  </section>
</main>
<footer>
  <p>© 2026 Ana López</p>
</footer>

Ejercicio 2: ¿section o article? (fácil)

Decide qué etiqueta usarías para cada caso: a) la lista de preguntas frecuentes de una tienda; b) cada reseña de un cliente; c) una noticia en la portada de un periódico; d) el bloque «Nuestro equipo».

Pista

¿Tendría sentido copiarlo suelto en otra web?

Solución

a) <section> · b) <article> (cada reseña se entiende sola) · c) <article> · d) <section>

Ejercicio 3: el blog (medio)

Escribe la estructura de un blog de viajes: cabecera con el nombre del blog y un menú de tres enlaces, un contenido principal con dos posts (cada uno con su título, fecha y un párrafo), una barra lateral con «Sobre mí» y un pie con tu nombre.

Ejercicio 3

Tab añade una sangría. Pulsa Escape y luego Tab para salir del editor.

Resultado
Pista 1

Los posts son <article> dentro del <main>. La barra lateral es un <aside>.

Pista 2

Recuerda poner el menú como lista: <nav> → <ul> → <li> → <a>.

Solución
html
<header>
  <h1>Mochila al hombro</h1>
  <nav>
    <ul>
      <li><a href="#">Inicio</a></li>
      <li><a href="#">Destinos</a></li>
      <li><a href="#">Contacto</a></li>
    </ul>
  </nav>
</header>
<main>
  <article>
    <h2>Una semana en Lisboa</h2>
    <p>12 de marzo de 2026</p>
    <p>Tranvías, pasteles de nata y miradores…</p>
  </article>
  <article>
    <h2>Ruta por los Picos de Europa</h2>
    <p>2 de mayo de 2026</p>
    <p>Cinco días caminando entre montañas…</p>
  </article>
  <aside>
    <h2>Sobre mí</h2>
    <p>Soy Marta y viajo siempre que puedo.</p>
  </aside>
</main>
<footer>
  <p>Blog de Marta Ruiz</p>
</footer>

Ficha resumen

  • HTML semántico: cada etiqueta dice qué es su contenido. Mejora la accesibilidad, el posicionamiento en buscadores y la claridad del código.
  • <header> cabecera · <nav> menú · <main> contenido principal (uno) · <section> parte temática · <article> contenido independiente · <aside> secundario · <footer> pie.
  • <div> (bloque) y <span> (en línea) son cajas sin significado, para cuando nada más encaja.
  • Estas etiquetas no cambian el aspecto: eso es trabajo de CSS.

Glosario

TérminoDefinición
HTML semánticoForma de escribir HTML en la que cada etiqueta dice qué es su contenido.
<header>Cabecera de la página o de una sección.
<nav>Bloque con los enlaces de navegación principales.
<main>Contenido principal de la página. Solo hay uno.
<section>Parte temática de una página, normalmente con su propio encabezado.
<article>Contenido independiente que se entiende por sí solo, como un post o una noticia.
<aside>Contenido secundario o complementario, como una barra lateral.
<footer>Pie de la página o de una sección.
<div>Caja genérica de bloque, sin significado.
<span>Caja genérica en línea, para marcar un trozo de texto sin significado especial.
AccesibilidadQue una web pueda usarla cualquier persona, también con discapacidad o con tecnologías de apoyo.

Comprueba lo que has aprendido

Responde sin mirar arriba. Si fallas alguna, la explicación te dice por qué.

Pregunta 1 de 5

¿Qué significa que HTML sea «semántico»?

¿Lo tienes claro?

Si has hecho los ejercicios y aciertas el test, márcala como estudiada y pasa a la siguiente.