Menu

Centrar texto en HTML: text-align, vertical y sangría

Centra texto en HTML con la propiedad CSS text-align: center. Aprende dónde ponerla, por qué no funciona en un span, cómo centrar texto verticalmente en una caja, cómo alinear el texto al inicio, al final o a ambos bordes, y cómo sangrar párrafos.

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

Cómo centrar texto en HTML

Usa la propiedad CSS text-align: center en el elemento que contiene el texto:

text-align centra cada línea dentro del elemento, incluido el contenido en línea como enlaces, imágenes y botones. Se hereda, así que ponerlo en un contenedor centra el texto de todo lo que hay dentro.

Ponlo en el bloque, no en el span

text-align funciona en contenedores de bloque: <p>, <div>, encabezados, celdas de tabla. En un <span> o un <a> no hace nada, porque un elemento en línea solo es tan ancho como su texto y no hay espacio dentro del que centrar:

La solución es siempre la misma: mueve text-align: center al bloque padre.

Centrar el bloque, alinear las líneas a la izquierda

En un párrafo de varias líneas, el texto totalmente centrado cuesta de leer porque cada línea empieza en un sitio distinto. Un patrón habitual es centrar el bloque en la página y mantener su texto alineado al inicio:

margin-inline: auto centra un bloque que tiene ancho, text-align centra las líneas dentro de él. Centrar cajas (con flexbox, grid o márgenes) se explica en la página de centrar un div.

Centrar texto verticalmente

text-align solo funciona en horizontal. Para centrar texto verticalmente dentro de una caja, convierte la caja en un contenedor flex:

align-items: center centra en vertical, justify-content: center centra en horizontal, y text-align: center sigue centrando las líneas entre sí cuando hay varias. El truco de line-height solo funciona con una línea de texto en una caja de altura conocida.

Todos los valores de text-align

ValorResultado
start (por defecto)Las líneas empiezan en el borde inicial: la izquierda en español, la derecha en árabe y hebreo
endLas líneas terminan en el borde final
centerLíneas centradas
justifyLíneas estiradas hasta tocar los dos bordes (salvo la última)
left, rightSiempre a la izquierda o siempre a la derecha, sea cual sea el idioma

Es mejor start y end que left y right: se invierten automáticamente en los idiomas de derecha a izquierda, como muestra la última caja.

La antigua etiqueta center

Las páginas antiguas centran texto con <center> o con un atributo align:

<center>Old way</center>
<p align="center">Also old</p>

Los dos están obsoletos. Los navegadores todavía los muestran para que los sitios antiguos no se rompan, pero no son válidos en el HTML actual y mezclan el diseño con el marcado. Usa text-align: center en el CSS.

Sangrar texto

HTML no tiene una etiqueta de sangría, y los espacios escritos se juntan (consulta espacios en HTML). Las sangrías son CSS:

SangríaCSS
Solo la primera líneatext-indent: 2em
Todo el bloquepadding-inline-start: 2em o margin-inline-start: 2em
Francesa (la primera línea sobresale)padding-inline-start: 2em; text-indent: -2em

em liga la sangría al tamaño de letra, así que escala con el texto.

Errores comunes

  • text-align en un elemento en línea. Ponlo en el bloque padre.
  • Esperar que text-align centre una caja. Centra el texto y el contenido en línea, no un bloque con ancho. Usa margin-inline: auto o flexbox para las cajas.
  • Usar <center> o align="center". Obsoletos. Usa CSS.
  • Centrar párrafos largos. Centra encabezados y líneas cortas; deja el texto principal alineado al inicio.
  • Sangrar con &nbsp; o espacios. Usa text-indent o padding.

Preguntas frecuentes

¿Cómo centro texto en HTML?

Añade text-align: center al elemento que contiene el texto, por ejemplo <p style="text-align: center"> o una regla CSS como h1 { text-align: center; }. Centra cada línea de texto y el contenido en línea dentro de ese elemento.

¿Por qué text-align: center no funciona en mi span?

Un span es en línea, así que solo es tan ancho como su texto y no hay espacio dentro del que centrar. Pon text-align: center en el bloque padre (el <p> o <div> que lo rodea), o convierte el span en display: block.

¿Cómo centro texto verticalmente?

Convierte el contenedor en una caja flex: display: flex; align-items: center; (añade justify-content: center para centrar también en horizontal). Para una sola línea en una caja de altura fija, un line-height igual a la altura también funciona.

¿La etiqueta <center> sigue siendo válida?

No. <center> y el atributo align="center" están obsoletos. Los navegadores todavía los muestran por las páginas antiguas, pero el código nuevo debe usar text-align: center en el CSS.

¿Cómo pongo sangría a un texto en HTML?

Usa CSS. text-indent: 2em sangra la primera línea de un párrafo, y padding-inline-start: 2em o margin-inline-start: 2em sangran el bloque entero. Los espacios o &nbsp; en el texto no son una sangría fiable.

Coddy programming languages illustration

Aprende a programar con Coddy

COMENZAR