Menu

Centralizar texto em HTML: text-align, vertical e recuo

Centralize texto no HTML com a propriedade CSS text-align: center. Veja onde colocá-la, por que ela não funciona num span, como centralizar texto na vertical dentro de uma caixa, como alinhar ao início, ao fim ou às duas margens e como dar recuo a parágrafos.

Esta página tem editores executáveis - edite, execute e veja a saída na hora.

Como centralizar texto no HTML

Use a propriedade CSS text-align: center no elemento que contém o texto:

text-align centraliza cada linha dentro do elemento, inclusive coisas inline como links, imagens e botões. A propriedade é herdada, então defini-la num contêiner centraliza o texto de tudo o que estiver dentro dele.

Coloque no bloco, não no span

text-align funciona em contêineres block: <p>, <div>, títulos, células de tabela. Num <span> ou <a> ela não faz nada, porque um elemento inline tem só a largura do texto e não há espaço para centralizar:

A solução é sempre a mesma: leve text-align: center para o bloco pai.

Centralize o bloco, alinhe as linhas à esquerda

Num parágrafo de várias linhas, texto totalmente centralizado é difícil de ler, porque cada linha começa num lugar diferente. Um padrão comum é centralizar o bloco na página e manter o texto alinhado ao início:

margin-inline: auto centraliza um bloco que tem largura, text-align centraliza as linhas dentro dele. Centralizar caixas (com flexbox, grid ou margens) é assunto da página como centralizar uma div.

Centralizar texto na vertical

text-align só funciona na horizontal. Para centralizar o texto na vertical dentro de uma caixa, transforme a caixa num contêiner flex:

align-items: center centraliza na vertical, justify-content: center centraliza na horizontal, e text-align: center ainda centraliza as linhas entre si quando há mais de uma. O truque do line-height só funciona para uma única linha de texto numa caixa de altura conhecida.

Todos os valores de text-align

ValorResultado
start (padrão)As linhas começam na margem inicial: esquerda em português, direita em árabe e hebraico
endAs linhas terminam na margem final
centerLinhas centralizadas
justifyLinhas esticadas até tocar as duas margens (menos a última)
left, rightSempre à esquerda ou sempre à direita, seja qual for o idioma

Prefira start e end a left e right: eles se invertem automaticamente em idiomas da direita para a esquerda, como mostra a última caixa.

A antiga tag center

Páginas antigas centralizam texto com <center> ou com um atributo align:

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

Os dois estão obsoletos. Os navegadores ainda os exibem para que sites antigos não quebrem, mas são inválidos no HTML atual e misturam layout com a marcação. Use text-align: center no CSS.

Recuo de texto

O HTML não tem tag de recuo, e os espaços digitados são juntados (veja espaço em HTML). Recuo é coisa do CSS:

RecuoCSS
Só a primeira linhatext-indent: 2em
O bloco inteiropadding-inline-start: 2em ou margin-inline-start: 2em
Deslocado (primeira linha para fora)padding-inline-start: 2em; text-indent: -2em

em liga o recuo ao tamanho da fonte, então ele acompanha o texto.

Erros comuns

  • text-align num elemento inline. Coloque no bloco pai.
  • Esperar que text-align centralize uma caixa. Ele centraliza texto e conteúdo inline, não um bloco com largura. Use margin-inline: auto ou flexbox para caixas.
  • Usar <center> ou align="center". Obsoletos. Use CSS.
  • Centralizar parágrafos longos. Centralize títulos e linhas curtas; mantenha o texto corrido alinhado ao início.
  • Recuar com &nbsp; ou espaços. Use text-indent ou padding.

Perguntas frequentes

Como centralizar um texto no HTML?

Adicione text-align: center ao elemento que contém o texto, por exemplo <p style="text-align: center"> ou uma regra CSS como h1 { text-align: center; }. Isso centraliza cada linha de texto e o conteúdo inline dentro desse elemento.

Por que text-align: center não funciona no meu span?

Um span é inline, então ele tem só a largura do texto e não sobra espaço para centralizar. Coloque text-align: center no bloco pai (o <p> ou a <div> em volta), ou deixe o span com display: block.

Como centralizar texto na vertical?

Transforme o contêiner numa caixa flex: display: flex; align-items: center; (adicione justify-content: center para centralizar também na horizontal). Para uma única linha numa caixa de altura fixa, um line-height igual à altura também funciona.

A tag <center> ainda é válida?

Não. <center> e o atributo align="center" estão obsoletos. Os navegadores ainda os exibem por causa de páginas antigas, mas código novo deve usar text-align: center no CSS.

Como dar recuo a um texto no HTML?

Use CSS. text-indent: 2em recua a primeira linha de um parágrafo, e padding-inline-start: 2em ou margin-inline-start: 2em recua o bloco inteiro. Espaços ou &nbsp; no texto não são um recuo confiável.

Coddy programming languages illustration

Aprenda a programar com o Coddy

COMEÇAR