{"id":1349,"date":"2026-03-06T07:00:00","date_gmt":"2026-03-06T06:00:00","guid":{"rendered":"https:\/\/programaraciegas.net\/?p=1349"},"modified":"2026-02-20T08:23:04","modified_gmt":"2026-02-20T07:23:04","slug":"estructurar-el-contenido-textual-en-un-documento-html","status":"publish","type":"post","link":"https:\/\/programaraciegas.net\/?p=1349","title":{"rendered":"Estructurar el contenido textual en un documento HTML"},"content":{"rendered":"<p>Cuando una p\u00e1gina HTML tiene una <a href=\"https:\/\/programaraciegas.net\/?p=1348\">organizaci\u00f3n \u00a0por zonas(landmarks, secciones y encabezados)<\/a>, con la definici\u00f3n del mapa general para navegar, es necesario profundizar m\u00e1s en la organizaci\u00f3n de los contenidos textuales buscando c\u00f3mo escribir HTML que se entienda bien tanto visualmente como con lector de pantalla, y que adem\u00e1s sea f\u00e1cil de mantener.<\/p>\n<h2>Sem\u00e1ntica antes que estilo<\/h2>\n<p>Una idea que conviene repetir siempre es que en HTML no se dibuja la p\u00e1gina, se describe qu\u00e9 es cada cosa.<\/p>\n<p>El CSS se encarga de c\u00f3mo se ve.<\/p>\n<p>El objetivo con HTML es que el contenido tenga una estructura que se pueda comprender incluso si no hay estilos visuales, se navega por teclado o con lector de pantallas o se est\u00e1 accediendo desde un dispositivo m\u00f3vil o de escritorio.\u00a0<\/p>\n<h2>P\u00e1rrafos<\/h2>\n<p>El p\u00e1rrafo es la unidad m\u00ednima de texto con sentido propio. Si se est\u00e1 escribiendo frases que forman una idea, normalmente eso es un &lt;p&gt;.<\/p>\n<h3>Ejemplo<\/h3>\n<pre>&lt;p&gt;HTML es un lenguaje de marcado. Su objetivo es describir el contenido de una p\u00e1gina.&lt;\/p&gt;<br \/>&lt;p&gt;Cuando usamos elementos sem\u00e1nticos, hacemos que la web sea m\u00e1s navegable y accesible.&lt;\/p&gt;<\/pre>\n<h3>Errores habituales<\/h3>\n<p>Muchos desarrolladores suelen usar &lt;br&gt; para construir p\u00e1rrafos pero &lt;br&gt; se debe utilizar para un salto de l\u00ednea dentro de un mismo bloque, por ejemplo direcciones postales o poes\u00eda, no para separar ideas completas.<\/p>\n<p>Un mal ejemplo puede ser:<\/p>\n<pre>HTML es un lenguaje de marcado.&lt;br&gt;<br \/>Su objetivo es describir el contenido de una p\u00e1gina.&lt;br&gt;&lt;br&gt;<br \/>Cuando usamos elementos sem\u00e1nticos...<\/pre>\n<p>Otro error habitual es meter p\u00e1rrafos dentro de cualquier cosa porque funciona en el navegador. Por ejemplo, meter texto plano directamente dentro de un contenedor sin estructura. Se puede, pero se pierde sem\u00e1ntica y consistencia.<\/p>\n<h2>Listas<\/h2>\n<p>Una lista no es solo un p\u00e1rrafo con vi\u00f1etas bonitas: es una relaci\u00f3n estructural entre elementos sem\u00e1nticamente relacionados de forma consecutiva.<\/p>\n<h3>Listas no ordenadas: &lt;ul&gt;<\/h3>\n<p>Se deben utilizar para elementos sin orden relevante.<\/p>\n<pre>&lt;ul&gt;<br \/>&lt;li&gt;Texto alternativo&lt;\/li&gt;<br \/>&lt;li&gt;Encabezados jer\u00e1rquicos&lt;\/li&gt;<br \/>&lt;li&gt;Landmarks&lt;\/li&gt;<br \/>&lt;\/ul&gt;<\/pre>\n<h3>Listas ordenadas: &lt;ol&gt;<\/h3>\n<p>Se deben utilizar cuando el orden importa (pasos, ranking, instrucciones).<\/p>\n<pre>&lt;ol&gt;<br \/>&lt;li&gt;Abre el archivo HTML.&lt;\/li&gt;<br \/>&lt;li&gt;Localiza el contenido principal.&lt;\/li&gt;<br \/>&lt;li&gt;Revisa la jerarqu\u00eda de encabezados.&lt;\/li&gt;<br \/>&lt;\/ol&gt;<\/pre>\n<h3>Listas de definici\u00f3n: &lt;dl&gt;<\/h3>\n<p>Se deben utilizar para pares t\u00e9rmino\u2013definici\u00f3n. Son muy \u00fatiles en glosarios o fichas.<\/p>\n<pre>&lt;dl&gt;<br \/>&lt;dt&gt;Landmark&lt;\/dt&gt;<br \/>&lt;dd&gt;Regi\u00f3n navegable de una p\u00e1gina (main, nav, footer...).&lt;\/dd&gt;<br \/><br \/>&lt;dt&gt;Sem\u00e1ntica&lt;\/dt&gt;<br \/>&lt;dd&gt;El significado estructural de un elemento HTML.&lt;\/dd&gt;<br \/>&lt;\/dl&gt;<\/pre>\n<h3>Errores habituales<\/h3>\n<p>Alguno de los errores m\u00e1s comunes a la hora de agrupar contenidos en lista es, por ejemplo, simular listas con &lt;p&gt;\u2022 &#8230;&lt;\/p&gt;: visualmente se parece, pero para la accesibilidad no es una lista.<br \/>Otros de los errores es usar listas para maquetar (por ejemplo, columnas) cuando en realidad no se est\u00e1 representando un conjunto de elementos relacionados.<\/p>\n<h2>Citas<\/h2>\n<p>Las citas tambi\u00e9n son marcas sem\u00e1nticas que ayudan a estructurar mejor el contenido textual. Existen los siguientes marcados de cita:<\/p>\n<p>Cita en l\u00ednea: &lt;q&gt; utilizada para una cita corta dentro de una frase.<\/p>\n<pre>&lt;p&gt;Como dijo alguien una vez: &lt;q&gt;la accesibilidad es usabilidad para todos&lt;\/q&gt;.&lt;\/p&gt;<\/pre>\n<p>Cita en bloque: &lt;blockquote&gt; utilizada para un fragmento m\u00e1s largo que merece entidad propia o que ocupa m\u00e1s de un p\u00e1rrafo.<\/p>\n<pre>&lt;blockquote&gt;<br \/>&lt;p&gt;La accesibilidad no es una caracter\u00edstica extra. Es parte del dise\u00f1o.&lt;\/p&gt;<br \/>&lt;\/blockquote&gt;<\/pre>\n<p>Se puede a\u00f1adir la fuente de forma clara usando &lt;cite&gt; (no es el enlace, es la referencia bibliogr\u00e1fica):<\/p>\n<pre>&lt;blockquote&gt;<br \/>&lt;p&gt;La accesibilidad no es una caracter\u00edstica extra. Es parte del dise\u00f1o.&lt;\/p&gt;<br \/>&lt;cite&gt;Manual interno del equipo&lt;\/cite&gt;<br \/>&lt;\/blockquote&gt;<\/pre>\n<h3>Errores habituales<\/h3>\n<p>Se suele usar &lt;blockquote&gt; solo para poner texto sangrado. Eso es CSS.<br \/>\u2022 Poner comillas visuales y olvidarte de la estructura: el lector de pantalla no sabe que es una cita.<\/p>\n<p>\u2e3b<\/p>\n<p>C\u00f3digo: &lt;code&gt;, &lt;pre&gt;, &lt;kbd&gt;, &lt;samp&gt; (s\u00ed, hay m\u00e1s de uno)<\/p>\n<p>El contenido t\u00e9cnico es especialmente sensible a accesibilidad y comprensi\u00f3n.<\/p>\n<p>C\u00f3digo en l\u00ednea: &lt;code&gt;<\/p>\n<p>Para peque\u00f1os fragmentos dentro de un p\u00e1rrafo.<\/p>\n<p>&lt;p&gt;El elemento &lt;code&gt;&amp;lt;main&amp;gt;&lt;\/code&gt; debe aparecer una sola vez por p\u00e1gina.&lt;\/p&gt;<\/p>\n<p>Bloques de c\u00f3digo: &lt;pre&gt;&lt;code&gt;<\/p>\n<p>Cuando necesitas respetar espacios y saltos de l\u00ednea.<\/p>\n<p>&lt;pre&gt;&lt;code&gt;function hello() {<br \/>console.log(Hola);<br \/>}&lt;\/code&gt;&lt;\/pre&gt;<\/p>\n<p>Teclas y atajos: &lt;kbd&gt;<\/p>\n<p>Para representar lo que el usuario pulsa.<\/p>\n<p>&lt;p&gt;Pulsa &lt;kbd&gt;Control&lt;\/kbd&gt; + &lt;kbd&gt;S&lt;\/kbd&gt; para guardar.&lt;\/p&gt;<\/p>\n<p>Salida del sistema: &lt;samp&gt;<\/p>\n<p>Para texto que representa la salida de un programa, terminal, etc.<\/p>\n<p>&lt;p&gt;El sistema mostrar\u00e1: &lt;samp&gt;Error: file not found&lt;\/samp&gt;&lt;\/p&gt;<\/p>\n<p>Buenas pr\u00e1cticas muy recomendables:<br \/>\u2022 Escapa caracteres en c\u00f3digo (&amp;lt;, &amp;gt;, &amp;amp;) si est\u00e1s escribiendo HTML dentro del bloque.<br \/>\u2022 Si publicas tutoriales, intenta que el texto explique el c\u00f3digo antes y despu\u00e9s: el bloque de c\u00f3digo sin contexto es una pared.<\/p>\n<p>\u2e3b<\/p>\n<p>Tablas: solo para datos, y con estructura real<\/p>\n<p>La tabla es el elemento que m\u00e1s se malusa.<\/p>\n<p>Regla de oro:<\/p>\n<p>Una tabla es para datos tabulares, no para maquetar.<\/p>\n<p>\u00bfCu\u00e1ndo s\u00ed usar tabla?<\/p>\n<p>Cuando tienes datos que se entienden por filas\/columnas: horarios, comparativas, listados con atributos, etc.<\/p>\n<p>Ejemplo b\u00e1sico con cabecera:<\/p>\n<p>&lt;table&gt;<br \/>&lt;caption&gt;Comparativa de planes&lt;\/caption&gt;<br \/>&lt;thead&gt;<br \/>&lt;tr&gt;<br \/>&lt;th scope=col&gt;Plan&lt;\/th&gt;<br \/>&lt;th scope=col&gt;Precio&lt;\/th&gt;<br \/>&lt;th scope=col&gt;Soporte&lt;\/th&gt;<br \/>&lt;\/tr&gt;<br \/>&lt;\/thead&gt;<br \/>&lt;tbody&gt;<br \/>&lt;tr&gt;<br \/>&lt;td&gt;B\u00e1sico&lt;\/td&gt;<br \/>&lt;td&gt;0 \u20ac&lt;\/td&gt;<br \/>&lt;td&gt;No&lt;\/td&gt;<br \/>&lt;\/tr&gt;<br \/>&lt;tr&gt;<br \/>&lt;td&gt;Pro&lt;\/td&gt;<br \/>&lt;td&gt;10 \u20ac&lt;\/td&gt;<br \/>&lt;td&gt;S\u00ed&lt;\/td&gt;<br \/>&lt;\/tr&gt;<br \/>&lt;\/tbody&gt;<br \/>&lt;\/table&gt;<\/p>\n<p>Claves de accesibilidad:<br \/>\u2022 &lt;caption&gt;: describe la tabla. Much\u00edsima gente lo olvida.<br \/>\u2022 &lt;th&gt; con scope=col o scope=row: define encabezados de columna o fila.<br \/>\u2022 Usa &lt;thead&gt;, &lt;tbody&gt; cuando tenga sentido: ayuda a organizar.<\/p>\n<p>Errores t\u00edpicos que rompen la experiencia:<br \/>\u2022 Tablas sin encabezados: el lector de pantalla leer\u00e1 celdas sin contexto.<br \/>\u2022 Tablas para alinear cosas (como un grid de dise\u00f1o): hoy eso es CSS (flex, grid).<\/p>\n<p>\u2e3b<\/p>\n<p>\u00bfCu\u00e1ndo NO usar un &lt;div&gt;?<\/p>\n<p>El &lt;div&gt; es un contenedor gen\u00e9rico sin sem\u00e1ntica. No es malo, pero es la \u00faltima opci\u00f3n, no la primera.<\/p>\n<p>Usa &lt;div&gt; cuando:<br \/>\u2022 necesitas agrupar elementos para aplicar estilos o layout,<br \/>\u2022 y no hay un elemento sem\u00e1ntico que describa esa agrupaci\u00f3n.<\/p>\n<p>No uses &lt;div&gt; cuando exista un elemento que s\u00ed describe lo que es:<br \/>\u2022 \u00bfEs un p\u00e1rrafo? \u2192 &lt;p&gt;<br \/>\u2022 \u00bfEs una lista? \u2192 &lt;ul&gt;\/&lt;ol&gt;\/&lt;dl&gt;<br \/>\u2022 \u00bfEs una secci\u00f3n tem\u00e1tica? \u2192 &lt;section&gt;<br \/>\u2022 \u00bfEs una pieza de contenido autocontenida? \u2192 &lt;article&gt;<br \/>\u2022 \u00bfEs navegaci\u00f3n? \u2192 &lt;nav&gt;<br \/>\u2022 \u00bfEs el contenido principal? \u2192 &lt;main&gt;<br \/>\u2022 \u00bfEs un encabezado de p\u00e1gina o secci\u00f3n? \u2192 &lt;header&gt;<br \/>\u2022 \u00bfEs un pie? \u2192 &lt;footer&gt;<br \/>\u2022 \u00bfEs complementario? \u2192 &lt;aside&gt;<br \/>\u2022 \u00bfEs un bot\u00f3n? \u2192 &lt;button&gt; (no un &lt;div&gt; clicable)<br \/>\u2022 \u00bfEs un enlace? \u2192 &lt;a&gt;<\/p>\n<p>Ejemplo cl\u00e1sico (y problem\u00e1tico):<\/p>\n<p>&lt;div onclick=guardar()&gt;Guardar&lt;\/div&gt;<\/p>\n<p>Eso visualmente puede parecer un bot\u00f3n, pero:<br \/>\u2022 no es accesible por teclado como un bot\u00f3n real,<br \/>\u2022 no tiene rol sem\u00e1ntico correcto,<br \/>\u2022 y no hereda comportamientos est\u00e1ndar.<\/p>\n<p>Lo correcto:<\/p>\n<p>&lt;button type=button onclick=guardar()&gt;Guardar&lt;\/button&gt;<\/p>\n<p>\u2e3b<\/p>\n<p>Un mini-checklist para tus art\u00edculos y p\u00e1ginas<\/p>\n<p>Cuando est\u00e9s escribiendo contenido textual, prueba este repaso r\u00e1pido:<br \/>1. \u00bfCada idea completa est\u00e1 en un &lt;p&gt; (o elemento equivalente)?<br \/>2. \u00bfSi hay un conjunto de items, est\u00e1 en una lista real?<br \/>3. \u00bfSi cito a alguien, uso &lt;blockquote&gt; o &lt;q&gt; seg\u00fan el caso?<br \/>4. \u00bfEl c\u00f3digo est\u00e1 marcado como c\u00f3digo (&lt;code&gt;, &lt;pre&gt;, &lt;kbd&gt;)?<br \/>5. \u00bfLas tablas tienen caption y encabezados (th, scope)?<br \/>6. \u00bfEstoy usando &lt;div&gt; solo cuando no hay alternativa sem\u00e1ntica?<\/p>\n<p>\u2e3b<\/p>\n<p>Si quieres, el siguiente art\u00edculo encaja muy bien si lo enfocamos en elementos de texto de detalle que suelen aparecer en contenidos reales: &lt;strong&gt;, &lt;em&gt;, &lt;mark&gt;, &lt;abbr&gt;, &lt;time&gt;, enlaces bien escritos, y c\u00f3mo evitar el haz clic aqu\u00ed para que la navegaci\u00f3n por enlaces tenga sentido.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Cuando una p\u00e1gina HTML tiene una organizaci\u00f3n \u00a0por zonas(landmarks, secciones y encabezados), con la definici\u00f3n del mapa general para navegar, es necesario profundizar m\u00e1s en la organizaci\u00f3n de los contenidos textuales buscando c\u00f3mo escribir HTML que se entienda bien tanto visualmente como con lector de pantalla, y que adem\u00e1s sea f\u00e1cil de mantener. Sem\u00e1ntica antes &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/programaraciegas.net\/?p=1349\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> \u00abEstructurar el contenido textual en un documento 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-1349","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\/1349","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=1349"}],"version-history":[{"count":0,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=\/wp\/v2\/posts\/1349\/revisions"}],"wp:attachment":[{"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1349"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1349"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/programaraciegas.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1349"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}