Secciones

Las secciones son las partes temáticas en las que se puede dividir el contenido de una página web.

En HTML 4 / XHTML 1 la única etiqueta para definir agrupaciones de contenido era prácticamente la etiqueta <div>. Por ello, cualquier página de tamaño medio acababa teniendo muchos elementos <div>, en algunos casos para organizar el contenido de la página, pero también para aplicar estilos de carácter decorativo. El código fuente resultaba así difícil de entender y mantener.

La imagen siguiente muestra una página típica HTML 4 / XHTML 1, en la que para organizar las diferentes partes de la página se tenían que crear varias divisiones <div> y distinguirlas mediante clases para darles estilos diferenciados.

body div class="cabecera" div class = "menu" div class="contenido" div class="apartado" div class="apartado" div class="apartado" div class="pie"

En HTML 5 se mejoró esa situación introduciendo varias etiquetas para definir diferentes tipos de secciones: <article>, <section>, <nav>, <aside>, <header> y <footer> (y también la etiqueta <main>, aunque esta no se considere una etiqueta de sección sino de bloque).

La página del ejemplo anterior se convertiría así en:

body header nav main section section section footer

Al utilizar etiquetas específicas para tipos de contenido específico, se mejora la legibilidad y facilidad de reutilización tanto del código HTML como de las hojas de estilo.

La etiqueta <div> se mantiene en la norma HTML, pero reservada ya al resto de agrupaciones no consideradas por las etiquetas anteriores, es decir, con fines principalmente decorativos.

Nota: Para simplificar las ilustraciones, en los ejemplos del resto de esta página no se ha dibujado la etiqueta <body>.

Secciones y esquema (outline) del documento

La "jerarquía" de los apartados de una página web ha estado siempre determinada por las etiquetas de título (<h1>, ..., <h6>). En la recomendación HTML 5 se redefinió el concepto de esquema (en inglés, outline) de una página web, de manera que el esquema de un documento ya no se debería deducir únicamente de las etiquetas de título empleadas, sino tener en cuenta también las cuatro etiquetas <article>, <section>, <nav> y <aside>. Como este concepto de esquema nunca fue implementado por los navegadores, finalmente se eliminó de la norma HTML en julio de 2022 (en la lección Elementos obsoletos. Esquema se comenta ese concepto de esquema, ya obsoleto).

Por ello se recomienda utilizar las etiquetas de secciones comentadas en esta lección, que permiten organizar mejor el contenido de las páginas, pero manteniendo la jerarquía de títulos independiente de las secciones utilizadas.

Cuerpo del documento: <body>

La etiqueta <body> abarca todo el contenido de la página web que se visualiza en el navegador. Por ello, una página web sólo puede tener un elemento <body>.

Encabezamiento: <header>

La etiqueta <header> está pensada para agrupar el contenido inicial de una página web. Puede contener únicamente los elementos que aparecen en las páginas de un sitio (el logotipo y un menú general, por ejemplo) o incluir también elementos particulares de la página (el título principal <h1> de la página, enlaces de navegación dentro de la página, texto de introducción, por ejemplo).

El elemento <header> puede estar incluido en <body> y entonces se entiende que es el encabezado de la página en su conjunto, pero también se puede incluir en <article>, <section>, <nav> y <aside> y entonces se entiende que es el encabezado del elemento que lo contiene.

La imagen siguiente muestra una página con varios elementos <header>:

header nav header main article header article header aside header footer

Navegación: <nav>

La etiqueta <nav> está pensada para agrupar los enlaces a otras páginas o los enlaces a los apartados de la propia página.

Una página puede contener varios elementos <nav>, aunque no es necesario que todos los grupos de enlaces estén en elementos <nav> (por ejemplo, los enlaces de contacto que se suelen incluir en el elemento <footer> no requieren el uso de <nav>).

La imagen siguiente muestra una página con tres elementos <nav>:

header nav nav main aside nav footer

Sección: <section>

