libro / blog / html5-semantico

// capítulo 02 · html5

HTML5 semántico: cómo estructurar una página web correctamente

Gustavo Arias7 min de lectura

TL;DR Usa etiquetas que describan el contenido (header, nav, main, article, footer) en lugar de div genéricos. Ganas accesibilidad, mejor SEO y un código que cualquier compañero entiende de un vistazo.

Todo proyecto web empieza por el HTML. Antes de pensar en colores, animaciones o bases de datos, necesitas una estructura sólida que el navegador, los buscadores y los lectores de pantalla puedan entender. En el libro Programación Full-Stack dedicamos un capítulo entero a esta base, porque un HTML mal estructurado se paga después en CSS difícil de mantener y en JavaScript frágil.

Qué es el HTML semántico

El HTML semántico consiste en elegir cada etiqueta según el significado del contenido, no según cómo se ve. Un <div> no dice nada sobre lo que contiene; un <nav> le indica a cualquiera que ahí hay enlaces de navegación.

Esto tiene tres beneficios concretos:

El esqueleto de un documento HTML5

Todo documento empieza igual. Estas líneas no son decorativas: cada una cumple una función.

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Mi primera página</title>
    <meta name="description" content="Descripción breve para buscadores">
</head>
<body>
    <!-- aquí va el contenido visible -->
</body>
</html>

Las etiquetas semánticas que más vas a usar

Etiqueta Úsala para
<header> La cabecera de la página o de una sección: logo, título, navegación.
<nav> Bloques de enlaces de navegación principales.
<main> El contenido principal. Solo uno por página.
<article> Contenido independiente que tendría sentido por sí solo: un post, una noticia, un producto.
<section> Una agrupación temática con su propio título.
<aside> Contenido relacionado pero secundario: barra lateral, notas.
<footer> El pie de la página o de un artículo: autor, copyright, enlaces.
<figure> Imágenes, diagramas o código con su <figcaption>.

¿section o article?

Es la duda más habitual. Pregúntate: ¿este bloque tendría sentido publicado solo, en otro sitio? Si la respuesta es sí (un post, un comentario, una tarjeta de producto), es un article. Si es una parte de algo mayor (“Características”, “Precios”), es una section.

Los títulos también son estructura

Los encabezados h1 a h6 forman el índice de tu página. Usa un solo h1 con el tema principal y no saltes niveles (de h2 a h4) solo porque el tamaño te guste más: el tamaño se cambia con CSS.

Ejemplo completo: la página de un blog

Así se ve una página de blog bien estructurada. Es el tipo de base que necesitas antes de convertirla en un blog dinámico con PHP y MySQL, como el primer proyecto del libro.

<body>
    <header>
        <a href="/">MiBlog</a>
        <nav aria-label="Principal">
            <ul>
                <li><a href="/">Inicio</a></li>
                <li><a href="/articulos">Artículos</a></li>
                <li><a href="/contacto">Contacto</a></li>
            </ul>
        </nav>
    </header>

    <main>
        <article>
            <header>
                <h1>Cómo aprendí a programar</h1>
                <p>Por Ana · <time datetime="2026-10-13">13 de octubre</time></p>
            </header>

            <section>
                <h2>Los primeros pasos</h2>
                <p>Todo empezó con un archivo index.html...</p>
            </section>

            <figure>
                <img src="setup.jpg" alt="Escritorio con un portátil y el editor abierto">
                <figcaption>Mi primer entorno de trabajo</figcaption>
            </figure>
        </article>

        <aside>
            <h2>Artículos relacionados</h2>
            <!-- lista de enlaces -->
        </aside>
    </main>

    <footer>
        <p>&copy; 2026 MiBlog</p>
    </footer>
</body>

Fíjate en tres detalles: el header puede aparecer también dentro de un article; la fecha usa <time datetime> para que sea legible por máquinas; y la imagen tiene un alt que describe lo que se ve, no “imagen1”.

Errores comunes

Para validar tu marcado, pásalo por el validador oficial del W3C y revisa la referencia de elementos de MDN.

Sigue aprendiendo con el libro Programación Full-Stack

El capítulo 2 está dedicado a la estructura de una página web con HTML5, la base sobre la que después se construye el blog dinámico con PHP y MySQL.

Comprar en Amazon