Menu

Sublinhado no CSS: text-decoration, cor, offset e remoção

Sublinhe texto com text-decoration e depois controle a linha: cor, estilo, espessura e distância do texto. Veja também como tirar o sublinhado dos links e quando não fazer isso.

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

Como sublinhar texto no CSS

text-decoration: underline desenha uma linha embaixo do texto. A linha usa a cor do texto, a menos que você dê outra a ela.

A segunda linha usa o shorthand text-decoration para o tipo, o estilo e a cor da linha, e depois define a espessura e o offset com as próprias propriedades. A especificação também permite a espessura dentro do shorthand, mas o Safari descarta a declaração inteira quando você a inclui, então escreva text-decoration-thickness separado.

As propriedades text-decoration

PropriedadeValoresPadrão
text-decoration-lineunderline, overline, line-through, none (podem ser combinados)none
text-decoration-stylesolid, double, dotted, dashed, wavysolid
text-decoration-colorQualquer corcurrentColor (a cor do texto)
text-decoration-thicknessUm comprimento, uma porcentagem, auto, from-fontauto
text-underline-offsetUm comprimento, uma porcentagem, autoauto

text-decoration é o shorthand das quatro primeiras, mas deixe a espessura fora dele: o Safari ignora uma declaração text-decoration que a contenha. text-underline-offset é separada e precisa ser escrita sozinha.

Estilos, cores e espessura

Mover o sublinhado: text-underline-offset

Por padrão, a linha fica colada nas letras e desvia das partes que descem, como em g, p e y. text-underline-offset a empurra mais para baixo, o que costuma ficar mais limpo em títulos e links:

Os vãos em volta dessas letras vêm de text-decoration-skip-ink: auto, que é o padrão. Defina none para uma linha contínua.

Os links são sublinhados pela folha de estilo do navegador. text-decoration: none remove o sublinhado. Como muitos leitores acham os links pelo sublinhado, traga-o de volta no hover e no foco do teclado, e dê ao link uma cor diferente da do texto:

Barras de navegação e botões são um lugar justo para tirar o sublinhado, porque a posição deles já diz "link". Dentro de um parágrafo de texto, mantenha-o. Mais sobre os estados de link na página de hover.

Overline e line-through

text-decoration-line também desenha uma linha acima do texto ou atravessando-o, e aceita mais de um valor:

.old-price { text-decoration: line-through; }
.both      { text-decoration-line: underline overline; }

O texto riscado pelo CSS é só visual. Quando o texto é um conteúdo apagado (um preço alterado, um item removido), marque-o com <s> ou <del>, como mostra a página de sublinhado no HTML, para que o significado esteja na marcação e não só no estilo.

Erros comuns

  • Usar <u> para sublinhar por estilo. <u> serve para texto marcado como diferente, como erros de ortografia. Para um sublinhado estilizado, use CSS.
  • Sublinhar um texto que não é link. Os leitores vão tentar clicar. Use negrito, cor ou fundo para dar ênfase.
  • Tirar o sublinhado dos links no texto do corpo sem outra pista. Só a cor não basta para quem não enxerga a diferença.
  • Tentar remover o sublinhado do pai em um filho. Ele não pode ser desfeito por dentro; mude o pai ou transforme o filho em inline-block.
  • Esperar text-underline-offset dentro do shorthand. Ela é uma propriedade própria.
  • Colocar a espessura no shorthand. text-decoration: underline 2px funciona no Chrome e no Firefox, mas o Safari descarta a declaração inteira. Use text-decoration-thickness.

Perguntas frequentes

Como sublinhar texto no CSS?

Use text-decoration: underline; no elemento. Para a aparência da linha, acrescente text-decoration-color, text-decoration-style, text-decoration-thickness e text-underline-offset.

Como tirar o sublinhado de um link?

Defina text-decoration: none; no elemento a. Garanta que os links continuem se destacando de outro jeito (cor, mais um sublinhado no hover ou no foco), porque muitos leitores dependem do sublinhado para achar os links.

Como mudar a cor do sublinhado?

Use text-decoration-color ou o shorthand: text-decoration: underline #f59e0b;. Sem isso, a linha usa a cor do texto.

Como afastar o sublinhado do texto?

Use text-underline-offset, por exemplo text-underline-offset: 4px;. Valores maiores descem a linha para mais longe do texto.

Por que não consigo tirar o sublinhado de um elemento filho?

Um sublinhado desenhado pelo pai é pintado por cima dos filhos e não pode ser removido de dentro deles. Remova-o no elemento que o define ou transforme o filho em display: inline-block, que a decoração do pai não alcança.

Coddy programming languages illustration

Aprenda a programar com o Coddy

COMEÇAR