Esquema de secciones y encabezados en una página web
· 6 min
Encabezados, main, article, aside: guía breve de semántica HTML5
- Accesibilidad
- HTML
- Frontend
La semántica es el esqueleto de tu HTML: mejora accesibilidad, SEO y comprensión del código. Guía rápida para usar bien los landmarks y los encabezados.
Landmarks básicos
main: contenido principal de la página. Uno por documento. Añade un “skip link” que apunte a#main-content.headeryfooter: sirven para la página o para cada sección/artículo. Si está dentro dearticle, es el encabezado de ese contenido.nav: navegación real (menú, tabs de página, paginación). No lo uses para cualquier fila de botones.aside: contenido complementario (relacionado pero no esencial). Ej: filtros, anuncios, enlaces relacionados.
<body>
<a href="#main-content">Saltar al contenido</a>
<header>...</header>
<main id="main-content">...</main>
<footer>...</footer>
</body>
Section vs. article vs. div
section: agrupa un tema dentro de la página. Debe tener encabezado (h2,aria-labelledby). Ej: “Características”, “Opiniones”.article: pieza autocontenida que podría vivir fuera de la página (una tarjeta de post, un comentario). Lleva su propio encabezado.div: contenedor neutro para estilos o layout cuando no hay significado.
<section aria-labelledby="features-title">
<h2 id="features-title">Características</h2>
<article>
<h3>Modo sin distracciones</h3>
<p>Oculta paneles secundarios para enfocar la lectura.</p>
</article>
</section>
Encabezados bien ordenados
- Un solo
h1para el tema de la página. Dentro demain. - Subsecciones con
h2; si anidas, baja ah3, etc. No saltes deh2ah4. - Cada
sectionoarticlenecesita un título visible oaria-labelledbyque apunte a un texto existente.
<main>
<h1>Guía de semántica</h1>
<section>
<h2>Landmarks</h2>
<p>...</p>
<section>
<h3>Skip links</h3>
<p>...</p>
</section>
</section>
</main>
Cuándo usar aside
- Complementario: fichas de autor, filtros, enlaces relacionados, notas laterales.
- No lo uses para contenido esencial (formularios, pasos de un proceso).
<main>
<article>
<h1>Cómo estructurar tu HTML</h1>
<p>Contenido principal...</p>
</article>
<aside aria-label="Recursos relacionados">
<h2>Recursos</h2>
<ul>
<li><a href="#">Checklist de encabezados</a></li>
<li><a href="#">Ejemplos de landmarks</a></li>
</ul>
</aside>
</main>
Formularios y acciones
- Usa
form,fieldset,legend,labelasociado a cada control. buttonpara acciones;asolo para navegación conhref.
<form aria-describedby="help-text">
<fieldset>
<legend>Suscripción</legend>
<label for="email">Email</label>
<input id="email" type="email" required />
<button type="submit">Enviar</button>
</fieldset>
<p id="help-text">No compartimos tu correo.</p>
</form>
Checklist rápida
- Un
mainpor página, reachable desde un skip link. - Cada
section/articlecon encabezado lógico (h2en adelante). navsolo para navegación;asidesolo para contenido secundario.- No anidar
sectionsin encabezado; no saltar niveles dehX. - Prefiere
buttonpara acciones,apara navegar.
Conclusión
Estructurar con semántica clara ahorra tiempo a usuarios, lectores de pantalla y a ti mismo cuando vuelves al código. Empieza por los landmarks (main, header, nav, footer), nombra cada bloque con un encabezado ordenado, y reserva article/aside solo cuando aporten significado. El CSS puede esperar; la jerarquía de tu HTML es la base de todo.
