HTML5 semántico: elementos semánticos frente a div soup
Sustituya divs contenedores sin significado por elementos semánticos y comprenda el algoritmo del esquema del documento y la jerarquía de encabezados.
HTML5 semántico: elementos semánticos frente a div soup es una lección gratuita de Frontend Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Frontend Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Frontend Academy incluye 4 lecciones en total.
Sopa de divs: el problema
Sopa de divs es una página construida por completo con elementos <div> y <span>. Requiere nombres de clase para comunicar la estructura, los lectores de pantalla no pueden interpretarla sin esas clases y no transmite ningún significado a los motores de búsqueda.
<!-- Div soup (avoid) -->
<div class="container">
<div class="header">
<div class="logo">...</div>
<div class="nav">...</div>
</div>
<div class="content">...</div>
<div class="footer">...</div>
</div>La alternativa semántica
Sustituya los divs sin significado por elementos semánticos que comuniquen su propósito. Ahora la estructura se explica por sí misma y se entiende sin ningún CSS.
<!-- Semantic HTML (preferred) -->
<body>
<header>
<a href="/"><img src="logo.svg" alt="Brand"></a>
<nav>...</nav>
</header>
<main>...</main>
<footer>...</footer>
</body>El algoritmo de esquema del documento
Los elementos de encabezado (h1-h6) crean un esquema del documento. Los usuarios de lectores de pantalla navegan mediante los encabezados. La tecnología de asistencia anuncia el nivel del esquema. Mantenga una jerarquía lógica: h1 para el título de la página, h2 para las secciones principales y h3 para las subsecciones.
<time> — Fechas legibles por máquinas
El elemento <time> marca fechas y horas con un atributo datetime legible por máquinas. Los motores de búsqueda entienden las fechas de eventos y los lectores de pantalla pueden anunciar las fechas formateadas.
<p>Published on <time datetime="2025-06-15">June 15, 2025</time></p>
<time datetime="2025-06-15T14:30">2:30 PM</time><address>
El elemento <address> contiene la información de contacto del artículo más cercano o del documento. No tiene que ser una dirección postal: también cuentan el email, el teléfono y los identificadores de redes sociales.
<address>
<a href="mailto:hello@coddy.app">hello@coddy.app</a><br>
<a href="https://twitter.com/coddykit">@coddykit</a>
</address><figure> y <figcaption>
<figure> contiene contenido independiente, como imágenes, gráficos, ejemplos de código o vídeos. <figcaption> proporciona un pie de figura vinculado semánticamente a la figura.
<figure>
<img src="chart.png" alt="Monthly active users 2025">
<figcaption>Figure 1: Monthly active users increased 42% in Q4 2025.</figcaption>
</figure><blockquote> y <cite>
<blockquote> marca una cita extensa. Use el atributo cite para la URL de origen. El elemento <cite> marca el título de una obra creativa, como un libro, un artículo o una película.
<blockquote cite="https://developer.mozilla.org">
<p>HTML is the standard markup language for creating web pages.</p>
<footer>—<cite>MDN Web Docs</cite></footer>
</blockquote><details> y <summary>
La combinación <details> + <summary> crea un widget nativo de acordeón o revelación sin JavaScript. El navegador gestiona automáticamente la apertura y el cierre, la interacción con el teclado y la accesibilidad.
<details>
<summary>What is the refund policy?</summary>
<p>We offer a 30-day money-back guarantee on all plans.</p>
</details><mark> — Texto resaltado
<mark> representa texto resaltado como referencia, por ejemplo, una coincidencia en los resultados de búsqueda. Semánticamente es diferente de aplicar estilo amarillo al texto con CSS.
<p>Search results for <q>flexbox</q>:</p>
<p>Use <mark>flexbox</mark> for one-dimensional layouts...</p><abbr> — Abreviaturas
Rodee las abreviaturas y los acrónimos con <abbr> y proporcione el término completo en el atributo title. Los lectores de pantalla y los navegadores muestran la forma desarrollada al usuario cuando pasa el cursor.
<abbr title="Cascading Style Sheets">CSS</abbr>
<abbr title="Accessible Rich Internet Applications">ARIA</abbr>Cuándo usar <div> y <span>
Ambos siguen siendo útiles. <div> es la opción adecuada para un contenedor de bloque genérico que no tiene significado semántico, como los contenedores de diseño o las raíces de componentes en React. Use <span> como punto de enganche para estilos en línea sin significado semántico.
Comprobación rápida
¿Qué elemento HTML crea un widget nativo de revelación contraíble sin necesidad de JavaScript?
Repaso: HTML5 semántico
Sustituya la sopa de divs por elementos semánticos: header, nav, main, article, section, aside, footer. Use time para las fechas, figure/figcaption para contenido multimedia, details/summary para acordeones y mark para resaltados. Reserve div y span para contenedores de diseño sin significado semántico.
Preguntas frecuentes
¿La lección «HTML5 semántico: elementos semánticos frente a div soup» es gratis?
Sí — el texto completo de «HTML5 semántico: elementos semánticos frente a div soup» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Frontend Academy, actualiza a CoddyKit PRO. El curso de Frontend Academy incluye 4 lecciones en total.
¿Qué aprenderé en «HTML5 semántico: elementos semánticos frente a div soup»?
Sustituya divs contenedores sin significado por elementos semánticos y comprenda el algoritmo del esquema del documento y la jerarquía de encabezados. Practicas Frontend Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Frontend Academy?
No se requiere experiencia previa. Frontend Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «HTML5 semántico: elementos semánticos frente a div soup»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Frontend Academy?
Sí. Cada lección de Frontend Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Controles de formulario: tipos de input, select y textarea
- ARIA y accesibilidad: label, role y aria-*
- HTML5 semántico: elementos semánticos frente a div soup
- Atributos de validación de formularios