Menu

Span en HTML: estilo a parte del texto y div vs span

La etiqueta <span> es un contenedor genérico en línea: envuelve unas palabras dentro de una línea para darles estilo o manejarlas con scripts sin romper la línea. Aprende a usarla, en qué se diferencia de div y cuándo encaja mejor una etiqueta más específica.

Esta página incluye editores ejecutables: edita, ejecuta y ve el resultado al instante.

Qué hace la etiqueta span

<span> envuelve un fragmento de texto dentro de una línea para que puedas darle estilo o encontrarlo con JavaScript. Es el gemelo en línea de <div>: no tiene significado ni aspecto por defecto, y no empieza una línea nueva.

La frase se queda en una línea. Solo cambian las palabras envueltas.

div vs span

Los dos tienen el mismo propósito (un contenedor sin significado) y se diferencian en cómo se colocan en la página:

El div parte la frase en tres líneas y se estira a lo ancho de la página; el span se queda en la frase y se ajusta a su texto.

<div><span>
VisualizaciónEn bloqueEn línea
Empieza una línea nuevaSíNo
AnchoTodo el ancho disponibleTan ancho como su contenido
width, height, margen verticalSe aplicanSe ignoran
Puede contenerCualquier cosa, incluidos bloquesSolo texto y elementos en línea
Uso típicoSecciones, tarjetas, envoltorios de diseñoUna palabra o frase dentro de un texto

Una diferencia más: no se permite un <div> dentro de un <p>, y el navegador cierra el párrafo antes de tiempo si lo intentas, mientras que un span puede ir donde vaya el texto. Más sobre esto en la página de div.

Dar estilo a un span: qué funciona y qué no

El color, la fuente, el fondo y el padding horizontal funcionan en un span. El tamaño no: un elemento en línea ignora width, height y los márgenes superior e inferior. Cámbialo a inline-block para darle tamaño sin sacarlo de la línea:

El primer span solo es tan ancho como sus palabras. El segundo mide exactamente 120 por 40 píxeles y sigue dentro de la frase.

Spans con JavaScript

Un span es el marcador habitual para un valor que rellena un script, como un contador o un nombre de usuario:

Solo cambia el número; el resto de la frase no se toca.

Cuándo es mejor una etiqueta específica que un span

Un span no tiene significado, así que un lector de pantalla lo lee como texto normal. Cuando las palabras tienen un papel, usa la etiqueta de ese papel y dale el estilo que quieras:

SignificadoUsa en lugar de un span
Texto importante<strong>
Énfasis<em>
Texto resaltado o marcado<mark>
Código, un nombre de archivo<code>
Una tecla del teclado<kbd>
Una fecha u hora<time datetime="2026-09-24">
Texto en otro idioma<span lang="fr"> (span más el atributo lang)

La página de negrita explica la diferencia entre <strong>, <b>, <em> e <i>.

Errores comunes

  • Poner width a un span normal. Se ignora. Usa display: inline-block.
  • Meter un div o un párrafo dentro de un span. Es HTML no válido que rompe la línea. Cambia el span exterior por un div.
  • Spans clicables. Igual que un div, un span con onclick no se puede alcanzar con el teclado. Usa un <button> o un enlace.
  • Un span para cada estilo. Si párrafos o secciones enteras necesitan un estilo, pon la clase en el propio <p> o contenedor en lugar de envolver su texto en un span.

Preguntas frecuentes

¿Qué es un span en HTML?

<span> es un contenedor genérico en línea. Envuelve parte de una línea de texto, como una palabra, para que el CSS o el JavaScript puedan apuntar a ella, y no tiene aspecto ni significado propios.

¿Qué diferencia hay entre div y span?

Un <div> es un bloque: empieza en una línea nueva y ocupa todo el ancho. Un <span> es en línea: se queda dentro de la línea de texto y solo es tan ancho como su contenido. Usa div para agrupar bloques de contenido y span para marcar palabras dentro de un texto.

¿Por qué width no funciona en mi span?

Los elementos en línea ignoran width, height y los márgenes verticales. Dale al span display: inline-block para que siga en la línea y acepte un tamaño, o display: block para que se comporte como un div.

¿Cómo cambio el color de una palabra en HTML?

Envuelve la palabra en un span con una clase y dale color en el CSS: <span class="accent">word</span> con .accent { color: #2563eb; }. Para algo puntual, <span style="color: #2563eb">word</span> también funciona.

¿Un span puede contener un div?

No. Un span solo puede contener contenido en línea, como texto, enlaces, imágenes y otros spans. Los navegadores muestran igualmente un div dentro de un span, pero es HTML no válido y rompe la línea, así que cambia el elemento exterior por un div.

Coddy programming languages illustration

Aprende a programar con Coddy

COMENZAR