Contagem regressiva até uma data — desce, atualiza a cada segundo.
Mostra dias/horas/minutos/segundos restantes até uma data-alvo. É o irmão do Counter (que SOBE até um número) — este DESCE até uma data.
Um setInterval de 1s recalcula a diferença entre agora e a data-alvo. Formato, separador e rótulos de cada unidade são configuráveis; ao chegar a zero, aplica data-sw-done e opcionalmente troca o texto por sw-ani-complete.
Atualiza a cada segundo, sozinho.
<div sw-ani="countdown" sw-ani-target="2027-01-01T00:00:00">00:00:00:00</div>
<!-- a data vai em formato ISO: AAAA-MM-DDThh:mm:ss -->
<div sw-ani="countdown" sw-ani-target="…" sw-ani-format="dhms">…</div>
<div sw-ani="countdown" sw-ani-target="…" sw-ani-format="hms">…</div>
<div sw-ani="countdown" sw-ani-target="…" sw-ani-format="ms">…</div>
<div sw-ani="countdown"
sw-ani-target="2027-01-01T00:00:00"
sw-ani-separator=" "
sw-ani-labels="dias,horas,min,seg">…</div>
<!-- os 4 rótulos, em ordem: dias, horas, minutos, segundos -->
<!-- separador padrão: ":" -->
A data-alvo aqui é de 2020, então ele já mostra o texto de encerramento — é assim que fica quando a contagem zera.
<div sw-ani="countdown"
sw-ani-target="2026-12-25T00:00:00"
sw-ani-complete="A promoção encerrou!">00:00:00:00</div>
<!-- ao zerar, ele troca o texto E marca o elemento com [data-sw-done] -->
<style>
[data-sw-done] { opacity: .6; text-decoration: line-through; }
</style>
sw-ani-targetsw-ani-formatsw-ani-separatorsw-ani-labelssw-ani-completesw-ani-format="dhms"sw-ani-format="hms"sw-ani-format="ms"[data-sw-done]Nenhum.
Nenhum.
2027-01-01T00:00:00). Sem fuso explícito, vale o fuso do visitante.