Menu

Line-height CSS: espaçamento entre linhas com exemplos

line-height define a altura de cada linha de texto e, com isso, o espaço entre as linhas. Veja por que um número sem unidade é o padrão certo, como valores em px, em e % são herdados de forma diferente e bons valores para texto e títulos.

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

O que o line-height faz

line-height define a altura de cada linha de texto. A diferença entre essa altura e a altura de que a fonte precisa é dividida ao meio e somada acima e abaixo das letras, então é com ele que você controla o espaço entre as linhas.

Os três parágrafos usam fonte de 16px. As linhas têm 16px, 24px e 32px de altura.

Valores: sem unidade, comprimento, porcentagem, normal

ValorExemploAltura da linha para texto de 16pxHerdado pelos filhos como
Número1.524pxO número (1.5), recalculado em cada elemento
Comprimento24px, 1.5em, 1.5rem24pxO comprimento calculado (24px)
Porcentagem150%24pxO comprimento calculado (24px)
normalnormalVem da fonte, muitas vezes perto de 1.2normal

A primeira e a segunda linhas parecem iguais em um elemento só. A diferença só aparece quando um filho tem outro tamanho de fonte, que é o assunto da próxima seção.

Por que sem unidade é o padrão certo

Um line-height 1.5em ou 150% é convertido em pixels no pai, e os filhos herdam esses pixels. Um filho com fonte maior recebe então linhas mais baixas que as próprias letras. Um 1.5 sem unidade é herdado como o próprio número e multiplicado pelo tamanho de fonte de cada filho.

Os dois títulos quebram em duas linhas. O primeiro herda linhas de 21px para letras de 32px, então as linhas se sobrepõem. O segundo recebe linhas de 32 × 1.5 = 48px. Defina line-height uma vez no body como número e a maioria das páginas nunca mais vai precisar mexer nisso.

Teste valores você mesmo

Experimente 1, 2, 30px, 200% e normal. O Chrome informa normal como a própria palavra, e não como um valor em pixels, porque o tamanho vem da fonte.

Bons valores para um texto legível

  • Texto do corpo: de 1.4 a 1.6. Linhas mais longas precisam de mais altura para o olho achar o começo da linha seguinte.
  • Títulos: de 1.1 a 1.3. Texto grande com espaçamento 1.5 parece um monte de linhas separadas, e não um título só.
  • Botões e rótulos de uma linha: de 1 a 1.25, com padding para a altura.

Em acessibilidade, o critério de sucesso 1.4.12 da WCAG exige que a página continue funcionando quando o leitor define a altura da linha em 1.5 vez o tamanho da fonte, então evite alturas fixas em caixas de texto que cortariam o conteúdo.

Centralizar uma linha de texto na vertical

Quando uma caixa tem exatamente uma linha, um line-height igual à altura da caixa coloca o texto no meio vertical, porque o espaço extra é dividido igualmente acima e abaixo:

Isso quebra assim que o texto passa para duas linhas, porque cada linha fica com 40px de altura. Para qualquer coisa que possa quebrar linha, centralize com flexbox, como mostra a página de como centralizar uma div.

O shorthand font

O shorthand font define o tamanho e a altura da linha juntos, com uma barra:

body {
  font: 16px/1.5 system-ui, sans-serif; /* size 16px, line-height 1.5 */
}

O shorthand redefine toda propriedade de fonte que ele não menciona (incluindo line-height para normal quando você deixa de fora a parte da barra), então escreva-o antes de qualquer regra font-* individual.

Erros comuns

  • Usar em ou % em um contêiner. Os filhos herdam um comprimento fixo. Use um número sem unidade.
  • height fixo em uma caixa de texto. Quando o texto quebra ou o leitor aumenta o espaçamento, ele transborda. Deixe o conteúdo definir a altura.
  • Texto do corpo apertado demais. line-height: 1 torna os parágrafos difíceis de ler. Comece em 1.5.
  • Esperar que o line-height crie espaço entre parágrafos. Isso é margin nos parágrafos.
  • Depender de normal. Ele muda de fonte para fonte, então o layout se mexe quando a fonte muda.

Perguntas frequentes

O que o line-height faz no CSS?

Ele define a altura de cada caixa de linha do texto. O espaço extra além da altura da própria fonte é dividido igualmente acima e abaixo das letras, então um line-height maior significa mais espaço entre as linhas.

O line-height deve ter unidade?

Normalmente não. Um valor sem unidade como 1.5 é multiplicado pelo tamanho de fonte de cada elemento, então continua proporcional em filhos com outro tamanho. Um valor com unidade é calculado uma vez e herdado como um comprimento fixo.

Qual é um bom line-height para o texto do corpo?

Entre 1.4 e 1.6 para parágrafos, e algo entre 1.1 e 1.3 para títulos grandes. A orientação AAA da WCAG pede pelo menos 1.5 em parágrafos.

O que é line-height: normal?

É o padrão. O navegador usa um valor das métricas da própria fonte, normalmente perto de 1.2, mas diferente para cada fonte, então não é previsível entre fontes.

Como mudar o espaçamento entre linhas no HTML?

O HTML não tem atributo de espaçamento entre linhas. Use a propriedade CSS, por exemplo <p style="line-height: 2;"> para espaçamento duplo.

Coddy programming languages illustration

Aprenda a programar com o Coddy

COMEÇAR