Dia Internacional Das Mulheres Contagem Regressiva - dia internacional das mulheres | Genially
dia internacional das mulheres | Genially

Como fazer uma contagem regressiva para o dia 8 de março

A maioria dos sites que oferecem contagens regressivas prontas para o Dia Internacional das Mulheres são genéricos e cheios de animações que travam em celular. Se você quer algo que funcione de verdade, é mais fácil montar com HTML, CSS e JavaScript puro. Leva cerca de 15 minutos se você já tiver um ambiente de hospedagem configurado. Vou explicar o processo do jeito que eu uso na prática, incluindo o problema que apareceu quando implementei isso no site da nossa empresa no ano passado.

dia internacional das mulheres contagem regressiva

O código básico precisa de três coisas: o marcador visual com os dias, horas, minutos e segundos, o cálculo da data-alvo (8 de março do ano corrente) e a lógica que atualiza o display a cada segundo. A data-alvo é fixa, então você não precisa lidar com fusos horários complicados desde que o servidor e os visitantes estejam no mesmo fuso ou você padronize para UTC-3. Aqui está a estrutura essencial:

Crie um arquivo index.html com um container para os números e outro para os rótulos. Dentro dele, coloque quatro spans para dias, horas, minutos e segundos, cada um com uma classe específica. No CSS, use flexbox para alinhar tudo e um fonte monoespaçada para evitar que os números tremam quando trocam de valor. Isso resolve o problema do layout quebra quando o dígito muda de dois para um número. No JavaScript, a função principal calcula a diferença entre Date.now() e a data do próximo 8 de março. Se hoje já passou do dia 8, o próximo 8 de março é do ano seguinte. Um erro comum é esquecer essa lógica e ter o contador zerando ou indo negativo em 9 de março.

function atualizarContagem() {
  const agora = new Date();
  const alvo = new Date(agora.getFullYear(), 2, 8);
  if (agora > alvo) alvo.setFullYear(agora.getFullYear() + 1);
  const diff = alvo - agora;
  // aqui você extrai dias, horas, minutos, segundos
}

Chame essa função setInterval a cada 1000 milissegundos. Use requestAnimationFrame só se precisar de animações visuais paralelas, senão setInterval basta e consome menos recurso. O problema real que eu enfrentei foi quando testei a página em um navegador desatualizado no Windows 10. O getMonth() com valor 2 às vezes retornava datas inconsistENTES porque eu estava passando o mês como string ao invés de inteiro. A correção foi simples: garantir que todos os valores de data fossem passados como números, sem conversão implícita. Também adicionei um fallback que verifica se o resultado de diff é negativo e força a atualização para o ano seguinte caso o usuário abra a página após a data.

👉 Clique no botão abaixo para saber mais sobre o assunto!

Outro detalhe que poucos mencionam: se você quer exibir a contagem em diferentes fusos horário, não confie no fuso do navegador do usuário. Defina o fuso no próprio código usando Intl.DateTimeFormat ou simplesmente calcule tudo em UTC e converta para UTC-3 manualmente. Navegadores às vezes detectam mal o fuso quando o usuário tem múltiplos relógios configurados no sistema operacional. Para hospedar, qualquer serviço gratuito como GitHub Pages, Netlify ou Vercel funciona. O custo é zero se o tráfego for moderado. Se esperar muito volume, como aconteceu conosco com 40 mil acessos em dois dias no ano passado, considere colocar um CDN na frente. O GitHub Pages sem CDN começou a mostrar latência alta nos horários de pico.

Se você quer apenas colar um widget pronto sem hospedar nada, existem bibliotecas como countdowntimer.js ou flipclock.js, mas elas adicionam quilos de código que podem não ser necessários. Para uma página simples, o vanilla é mais rápido e mais previsível. Personalização visual: adicione cores que remetam ao movimento feminista, como roxo e verde, mas evite excesso de gradiente e sombra. Animações pesadas diminuem a taxa de frames em dispositivos mais lentos. Mantenha o texto legível e o contraste alto. Acessibilidade também é parte disso, já que se trata de um dia com relevância social.

Teste sempre em três cenários: desktop moderno, celular Android com Chrome desatualizado e iPhone com Safari. São esses dois últimos que costumam revelar bugs de renderização e de timezone que passam despercebidos. Se a contagem regressiva tiver que exibir uma mensagem quando chegar a zero, adicione um listener que detecte diff

= 0 e substitua o conteúdo do container por uma mensagem estática. Isso evita que o display fique mostrando valores negativos ou zero rodando infinitamente.

Não há muito mais segredo. O resto é ajustar o design e subir para o ar. O código fica pequeno, a manutenção é mínima e o resultado é funcional sem depender de serviços de terceiros que podem sair do ar ou mudar o preço depois.