Hover Target
Generated CSS

Tooltips CSS — Referência Completa

Um tooltip CSS mostra informações suplementares quando o usuário passa o mouse sobre ou foca em um elemento — sem necessidade de JavaScript. A abordagem padrão usa position: absolute em um pseudo-elemento ::before, oculto por padrão com opacity: 0; visibility: hidden e revelado em :hover e :focus-visible.

A técnica principal de esconder e mostrar

O desafio fundamental com a visibilidade do tooltip é que display: none não pode ser transicionado. A solução é usar opacity e visibility juntos. A opacidade transiciona de 0 para 1 suavemente. A visibilidade distingue entre oculto (não interativo) e visível, e aceita um atraso de transição.

Posicionando o tooltip

O elemento de acionamento precisa de position: relative para que o tooltip absolutamente posicionado seja contido em seu sistema de coordenadas. Para um tooltip acima do acionador, bottom: calc(100% + 10px) o coloca 10px acima da borda superior. A centralização é tratada com left: 50%; transform: translateX(-50%).

O efeito de entrada deslizante

Adicionar um pequeno deslizamento direcional ao aparecimento do tooltip o torna mais responsivo e polido. A técnica é dar ao tooltip um pequeno offset no estado oculto e transicioná-lo para a posição final no estado visível.

Lendo o atributo data para o texto do tooltip

A implementação mais fácil de manter usa CSS para ler o conteúdo do tooltip diretamente de um atributo HTML via declaração content: attr(data-tooltip) no pseudo-elemento. Você define data-tooltip="Seu texto de dica" no elemento de acionamento no HTML.

Adicionando um atraso de exibição

Tooltips que aparecem instantaneamente ao passar o mouse podem ser irritantes. Adicionar um atraso de 300-500ms antes de mostrar previne que tooltips pisquem quando o cursor se move pela interface.

Acessibilidade de teclado

Um tooltip apenas de hover é inacessível para usuários de teclado. A correção é incluir :focus-visible junto com :hover em cada seletor que mostra o tooltip. Usuários de leitor de tela se beneficiam do texto do tooltip estar disponível como descrição acessível via aria-describedby.

Problemas de overflow e z-index

O bug de tooltip mais comum é o tooltip ser recortado por um elemento pai com overflow: hidden. As soluções são: remover o overflow:hidden do ancestral se não for necessário, ou mover o tooltip para fora do ancestral problemático usando posicionamento JavaScript.

Tooltip vs Popover — quando usar qual

Tooltips são a escolha certa para texto suplementar curto que reafirma ou clarifica o que um elemento de interface faz. Não são a escolha certa para informações essenciais, conteúdo interativo ou explicações longas. Quando o conteúdo é mais rico do que uma única frase curta, um popover é o padrão apropriado.

Por que usar opacity e visibility em vez de display:none?

display: none remove o elemento da árvore de renderização instantaneamente e não pode ser transicionado. opacity: 0 torna o elemento invisível mas o mantém no layout, e transiciona suavemente. visibility: hidden torna o elemento não interativo enquanto o mantém no layout.

Como torno o texto do tooltip dinâmico?

Use content: attr(data-tooltip) no CSS do pseudo-elemento e adicione data-tooltip="Seu texto aqui" a cada elemento de acionamento no HTML.

Tooltips CSS podem funcionar em dispositivos móveis touch?

Não de forma confiável. Dispositivos touch não têm estado hover. Para tooltips amigáveis ao touch, use uma abordagem de alternância ao toque com JavaScript, ou use o atributo nativo popover.

Meu tooltip está cortado por um pai com overflow:hidden — como corrijo?

A correção mais limpa apenas em CSS é remover overflow: hidden do ancestral se não for necessário. Se o overflow é necessário para o layout, mova o tooltip para fora do limite de overflow usando JavaScript para posicioná-lo adicionando-o ao corpo do documento.

Quais atributos ARIA um tooltip precisa?

O elemento tooltip deve ter role="tooltip" e um id. O elemento de acionamento deve ter aria-describedby apontando para o id do tooltip.

Como adiciono um atraso antes que o tooltip apareça?

Adicione um valor de transition-delay correspondente às transições de opacidade e visibilidade apenas na direção oculto para visível. Use 300-500ms para a direção de mostrar, e sem atraso para a direção de ocultar.

Tool last updated: