Div vs span: cuándo usar cada uno

Div vs span: cuándo usar cada uno

Nivel: Intro · HTML · Después del esqueleto básico · 12 minutos

Respuesta corta: usa <div> cuando necesitas un bloque genérico para agrupar secciones (ocupa todo el ancho disponible por defecto). Usa <span> cuando quieres marcar un trozo en línea dentro de un texto (una palabra, un precio) sin romper el párrafo. Ninguno aporta significado semántico: son cajas neutrales; para significado preferirás header, main, etc.

Tras formularios y tablas, llega la confusión clásica: «¿todo va en div?». Aquí una tabla comparativa, casos concretos y una recomendación según perfil.

Secciones de página apiladas como rectángulos azul marino con líneas de texto amarillas

Los div suelen apilarse en bloque: cada uno empieza en una línea nueva.

Tabla comparativa: div vs span

Criterio div span
Display por defecto block (bloque) inline (en línea)
Rompe el párrafo Sí (nueva «caja») No
Uso típico Agrupar layout / secciones genéricas Resaltar un fragmento de texto
Semántica Ninguna Ninguna
Puede contener bloques Sí (p, listas, otros div…) Solo contenido en línea (texto, a, img…)
Ideal con CSS Contenedores, grids, cards Color, peso, badge pequeño
Frase guía «Caja de sección» «Marca dentro de la frase»
<div class="tarjeta">
  <p>Precio: <span class="oferta">$9.99</span></p>
</div>
Línea de texto con una palabra resaltada en amarillo como span en línea

El span vive dentro del flujo del texto; no empuja el resto a otra línea por sí solo.

Caso 1: maquetar una tarjeta

Una tarjeta con título + párrafo + botón suele ir envuelta en un div (o mejor en article si es contenido). Varios div anidados agrupan cabecera y cuerpo. Un span no serviría como contenedor de esa tarjeta: no está pensado para bloques grandes.

Estudiante compara en el portátil un layout de cajas grandes frente a un resaltado en línea

Pregunta: ¿necesito una caja nueva o solo pintar una palabra? → div vs span.

Caso 2: resaltar una palabra

«Hoy hay oferta en el curso». En HTML real usarías <span class="oferta">oferta</span> (o <strong> si es énfasis semántico). Meter esa palabra en un div partiría el párrafo en varios bloques y se vería raro.

Caso 3: ¿puedo usar solo divs para toda la página?

Técnicamente sí; es mala práctica. Pierdes semántica (SEO, accesibilidad). Reserva div/span para cuando no hay etiqueta con significado. Prefiere header, nav, main, footer cuando describan la región.

Mini-ejercicio

Badge de «Nuevo» junto a un título → span. Contenedor de tres columnas → div (o elementos semánticos + CSS). ¿Un span con un ul dentro? → inválido / incorrecto: el span no debe envolver bloques.

Recomendación según perfil

  • Estudiante: memoriza block vs inline; practica un ejemplo de cada.
  • Docente: pide reescribir una página «todo-div» usando etiquetas semánticas.
  • Autodidacta: inspecciona cualquier sitio: verás divs de layout y spans de estilo.

Para seguir: semántica con header, nav, main y footer — regiones con significado.

Artículos relacionados