Como sublinhar texto no HTML
Existem dois jeitos: a tag <u> ou a propriedade CSS text-decoration: underline. Os dois desenham a mesma linha:
O problema de qualquer sublinhado é a terceira linha: o leitor espera que um texto sublinhado seja um link, e clica. Sublinhe texto comum só quando houver um motivo claro.
O que a tag u significa
<u> não é um botão genérico de "sublinhar". No HTML atual ela significa texto com uma anotação não articulada: uma marca que diz "tem algo especial aqui" sem dizer o quê. Os usos reais mais comuns:
- marcar um erro de ortografia (como faz um editor de texto, muitas vezes com uma linha vermelha ondulada),
- marcar nomes próprios num texto em chinês, que é uma convenção tipográfica de lá.
Para ênfase use <em> ou <strong> (veja negrito), e para títulos de livros use <cite>. Se você só quer a aparência, use CSS.
Tachado: s e del
O HTML tem duas tags que desenham uma linha sobre o texto, e elas significam coisas diferentes:
| Tag | Significado | Uso típico |
|---|---|---|
<s> | Não está mais correto ou relevante, fica para dar contexto | Preço antigo, tipo de ingresso esgotado |
<del> | Removido do documento | Edições, changelogs, itens concluídos numa lista de tarefas |
Marcando edições com ins e del
<ins> é o par de <del>: ele marca um texto que foi adicionado. Os navegadores o sublinham por padrão. Os dois aceitam datetime (quando a mudança aconteceu) e cite (uma URL que a explica):
Esse estilo vermelho e verde é a aparência conhecida de um diff. text-decoration: none em ins remove o sublinhado padrão para que ele não pareça um link.
Sublinhado e tachado com CSS
text-decoration cuida da parte visual em qualquer elemento: aceita uma cor e um estilo, e text-decoration-thickness define a espessura. Para linhas só decorativas, essa é a ferramenta certa:
Como tirar o sublinhado dos links, o deslocamento do sublinhado e os outros detalhes de text-decoration estão na página de sublinhado no CSS.
Acessibilidade
O suporte dos leitores de tela a <s>, <del> e <ins> é inconsistente: alguns os anunciam como apagado ou inserido, muitos os leem como texto normal, então quem escuta pode ouvir "Preço 49 dólares 29 dólares" sem nenhuma pista de qual é o atual. Quando a diferença importa, diga também em palavras, por exemplo com um texto visualmente oculto mas lido em voz alta, ou simplesmente "Era 29".
Erros comuns
- Sublinhar um texto que não é link. O leitor vai tentar clicar. Para destacar, use negrito, cor ou fundo.
- Usar
<u>para dar ênfase. Use<em>ou<strong>. - Usar
<strike>. Está obsoleta. Use<s>,<del>outext-decoration: line-through. - Usar
<s>para conteúdo apagado no histórico de um documento. Isso é<del>, que também pode registrar quando aconteceu. - Confiar só na linha para passar o significado. Muitos leitores de tela não a anunciam.
Perguntas frequentes
Como sublinhar um texto no HTML?
Envolva o texto em <u>, ou aplique text-decoration: underline no CSS. Use <u> só pelo seu significado específico (como marcar uma palavra com erro de ortografia); para um sublinhado apenas visual, use CSS num <span> ou no próprio elemento.
Como riscar um texto no HTML?
Use <s> para um texto que não está mais correto, como um preço antigo, e <del> para um texto removido numa edição. As duas desenham uma linha sobre o texto. No CSS, text-decoration: line-through faz o mesmo visualmente.
A tag <u> está obsoleta?
Não. <u> foi descontinuada no HTML 4, mas voltou no HTML5 com um novo significado: texto com uma anotação não textual, como um erro de ortografia ou um nome próprio num texto em chinês. Ela é válida, só raramente é a escolha certa.
O que aconteceu com a tag <strike>?
<strike> está obsoleta. Os navegadores ainda desenham a linha, mas não é HTML válido. Use <s> ou <del> conforme o significado, ou text-decoration: line-through.
Qual a diferença entre <s> e <del>?
<s> marca um texto que não é mais relevante ou correto, mas fica ali para dar contexto, como um preço riscado. <del> marca um texto que foi apagado do documento, muitas vezes ao lado de um <ins> mostrando o que entrou no lugar, e pode ter os atributos datetime e cite.