Tooltip Componentes
Balãozinho com uma explicação curta que aparece ao passar o mouse (ou focar com o teclado) em um botão, ícone ou palavra. <button sw-tooltip='Copiar link'>.
O que é
Sabe quando você passa o mouse num ícone e aparece um balão dizendo o que ele faz? É o tooltip. Você escreve o texto dentro do atributo sw-tooltip de qualquer elemento — botão, ícone, link, palavra — e pronto. Com outros atributos você escolhe o lado em que o balão abre, a cor, a demora para aparecer, se ele segue o mouse e se aceita negrito e quebra de linha.
O JavaScript do núcleo usa um único balão para a página toda e o posiciona perto do elemento quando o mouse entra (ou quando o elemento recebe foco pelo Tab). Se não couber do lado pedido (perto da borda da tela), ele abre do lado oposto sozinho. Sem cor escolhida, o balão acompanha o tema: escuro no tema claro, claro no tema escuro. Ele lê o texto na hora de aparecer, então se você trocar o valor de sw-tooltip por JavaScript, o balão já mostra o novo.
Quando usar
- Botões só com ícone (editar, excluir, copiar): o balão diz o que o ícone faz.
- Explicar um termo num formulário ou tabela: "CNPJ", "Frete grátis acima de R$ 199".
- Mostrar o valor completo de algo cortado com reticências.
- Não use para informação essencial: no celular não existe "passar o mouse". Coloque o que é importante no texto da página.
Comece aqui
-
1
Coloque o SWCore na página: CSS no
<head>e JS no fim do<body>. O tooltip precisa dos dois.<link rel="stylesheet" href="https://swcore.sanweb.com.br/dist/2.1.0/swcore.min.css"> <!-- fim do <body> --> <script src="https://swcore.sanweb.com.br/dist/2.1.0/swcore.min.js"></script> -
2
Coloque o texto em
sw-tooltip. Passe o mouse no botão.<button type="button" sw-btn="out" sw-tooltip="Enviamos para todo o Brasil">Frete</button>
Todas as variações
Cada quadro abaixo é o componente de verdade, rodando. O código embaixo é exatamente o que está no quadro: copie e cole.
1. Lado em que abre
sw-tooltip-pos escolhe o lado. Padrão: em cima. Aceita a forma curta (top, bot, lft, rgt), a curtíssima (t, b, l, r) ou em inglês (bottom, left, right). auto escolhe o primeiro lado com espaço.
<button type="button" sw-btn="out" sw-tooltip="Abre em cima">Em cima</button>
<button type="button" sw-btn="out" sw-tooltip="Abre embaixo" sw-tooltip-pos="bot">Embaixo</button>
<button type="button" sw-btn="out" sw-tooltip="Abre à esquerda" sw-tooltip-pos="lft">Esquerda</button>
<button type="button" sw-btn="out" sw-tooltip="Abre à direita" sw-tooltip-pos="rgt">Direita</button>
<button type="button" sw-btn="out" sw-tooltip="Escolhi o lado sozinho" sw-tooltip-pos="auto">Automático</button>
2. Cores
Sem cor, o balão acompanha o tema da página. sw-tooltip-clr aceita as cores do SWCore (pri sec suc ale err inf) ou qualquer cor sua (#7c3aed, rgb(…), var(--minha-cor)) — a cor sua vem com texto branco.
<button type="button" sw-btn sw-tooltip="Cor do tema">Padrão</button>
<button type="button" sw-btn sw-tooltip="Cor primária" sw-tooltip-clr="pri">pri</button>
<button type="button" sw-btn sw-tooltip="Cor secundária" sw-tooltip-clr="sec">sec</button>
<button type="button" sw-btn sw-tooltip="Pagamento aprovado" sw-tooltip-clr="suc">suc</button>
<button type="button" sw-btn sw-tooltip="Estoque baixo" sw-tooltip-clr="ale">ale</button>
<button type="button" sw-btn sw-tooltip="Não dá para desfazer" sw-tooltip-clr="err">err</button>
<button type="button" sw-btn sw-tooltip="Atualizado há 5 min" sw-tooltip-clr="inf">inf</button>
<button type="button" sw-btn sw-tooltip="Roxo da marca" sw-tooltip-clr="#7c3aed">#7c3aed</button>
3. Sempre claro ou sempre escuro
sw-tooltip-thm fixa o balão claro ou escuro, não importa o tema da página. Claro: dia (ou claro, light, lgt). Escuro: noite (ou escuro, dark, drk).
<button type="button" sw-btn sw-tooltip="Sempre claro" sw-tooltip-thm="dia">Claro</button>
<button type="button" sw-btn sw-tooltip="Sempre escuro" sw-tooltip-thm="noite">Escuro</button>
4. Comportamento
sw-tooltip-delay é a espera antes de aparecer, em milissegundos (padrão 250). sw-tooltip-follow="true" faz o balão andar junto com o mouse. sw-tooltip-html="true" aceita HTML no texto (negrito, quebra de linha).
<button type="button" sw-btn sw-tooltip="Apareci na hora" sw-tooltip-delay="0">Na hora</button>
<button type="button" sw-btn sw-tooltip="Esperei quase 1 segundo" sw-tooltip-delay="900">Com calma</button>
<button type="button" sw-btn="p" sw-tooltip="Estou te seguindo" sw-tooltip-follow="true">Mexa o mouse aqui dentro</button>
<button type="button" sw-btn sw-tooltip="<b>
Plano Pro
</b>
<br>
R$ 49/mês" sw-tooltip-html="true">Plano Pro
</button>
5. Em qualquer elemento
Não precisa ser botão: ícone, link, palavra no meio do texto, imagem. Se o elemento não recebe foco sozinho (ícone, <span>), acrescente tabindex="0" para quem navega pelo teclado.
<button type="button" sw-btn="ghost rnd" sw-tooltip="Copiar link" aria-label="Copiar link">
<i class="swi-copy"></i>
</button>
<span>CNPJ <i class="swi-info-circle" tabindex="0" sw-tooltip="Só números, 14 dígitos"></i></span>
Envio expresso para BH.
<p>Envio <abbr sw-tooltip="Pedidos até 14h saem no mesmo dia" tabindex="0">expresso</abbr> para BH.</p>
<a href="#" sw-tooltip="Abre o WhatsApp" sw-tooltip-pos="bot">(31) 99999-0000</a>
Tabela de opções
| Palavra | O que faz | Exemplo |
|---|---|---|
| Texto | ||
sw-tooltip | O texto do balão. É ele que liga o componente. | sw-tooltip="Copiar link" |
sw-tooltip-html | true: o texto é lido como HTML (<b>, <br>…). | sw-tooltip-html="true" |
| Lado — sw-tooltip-pos | ||
top / t | Em cima. Padrão. | sw-tooltip-pos="top" |
bot / b / bottom | Embaixo. | sw-tooltip-pos="bot" |
lft / l / left | À esquerda. | sw-tooltip-pos="lft" |
rgt / r / right | À direita. | sw-tooltip-pos="rgt" |
auto | O primeiro lado com espaço (em cima, embaixo, direita, esquerda). | sw-tooltip-pos="auto" |
| Cor — sw-tooltip-clr | ||
(nenhuma) | Acompanha o tema (escuro no dia, claro à noite). | |
pri sec suc ale err inf | Cores do SWCore. | sw-tooltip-clr="suc" |
qualquer cor | Hex, rgb ou variável CSS; texto branco. | sw-tooltip-clr="#7c3aed" |
| Tema fixo — sw-tooltip-thm | ||
dia / claro / light / lgt | Sempre claro. | sw-tooltip-thm="dia" |
noite / escuro / dark / drk | Sempre escuro. | sw-tooltip-thm="noite" |
| Comportamento | ||
sw-tooltip-delay | Espera antes de aparecer, em ms. Padrão 250. 0 = aparece na hora. | sw-tooltip-delay="600" |
sw-tooltip-follow | true: o balão segue o mouse. | sw-tooltip-follow="true" |
Receitas prontas — usos reais
Situações que aparecem em quase todo site. Copie a que servir.
<button type="button" sw-btn="ghost rnd" sw-tooltip="Editar pedido" aria-label="Editar pedido"><i class="swi-edit"></i></button>
<button type="button" sw-btn="ghost rnd" sw-tooltip="Enviar por WhatsApp" aria-label="Enviar por WhatsApp"><i class="swil-whatsapp"></i></button>
<button type="button" sw-btn="ghost err rnd" sw-tooltip="Cancelar pedido" sw-tooltip-clr="err" aria-label="Cancelar pedido"><i class="swi-trash"></i></button>
<div sw-fld>
<label for="pix">
Chave Pix
<i class="swi-info-circle" tabindex="0" sw-tooltip="Pode ser CPF, e-mail, telefone ou chave aleatória" sw-tooltip-pos="rgt"></i>
</label>
<input sw-inp id="pix" name="pix">
</div>
<button type="button" sw-btn="out" id="cupom" sw-tooltip="Copiar cupom" sw-tooltip-delay="1">VOLTA10</button>
<script>
const cupom = document.getElementById('cupom');
cupom.addEventListener('click', () => {
navigator.clipboard.writeText('VOLTA10');
cupom.setAttribute('sw-tooltip', 'Copiado!'); // o balão lê o texto novo
setTimeout(() => cupom.setAttribute('sw-tooltip', 'Copiar cupom'), 1500);
});
</script>
const icone = document.querySelector('#status');
SW.Tooltip.create(icone, { text: 'Loja aberta', pos: 'bot', color: 'suc', delay: 100 });
API (JavaScript)
SW.Tooltip.create(el, { text, pos, color, html, delay })SW.Tooltip.update(el, texto)el.setAttribute("sw-tooltip", "novo") — o balão lê o texto na hora de aparecer.SW.Tooltip.destroy(el)sw-tooltip, fecha o balão se estiver aberto e para de reagir ao mouse/foco. Para ligar de novo, use SW.Tooltip.create.SW.Tooltip.initAll(raiz)[sw-tooltip] dentro de raiz. O núcleo já faz sozinho.Precisa de quê
swcore.min.css+swcore.min.js.swcore.compl.min.css— só se usar íconesswi-*.
Cuidados — erros comuns
- Usar
title="…"junto comsw-tooltip: aparecem dois balões (o do navegador e o do SWCore). Use sósw-tooltip. - Botão só com ícone: o tooltip ajuda quem vê, mas quem usa leitor de tela precisa de
aria-labeltambém. - Com
sw-tooltip-html="true", nunca coloque texto digitado por visitantes (nome, comentário): o HTML é mostrado como está. Use HTML só em texto seu. - Tooltip em
<button disabled>não aparece (botão desativado não recebe o mouse). Envolva o botão num<span sw-tooltip>. - Texto comprido: o balão tem no máximo 240 px de largura e quebra linha. Para textos longos, use um Popover.
O que ele não faz
- Só aparece com mouse ou foco de teclado — em toque de celular não é garantido.
- Um balão por vez na página (o último que recebeu o mouse).
- Não tem clique para fixar aberto, nem botão de fechar.

