Skip to main content
Validação HTML

O elemento “tt” está obsoleto. Use CSS em vez disso.

Sobre este problema HTML

O elemento <tt> era um elemento puramente apresentacional — descrevia como o texto deveria parecer (monoespaçado) em vez de o que o texto significava. O HTML5 removeu-o como parte de um esforço mais amplo para separar conteúdo de apresentação. Os navegadores ainda renderizam <tt> para compatibilidade com versões anteriores, mas os validadores irão sinalizá-lo como obsoleto, e o seu uso é desencorajado em todo o código novo.

A questão principal é que <tt> era usado para muitos propósitos diferentes — mostrar fragmentos de código, entrada de teclado, saída de exemplo, variáveis, nomes de ficheiros, e mais — mas não transmitia nenhum desse significado a tecnologias assistivas ou motores de busca. O HTML5 fornece elementos semânticos dedicados para a maioria destes casos de uso, tornando o seu conteúdo mais significativo e acessível.

Escolher a substituição correta

Antes de recorrer a um <span> genérico, considere o que o texto monoespaçado realmente representa:

  • Código: Use <code> para fragmentos de código inline (por exemplo, nomes de variáveis, declarações curtas).
  • Entrada de teclado: Use <kbd> para texto que o utilizador deve digitar.
  • Saída de exemplo: Use <samp> para saída de um programa ou sistema.
  • Variáveis: Use <var> para variáveis matemáticas ou de programação.
  • Sem significado semântico: Use um <span> com CSS quando o estilo monoespaçado é puramente visual e nenhum dos elementos acima se aplica.

Todos estes elementos são renderizados numa fonte monoespaçada por padrão na maioria dos navegadores (exceto <var>, que é tipicamente itálico). Pode estilizá-los adicionalmente com CSS conforme necessário.

Exemplos

❌ Uso obsoleto com <tt>

<p>Execute o comando <tt>npm install</tt> para instalar dependências.</p>
<p>A variável <tt>x</tt> contém o resultado.</p>
<p>A saída foi <tt>Hello, world!</tt></p>

Todos estes desencadeiam o erro do validador: The “tt” element is obsolete. Use CSS instead.

✅ Corrigido com elementos semânticos

<p>Execute o comando <kbd>npm install</kbd> para instalar dependências.</p>
<p>A variável <var>x</var> contém o resultado.</p>
<p>A saída foi <samp>Hello, world!</samp></p>

Cada substituição transmite o significado do texto. <kbd> informa às tecnologias assistivas que isto é algo que o utilizador digita, <var> marca uma variável, e <samp> indica saída de programa.

✅ Corrigido com <code> para código inline

<p>Use o método <code>Array.prototype.map()</code> para transformar cada elemento.</p>

✅ Corrigido com <span> e CSS quando nenhum elemento semântico se adequa

Se o texto monoespaçado não representa código, entrada, saída, ou uma variável — por exemplo, uma escolha estilística para um nome de ficheiro ou uma decisão de design arbitrária — use um <span> com CSS:

<p>Edite o ficheiro <span class="mono">config.yaml</span> para alterar as definições.</p>
.mono {
  font-family: monospace;
}

Isto mantém o seu HTML válido e o seu estilo na camada CSS onde pertence.

✅ Código em bloco com <pre> e <code>

Se anteriormente usou <tt> dentro de um bloco <pre> para código de múltiplas linhas, a abordagem padrão é combinar <pre> com <code>:

<pre><code>function greet(name) {
  return "Hello, " + name;
}</code></pre>

Resumo

Substitua todos os elementos <tt> pelo elemento HTML semântico que melhor descreva o seu conteúdo — <code>, <kbd>, <samp>, ou <var>. Se nenhum destes se adequar, use um <span> estilizado com font-family: monospace no CSS. Isto mantém a sua marcação válida, significativa e acessível.

Encontre problemas como este automaticamente

O Rocket Validator analisa milhares de páginas em segundos, detetando problemas HTML em todo o seu site.

Ajude-nos a melhorar os nossos guias

Este guia foi útil?

Pronto para validar os seus sites?
Comece o seu teste gratuito hoje.