Curso de HTML / Organizar la página con elementos semánticos
Los elementos semánticos de HTML indican qué función cumple cada región de una página. nav representa navegación principal, main el contenido principal del documento y article una pieza que tiene sentido de forma independiente. Sus significados no dependen de que CSS coloque las regiones arriba, abajo o a un lado.
Elegir una región por su función
| Elemento | Función habitual | Confusión que conviene evitar |
|---|---|---|
header |
Introducción de la página o de una sección | No es necesariamente toda la franja superior del diseño |
nav |
Conjunto importante de enlaces de navegación | No hace falta usarlo para cualquier grupo de enlaces |
main |
Contenido principal de esta página | Normalmente hay una sola región main visible |
article |
Contenido autónomo, como una noticia o entrada | No es un contenedor genérico para aplicar estilos |
section |
Grupo temático normalmente identificado por un encabezado | No envuelve cada párrafo sin aportar una división útil |
aside |
Información complementaria relacionada indirectamente | No significa obligatoriamente columna lateral |
footer |
Información de cierre de la página o una sección | Puede pertenecer a un article y no solo al sitio completo |
Decide primero el papel del contenido y después su posición mediante CSS. Un aside puede aparecer debajo del artículo en una pantalla estrecha sin dejar de ser información complementaria. Cambiar nombres de etiquetas sin revisar textos, encabezados y orden de lectura no garantiza accesibilidad ni mejores posiciones en buscadores.
Construir y recorrer una página completa
Guarda este código como index.html en UTF-8. Sus enlaces principales llevan a fragmentos del mismo archivo, por lo que no necesitas crear páginas adicionales.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Plants for Spring | Small Garden</title>
</head>
<body>
<header>
<p>Small Garden</p>
<nav aria-label="On this page">
<a href="#article">Read the article</a>
<a href="#sunlight">Sunlight needs</a>
</nav>
</header>
<main>
<article id="article">
<h1>Plants to Grow in Spring</h1>
<section id="sunlight">
<h2>Sunlight needs</h2>
<p>Different plants need different amounts of sunlight.</p>
</section>
</article>
<aside>
<p>Check the last frost date for your area before planting.</p>
</aside>
</main>
<footer>
<p>Small Garden guide</p>
</footer>
</body>
</html>
El nombre del sitio, la navegación, el artículo, la nota y el pie aparecerán aproximadamente en orden vertical. Selecciona “Sunlight needs” y comprueba que el destino tiene id="sunlight". El encabezado h1 pertenece al documento de la práctica, no añade un encabezado principal al cuerpo de este artículo.
Si quieres que la nota aparezca junto al artículo, añade un diseño CSS. No cambies su significado para forzar una posición. Después de dividir las regiones, revisa la jerarquía de los encabezados para que los subtemas pertenezcan al apartado correcto.
Distinguir article, section y un contenedor genérico
Una entrada de blog que puede leerse por sí sola es candidata a article. Dentro, los temas de luz y riego pueden formar secciones con sus encabezados. Un simple contenedor para poner un borde alrededor de dos tarjetas puede ser un div, sin atribuirle una autonomía que no tiene.
Un conjunto de noticias puede tener un article por noticia si cada pieza es independiente. No es necesario envolver todo encabezado y párrafo en una sección: úsala cuando represente una agrupación temática útil. Los criterios de div y span ayudan a reconocer cuándo solo necesitas un objetivo para CSS.
La referencia de secciones del estándar HTML detalla los significados. Las regiones deben seguir siendo comprensibles aunque quites los estilos de distribución.
Poner nombre a navegaciones distintas
Una página puede tener navegación del sitio y navegación dentro del artículo. Nombres diferentes permiten distinguir sus finalidades:
<nav aria-label="Site navigation">
<a href="index.html">Home</a>
<a href="about.html">About</a>
</nav>
<nav aria-label="Sections in this article">
<a href="#sunlight">Sunlight</a>
<a href="#watering">Watering</a>
</nav>
Este segundo bloque es un fragmento ilustrativo. Debes crear los archivos y los identificadores que menciona o adaptar sus destinos a páginas reales. No asumas que el documento completo anterior contiene también una sección watering.
aria-label proporciona un nombre accesible; no escribe automáticamente un título visible junto al menú. Cuando el nombre o las rutas no corresponden a la función real, el atributo tampoco soluciona el problema. La guía de nombres de regiones de W3C WAI explica esta diferenciación.
Para comprobar la estructura, recorre el documento en su orden de origen. Verifica que no haya varios contenidos principales visibles, secciones vacías sin un tema y elementos auxiliares utilizados solo por su posición. Sigue los enlaces internos y comprueba los destinos antes de dar la página por terminada.