La etiqueta <section> está pensada para agrupar los apartados del contenido principal del documento. Normalmente, las secciones <section> empiezan con un título (<h1>, <h2>, etc.) que hace referencia al tema tratado en la sección.

main section h2 h2 section h2 h2

Un elemento <section> puede contener elementos <section>. Las secciones interiores se entienden como subsecciones de la sección exterior.

main section section section section section section

Un elemento <section> puede contener elementos <article> y viceversa.

main section article article article section section

Las etiquetas <section> y <article> son similares. La diferencia entre ellas es que <article> es para partes que forman una unidad en sí mismas y <section> es para partes de una unidad mayor.

Artículo: <article>

La etiqueta <article> está pensada para agrupar el contenido de la página que forma una unidad en sí misma desde el punto de vista temático. Es decir, que un artículo debería poder publicarse y leerse como documento independiente, aunque una página puede estar formada por varios artículos de temática relacionada o no.

main article h2 h2 article h2 h2

Un elemento <article> puede contener otros elementos <article> que están relacionados con el contenido del <article> que los contiene.

main article article article article article article

Un elemento <article> puede contener elementos <section> y viceversa.

main article section section section article article

Las etiquetas <article> y <section> son similares. La diferencia entre ellas es que <article> es para partes que forman una unidad en sí mismas y <section> es para partes de una unidad mayor.

Si la página trata de un único tema y se va a utilizar un único elemento <article>, es preferible utilizar la etiqueta <main>.

Títulos: <h1> <h2> <h3> <h4> <h5> <h6>

Las etiquetas <h1>, <h2>, <h3>, <h4>, <h5> y <h6> están pensadas para marcar los títulos y subtítulos de los apartados de un documento.

La hoja de estilo por omisión de los navegadores suele mostrar los títulos en tamaño cada vez más pequeño (incluso más pequeño que el tamaño de los párrafos <p>), en negrita y con márgenes mayores que los los párrafos <p>.

<h1>Título 1</h1>

<h2>Título 2</h2>

<h3>Título 3</h3>

<h4>Título 4</h4>

<h5>Título 5</h5>

<h6>Título 6</h6>
Enlace externo

En principio, los títulos <h1>, ..., <h6> se deben utilizar de forma jerárquica, es decir, no saltándose niveles y utilizando títulos del mismo nivel para contenido de la misma categoría (apartados principales, subapartados, etc.).

Los títulos <h1>, ..., <h6> definen de forma implícita las secciones anidadas en el esquema (outline) de la página web, como muestra el ejemplo siguiente, en el que las secciones implícitas están marcadas con un trazo discontinuo.

h1 h2 h3 h2 h3

Lateral: <aside>

La etiqueta <aside> está pensada para agrupar contenido secundario y tangencial al contenido al que acompaña (por ejemplo, un bloque de anuncios, un grupo de enlaces externos relacionados, una cita del texto). Normalmente se suele mostrar en los lados del documento.

El elemento <aside> puede estar incluido en <body> y entonces se entiende que se trata de contenido secundario con respecto a la página en su conjunto, pero también se puede incluir en <article> o <section> y entonces se entiende que se trata de contenido secundario con respecto al elemento que lo contiene.

La imagen siguiente muestra una página con varios elementos <aside>:

header nav main article aside article aside aside footer

Dirección <address>

La etiqueta <address> está pensada para contener información de contacto del autor de la información (dirección de correo, teléfono, etc.), pero no otro tipo de información. Normalmente se incluye en el pie de página <footer> general de <body> o en el pie de página <footer> de un <article>.

header nav main article footer address article footer address aside footer address

La hoja de estilo por omisión de los navegadores suele mostrar el bloque de dirección <address> en cursiva.

<footer>
  <address>
    Autor: Bartolomé Sintes Marco<br>
    correo: bartolome.sintes@example.com
  </address>

  <p>Última modificación: 28 de noviembre de 2017</p>
</footer>
Enlace externo