{"id":1348,"date":"2026-02-27T07:00:00","date_gmt":"2026-02-27T06:00:00","guid":{"rendered":"https:\/\/programaraciegas.net\/?p=1348"},"modified":"2026-02-20T06:55:10","modified_gmt":"2026-02-20T05:55:10","slug":"estructura-del-contenido-en-una-pagina-html","status":"publish","type":"post","link":"https:\/\/programaraciegas.net\/?p=1348","title":{"rendered":"Estructura del contenido en una p\u00e1gina HTML"},"content":{"rendered":"<p>En los art\u00edculos anteriores vimos la <a href=\"https:\/\/programaraciegas.net\/?p=1331\">estructura general de un documento HTML<\/a>, qu\u00e9 papel tiene el elemento <a href=\"https:\/\/programaraciegas.net\/?p=1332\">&lt;head&gt;<\/a> y c\u00f3mo el <a href=\"https:\/\/programaraciegas.net\/?p=1344\">&lt;body&gt;<\/a> representa el contenido con el que el usuario interact\u00faa.<\/p>\n<p>En este art\u00edculo vamos a profundizar en c\u00f3mo se organiza ese contenido dentro del &lt;body&gt; para que sea comprensible, navegable y accesible: hablaremos de landmarks (regiones), de secciones y de encabezados. La idea es construir una p\u00e1gina que no solo se vea bien, sino que est\u00e9 estructurada de forma que un lector de pantalla, un teclado o cualquier tecnolog\u00eda de asistencia pueda recorrerla como si fuese un mapa.<\/p>\n<h2>Estructura dentro del body<\/h2>\n<p>Cuando una p\u00e1gina crece (men\u00fa, buscador, contenido, barras laterales, pie, etc.), el usuario necesita referencias para no perderse.<\/p>\n<p>Visualmente se resuelve con columnas, cajas, colores y tama\u00f1os de letra. Pero para accesibilidad lo importante es la sem\u00e1ntica, es decir: qu\u00e9 es cada zona y qu\u00e9 funci\u00f3n cumple.<\/p>\n<p>Para eso HTML nos ofrece elementos para definir regiones (&lt;header&gt;, &lt;nav&gt;, &lt;main&gt;, &lt;footer&gt;, &lt;aside&gt;), elementos para definir secciones (&lt;article&gt;, &lt;section&gt;) y encabezados: &lt;h1&gt; \u2026 &lt;h6&gt; para expresar jerarqu\u00eda y permitir navegaci\u00f3n por t\u00edtulos de los contenidos.<\/p>\n<p>Cuando se usan bien estas piezas, muchos lectores de pantalla permiten saltar por regiones (landmarks) y por encabezados de forma inmediata. Adem\u00e1s, las herramientas de ayuda a la navegaci\u00f3n para personas con discapacidad cognitiva entienden mejor la estructura de los contenidos y pueden ofrecer una mejor asistencia a los usuarios con discapacidad.<\/p>\n<h2>Landmarks<\/h2>\n<p>Los landmarks (regiones) son zonas del documento lo bastante importantes como para que el usuario quiera ir directamente a ellas (por ejemplo: navegaci\u00f3n, contenido principal, pie).<\/p>\n<p>A nivel t\u00e9cnico, se exponen como roles\/landmarks en el \u00e1rbol de accesibilidad.<\/p>\n<p>En HTML moderno, muchos landmarks se consiguen sin ARIA, solo usando elementos sem\u00e1nticos:<br \/>\u2022 &lt;header&gt; (a nivel de p\u00e1gina) suele exponerse como banner.<br \/>\u2022 &lt;nav&gt; como navigation.<br \/>\u2022 &lt;main&gt; como main.<br \/>\u2022 &lt;aside&gt; como complementary (contenido complementario).<br \/>\u2022 &lt;footer&gt; (a nivel de p\u00e1gina) como contentinfo.<\/p>\n<p>Importante matiz: el contexto importa. Por ejemplo, un &lt;header&gt; dentro de un &lt;article&gt; deja de ser landmark banner y pasa a ser un contenedor gen\u00e9rico, precisamente para evitar ruido y duplicidades.<\/p>\n<h3>Ejemplo de una estructura t\u00edpica con landmarks y secciones<\/h3>\n<p>El siguiente ejemplo presenta una plantilla mental de c\u00f3mo dividir una p\u00e1gina en regiones y c\u00f3mo dar sentido a cada bloque.<\/p>\n<pre>&lt;body&gt;<br \/><br \/>&lt;a class=skip-link href=#contenido&gt;Saltar al contenido principal&lt;\/a&gt;<br \/><br \/>&lt;header&gt;<br \/>&lt;h1&gt;Programar a ciegas&lt;\/h1&gt;<br \/>&lt;p&gt;Accesibilidad, usabilidad y desarrollo.&lt;\/p&gt;<br \/>&lt;\/header&gt;<br \/><br \/>&lt;nav aria-label=Navegaci\u00f3n principal&gt;<br \/>&lt;a href=\/&gt;Inicio&lt;\/a&gt;<br \/>&lt;a href=\/articulos\/&gt;Art\u00edculos&lt;\/a&gt;<br \/>&lt;a href=\/contacto\/&gt;Contacto&lt;\/a&gt;<br \/>&lt;\/nav&gt;<br \/><br \/>&lt;main id=contenido&gt;<br \/>&lt;article&gt;<br \/>&lt;header&gt;<br \/>&lt;h2&gt;Estructura del contenido en HTML&lt;\/h2&gt;<br \/>&lt;p&gt;Publicado el 1\/01\/2026&lt;\/p&gt;<br \/>&lt;\/header&gt;<br \/><br \/>&lt;section&gt;<br \/>&lt;h3&gt;\u00bfQu\u00e9 son los landmarks?&lt;\/h3&gt;<br \/>&lt;p&gt;<br \/>Los landmarks son regiones que ayudan a moverse por la p\u00e1gina sin leerla de forma lineal.<br \/>&lt;\/p&gt;<br \/>&lt;\/section&gt;<br \/><br \/>&lt;section&gt;<br \/>&lt;h3&gt;Encabezados y jerarqu\u00eda&lt;\/h3&gt;<br \/>&lt;p&gt;<br \/>Los encabezados crean un mapa del contenido y permiten saltar por secciones.<br \/>&lt;\/p&gt;<br \/>&lt;\/section&gt;<br \/>&lt;\/article&gt;<br \/>&lt;\/main&gt;<br \/><br \/>&lt;aside aria-label=Contenido relacionado&gt;<br \/>&lt;h2&gt;Art\u00edculos relacionados&lt;\/h2&gt;<br \/>&lt;ul&gt;<br \/>&lt;li&gt;&lt;a href=\/?p=1331&gt;Introducci\u00f3n a HTML&lt;\/a&gt;&lt;\/li&gt;<br \/>&lt;li&gt;&lt;a href=\/?p=1332&gt;El head de una p\u00e1gina HTML&lt;\/a&gt;&lt;\/li&gt;<br \/>&lt;li&gt;&lt;a href=\/?p=1344&gt;El body de una p\u00e1gina HTML&lt;\/a&gt;&lt;\/li&gt;<br \/>&lt;\/ul&gt;<br \/>&lt;\/aside&gt;<br \/><br \/>&lt;footer&gt;<br \/>&lt;p&gt;&amp;copy; 2026 Tyflos Accessible Software&lt;\/p&gt;<br \/>&lt;a href=\/accesibilidad\/&gt;Declaraci\u00f3n de accesibilidad&lt;\/a&gt;<br \/>&lt;\/footer&gt;<br \/><br \/>&lt;\/body&gt;<\/pre>\n<p>Este ejemplo presenta los siguientes elementos clave:<\/p>\n<ul>\n<li>Hay un enlace de salto (<em>Saltar al contenido principal<\/em>).<\/li>\n<li>Hay un solo &lt;main&gt;, con un id para que el salto sea real.<\/li>\n<li>La navegaci\u00f3n principal est\u00e1 en &lt;nav&gt; y est\u00e1 etiquetada con aria-label para que, si en el futuro hay m\u00e1s de una navegaci\u00f3n, podamos diferenciarlas.<\/li>\n<li>El contenido principal est\u00e1 dentro de un &lt;article&gt; y dividido en &lt;section&gt; con encabezados.<\/li>\n<\/ul>\n<h4>El enlace para Saltar al contenido<\/h4>\n<p>Cuando una web repite cabecera y navegaci\u00f3n en todas las p\u00e1ginas, un usuario que navega con teclado o lector de pantalla se encuentra siempre el mismo bloque antes de llegar al contenido real. WCAG exige un mecanismo para saltar bloques repetidos (<a href=\"https:\/\/www.w3.org\/TR\/UNDERSTANDING-WCAG20\/navigation-mechanisms-skip.html\">criterio 2.4.1<\/a>).<\/p>\n<p>Un enlace de salto es la soluci\u00f3n m\u00e1s habitual y sencilla.<\/p>\n<p>Es opcional si ese enlace est\u00e1 siempre visible o si solo se muestra al recibir foco (lo habitual en muchos sitios).<\/p>\n<h2>Secciones<\/h2>\n<p>La estructuraci\u00f3n en secciones y sub secciones definen la ordenaci\u00f3n cognitiva general de los contenidos en una p\u00e1gina web. Se suelen recomendar las siguientes reglas:<\/p>\n<ul>\n<li>Usar &lt;article&gt; cuando el bloque tenga sentido por s\u00ed solo (una entrada de blog, una noticia, un comentario, una tarjeta de producto completa).<\/li>\n<li>Usar &lt;section&gt; cuando se est\u00e9 dividiendo un contenido en partes tem\u00e1ticas, normalmente con su propio encabezado.<\/li>\n<li>Ambos elementos crean secciones en el documento y definen el alcance de cosas como &lt;header&gt; y &lt;footer&gt; internos.<\/li>\n<li>No usar &lt;section&gt; como sustituto de &lt;div&gt;. Si no hay una secci\u00f3n tem\u00e1tica real (y normalmente un encabezado que la titule), probablemente ese bloque sea un &lt;div&gt;.<\/li>\n<\/ul>\n<h2>Encabezados<\/h2>\n<p>Para una persona con discapacidad para el acceso a los contenidos digitales, como una persona ciega, los encabezados no son texto grande, m\u00e1s bien son un mecanismo de navegaci\u00f3n y orientaci\u00f3n.<\/p>\n<p>Los encabezados definen la estructura de dependencias entre contenidos.<\/p>\n<p>Un <a href=\"https:\/\/programaraciegas.net\/?p=1228\">encabezado<\/a> marca el comienzo de una secci\u00f3n dentro de los contenidos de la p\u00e1gina.<\/p>\n<p>Se suelen aplicar las siguientes reglas:<\/p>\n<ul>\n<li>Siempre debe haber, al menos, un H1 en la p\u00e1gina.\u00a0<\/li>\n<li>Dentro del contenido del encabezado s\u00f3lo debe haber texto o una imagen.<\/li>\n<li>Ese texto o imagen debe representar el contenido que presenta el encabezado.<\/li>\n<li>Nunca se debe usar encabezados para estilo visual.<\/li>\n<li>Nunca se debe saltar niveles sin necesidad (por ejemplo, pasar de &lt;h1&gt; a &lt;h4&gt; porque s\u00ed).<\/li>\n<\/ul>\n<h2>Buenas pr\u00e1cticas para no crear ruido<\/h2>\n<p>Cuando se empieza a usar landmarks y ARIA, es f\u00e1cil excederse en su uso. Un abuso o el renombrado excesivo de las regiones generan ruido y dificultan entender la p\u00e1gina.<\/p>\n<p>Se recomienda seguir estas reglas:<\/p>\n<ul>\n<li>Un solo &lt;main&gt; por p\u00e1gina.<\/li>\n<li>Si hay varios &lt;nav&gt;, Es necesario poner nombre con aria-label (por ejemplo: Navegaci\u00f3n principal, Navegaci\u00f3n secundaria, Navegaci\u00f3n de pie).<\/li>\n<li>Se debe evitar crear regiones sin una raz\u00f3n sem\u00e1ntica.<\/li>\n<li>Usar &lt;aside&gt; para contenido complementario real (relacionado, pero no parte del hilo principal).<\/li>\n<\/ul>\n<h2>C\u00f3mo comprobar si la estructura es accesible<\/h2>\n<p>Se pueden detectar muchos fallos con <a href=\"https:\/\/programaraciegas.net\/?p=1235\">herramientas autom\u00e1ticas<\/a>, pero lo m\u00e1s fiable es realizar una verificaci\u00f3n manual utilizando un lector de pantallas.<br \/>El lector de pantallas tiene una funci\u00f3n para mostrar la estructura de encabezados en la p\u00e1gina. De esta forma se puede observar si respetan el orden de anidamiento y si cuentan c\u00f3mo se organiza el contenido en la p\u00e1gina.<br \/>El lector de pantallas, por defecto, avisa cuando se ha encontrado una regi\u00f3n (landmark). Es necesario revisar si aparecen regiones para la Navegaci\u00f3n, Contenido principal, Pie, etc., y si tienen nombres claros cuando hay varias del mismo tipo.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En los art\u00edculos anteriores vimos la estructura general de un documento HTML, qu\u00e9 papel tiene el elemento &lt;head&gt; y c\u00f3mo el &lt;body&gt; representa el contenido con el que el usuario interact\u00faa. En este art\u00edculo vamos a profundizar en c\u00f3mo se organiza ese contenido dentro del &lt;body&gt; para que sea comprensible, navegable y accesible: hablaremos de &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/programaraciegas.net\/?p=1348\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> \u00abEstructura del contenido en una p\u00e1gina HTML\u00bb<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,542],"tags":[84,333,94],"class_list":["post-1348","post","type-post","status-publish","format-standard","hentry","category-desarrollo","category-html-2","tag-curso","tag-html","tag-web"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts\/1348","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1348"}],"version-history":[{"count":0,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts\/1348\/revisions"}],"wp:attachment":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1348"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1348"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1348"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}