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
| Valor | Exemplo | Altura da linha para texto de 16px | Herdado pelos filhos como |
|---|---|---|---|
| Número | 1.5 | 24px | O número (1.5), recalculado em cada elemento |
| Comprimento | 24px, 1.5em, 1.5rem | 24px | O comprimento calculado (24px) |
| Porcentagem | 150% | 24px | O comprimento calculado (24px) |
normal | normal | Vem da fonte, muitas vezes perto de 1.2 | normal |
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
emou%em um contêiner. Os filhos herdam um comprimento fixo. Use um número sem unidade. heightfixo 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: 1torna os parágrafos difíceis de ler. Comece em 1.5. - Esperar que o
line-heightcrie espaço entre parágrafos. Isso émarginnos 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.