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
| Propriedade | Valores | Padrão |
|---|---|---|
text-decoration-line | underline, overline, line-through, none (podem ser combinados) | none |
text-decoration-style | solid, double, dotted, dashed, wavy | solid |
text-decoration-color | Qualquer cor | currentColor (a cor do texto) |
text-decoration-thickness | Um comprimento, uma porcentagem, auto, from-font | auto |
text-underline-offset | Um comprimento, uma porcentagem, auto | auto |
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.
Tirar o sublinhado dos links
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-offsetdentro do shorthand. Ela é uma propriedade própria. - Colocar a espessura no shorthand.
text-decoration: underline 2pxfunciona no Chrome e no Firefox, mas o Safari descarta a declaração inteira. Usetext-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.