¿Cuándo debo usar «div» y cuándo etiquetas semánticas?

Etiquetas semánticas vs «div»: prioriza la semántica. Usa «div» para estilo (CSS) o JS si no hay etiqueta con significado. ¡Evita la «divitis»!

LucusHost, el mejor hosting

La regla general es: prioriza siempre el uso de una etiqueta semántica si existe una que describa adecuadamente el propósito de tu contenido.

Cuándo usar etiquetas semánticas:

Debes optar por etiquetas semánticas (como <article>, <section>, <nav>, <aside>, <header>, <footer>, <main>, <figure>, <figcaption>, <time>, etc.) siempre que el bloque de contenido que estás creando tenga un significado estructural o un propósito claro en el documento.

  • <article>: Para contenido independiente y auto-contenido (un post de blog, un comentario, un widget).
  • <section>: Para agrupar contenido temáticamente relacionado.
  • <nav>: Para bloques de enlaces de navegación principales.
  • <aside>: Para contenido tangencialmente relacionado con el contenido principal (barras laterales, llamadas).
  • <header> y <footer>: Para las cabeceras y pies de página de un documento o de una sección.
  • <main>: Para el contenido principal o central del documento.
<article>
  <header>
    <h2>Título de mi Artículo</h2>
    <p>Publicado el <time datetime="2025-05-28">28 de mayo de 2025</time></p>
  </header>
  <p>Este es el contenido principal del artículo...</p>
  <footer>
    <p>Autor: HTML Moderno</p>
  </footer>
</article>
Lenguaje del código: PHP (php)

Cuándo usar <div>:

El <div> es un contenedor genérico de bloque sin ningún significado semántico inherente. Su uso es apropiado en las siguientes situaciones:

  1. Para agrupar elementos con fines puramente estilísticos (CSS): Cuando necesitas un contenedor para aplicar estilos específicos (como un fondo, un borde, o para crear una disposición con Flexbox o Grid) y ninguna etiqueta semántica describe lógicamente ese grupo.
  2. Para agrupar elementos con fines de comportamiento (JavaScript): Si necesitas un «gancho» para manipular un conjunto de elementos con JavaScript y el grupo no tiene un significado semántico propio.
  3. Como último recurso: Si después de considerar todas las opciones semánticas, ninguna se ajusta adecuadamente al propósito del bloque.
<div class="contenedor-tarjetas">
  <article class="tarjeta">...</article>
  <article class="tarjeta">...</article>
</div>
Lenguaje del código: PHP (php)

La idea es evitar la «divitis» (el uso excesivo de <div>s donde podrían usarse etiquetas semánticas). Para agrupaciones genéricas que son en línea (dentro de un párrafo, por ejemplo) en lugar de en bloque, la etiqueta equivalente sin semántica es <span>.

¿Tienes alguna duda o pregunta?Envía el formulario y procuraré darle respuesta
Formulario de pregunta
Responsable » Jose Ramón Bernabeu Guillem. Finalidad » Ponernos en contacto. Legitimación » Tu consentimiento al marcar la casilla verificación. Destinatarios » Los datos que proporciones estarán ubicados en los servidores de LucusHost, proveedor de hosting de este sitio. Derechos » por supuesto tendrás derecho, entre otros, a acceder, rectificar, limitar y suprimir tus datos.
Si creees que esto puede ser de utilidad a alguien más, pues... compártelo que es gratis 🙂
Sitio alojado en un servidor verde según The Green Web Foundation

LucusHost, el mejor hosting

Aviso legal | Condiciones de contratación | Política de privacidad | Política de cookies
© 2017-2025 · Jose R. Bernabeu ·
linkedin facebook pinterest youtube rss twitter instagram facebook-blank rss-blank linkedin-blank pinterest youtube twitter instagram