Countdown Animações
Contagem regressiva até uma data — "faltam 12d 04h 33m 10s" — atualizando a cada segundo. sw-ani="countdown".
O que é
Mostra quanto tempo falta até uma data e hora: o lançamento, o fim da promoção, o dia do evento. Atualiza sozinho a cada segundo. Você escolhe quais partes aparecem (dias, horas, minutos, segundos), o que vai entre elas e o nome de cada uma. Quando chega a zero, pode trocar por uma frase ("A promoção encerrou!").
Você informa a data-alvo em sw-ani-target, no formato AAAA-MM-DDThh:mm:ss. O texto que você escrever dentro do elemento aparece só até o SW Core assumir (e fica para quem não tem JavaScript). O resultado padrão é assim: 98d:04h:05m:06s — cada número com a sua letra, separados por dois-pontos. Os dias só aparecem enquanto faltar pelo menos 1 dia.
Quando usar
- Promoção com prazo (Black Friday, cupom que expira): cria urgência.
- Lançamento de produto, curso ou site: "abre em…".
- Evento (casamento, show, formatura): "faltam X dias".
- Para número que sobe até um valor ("+15.000 clientes"), o componente é o Counter.
Comece aqui
-
1
Coloque o SW Core e o pacote de animação (o
swcore.motion.min.jsvem antes doswcore.min.js).<!-- no <head> --> <link rel="stylesheet" href="swcore/swcore.min.css"> <link rel="stylesheet" href="swcore/swcore.motion.min.css"> <!-- no fim do <body>: o motion ANTES do swcore --> <script src="swcore/swcore.motion.min.js"></script> <script src="swcore/swcore.min.js"></script> -
2
Coloque
sw-ani="countdown"e a data. Ele já começa a contar.contando…<span sw-ani="countdown" sw-ani-target="2027-01-01T00:00:00">contando…</span> -
3
Mais legível: espaço entre as partes e nomes por extenso.
contando…<span sw-ani="countdown" sw-ani-target="2027-01-01T00:00:00" sw-ani-separator=" · " sw-ani-labels=" dias, h, min, s">contando…</span>
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. Quais partes aparecem (sw-ani-format)
Letras juntas: d dias, h horas, m minutos, s segundos. Padrão dhms. A parte que você tira soma na próxima que aparece: com 2 dias faltando, hms mostra 48h e pouco; ms mostra o total em minutos.
<span sw-ani="countdown" sw-ani-target="2027-01-01T00:00:00">contando…</span>
<span sw-ani="countdown" sw-ani-target="2027-01-01T00:00:00" sw-ani-format="dhm">contando…</span>
<span sw-ani="countdown" sw-ani-target="2027-01-01T00:00:00" sw-ani-format="d">contando…</span>
<span sw-ani="countdown" sw-ani-target="2027-01-01T00:00:00" sw-ani-format="hms">contando…</span>
<span sw-ani="countdown" sw-ani-target="2027-01-01T00:00:00" sw-ani-format="ms">contando…</span>
2. Separador e nomes (sw-ani-separator, sw-ani-labels)
O separador é o que vai entre as partes (padrão :). Os nomes são 4, separados por vírgula, na ordem dias, horas, minutos, segundos (padrão d,h,m,s). O espaço conta: " dias" sai "98 dias". Nome vazio tira o nome daquela parte: ",,," mostra só os números.
<span sw-ani="countdown" sw-ani-target="2027-01-01T00:00:00">contando…</span>
<span sw-ani="countdown" sw-ani-target="2027-01-01T00:00:00" sw-ani-separator=" ">contando…</span>
<span sw-ani="countdown" sw-ani-target="2027-01-01T00:00:00" sw-ani-separator=" · " sw-ani-labels=" dias, horas, min, seg">contando…</span>
<span sw-ani="countdown" sw-ani-target="2027-01-01T00:00:00" sw-ani-separator=" " sw-ani-labels="d,h,m,s">contando…</span>
3. Quando chega a zero (sw-ani-complete)
Estes quadros usam uma data que já passou (2020), para você ver como fica no fim. Com sw-ani-complete a contagem vira a sua frase. O elemento também ganha o atributo data-sw-done, que você pode usar no CSS.
<span sw-ani="countdown" sw-ani-target="2020-01-01T00:00:00">contando…</span>
<span sw-ani="countdown" sw-ani-target="2020-01-01T00:00:00"
sw-ani-complete="A promoção encerrou!">contando…</span>
Tabela de opções
| Palavra | O que faz | Exemplo |
|---|---|---|
| Ligar e data | ||
sw-ani="countdown" | Liga a contagem regressiva. | <span sw-ani="countdown" …> |
sw-ani-target | Data e hora-alvo, formato AAAA-MM-DDThh:mm:ss. Obrigatório. Aceita fuso no fim (ex.: -03:00). | sw-ani-target="2026-11-27T23:59:59-03:00" |
| Formato | ||
sw-ani-format | Quais partes: letras d h m s juntas. Padrão: dhms. | sw-ani-format="dhm" |
sw-ani-separator | O que vai entre as partes. Padrão: :. | sw-ani-separator=" " |
sw-ani-labels | Os 4 nomes (dias, horas, minutos, segundos), separados por vírgula. Padrão: d,h,m,s. Nome vazio = sem nome. | sw-ani-labels=" dias, horas, min, seg" |
sw-ani-complete | Frase que substitui a contagem quando chega a zero. | sw-ani-complete="Inscrições encerradas" |
| O que ele escreve no elemento | ||
data-sw-done | Aparece quando a contagem zera. Use no seu CSS para mudar o visual. | [data-sw-done] { opacity: .6; } |
Receitas prontas — usos reais
Situações que aparecem em quase todo site. Copie a que servir.
<div class="bg-g-err p-3 flx alc j-ct gap-3 f-wr">
<strong>BLACK FRIDAY — 40% OFF</strong>
<span>termina em</span>
<span sw-ani="countdown" sw-ani-target="2026-11-27T23:59:59-03:00"
sw-ani-separator=" " sw-ani-complete="Promoção encerrada">…</span>
</div>
Seu cupom BEMVINDO10 vale por
15m 00s<span id="cupom" sw-ani="countdown" sw-ani-format="ms" sw-ani-separator=" "
sw-ani-complete="Cupom expirado">15m 00s</span>
<script>
// a data-alvo é "agora + 15 minutos" — o script vem ANTES do swcore.motion.min.js
document.getElementById('cupom')
.setAttribute('sw-ani-target', new Date(Date.now() + 15 * 60 * 1000).toISOString());
</script>
Festival de Inverno começa em
…<style>
.cd-evento[data-sw-done] { opacity: .55; text-decoration: line-through; }
</style>
<span sw-ani="countdown" sw-ani-target="2027-06-20T19:00:00-03:00"
sw-ani-format="dhm" sw-ani-separator=" "
sw-ani-labels=" dias, horas, minutos, s" class="cd-evento">…</span>
API (JavaScript)
SWMotion.refresh()Precisa de quê
swcore.motion.min.js(já traz o GSAP) eswcore.motion.min.css, antes doswcore.min.js.
Cuidados — erros comuns
- Data em formato brasileiro (
27/11/2026) não é entendida: o console avisa "data-sw-target inválido". Use2026-11-27T23:59:59. - Sem fuso no fim da data, vale o horário do computador de quem visita. Para uma promoção que acaba às 23:59 de Brasília para todo mundo, acrescente
-03:00.
O que ele não faz
- A conta usa o relógio do aparelho de quem visita. Relógio errado = contagem errada. Em promoção séria, confira o prazo também no servidor.
- Não dispara evento JavaScript quando zera. Para reagir ao fim, use a frase (
sw-ani-complete) ou o atributodata-sw-doneno CSS.

