Pular para o conteúdo principal

Tutorial: Criando uma Contagem Regressiva para o Natal

Contagem regressiva para o Natal


Neste tutorial, você aprenderá como criar uma contagem regressiva animada para o Natal utilizando HTML, CSS e JavaScript. Este projeto é ideal para iniciantes e é uma ótima maneira de praticar integração de tecnologias front-end.

Veja a Contagem Regressiva para o Natal em Funcionamento neste link. Contagem Regressiva para o Natal.

Veja o vídeo no YouTube:

Pré-requisitos

  • Conhecimento básico em HTML, CSS e JavaScript.
  • Um editor de código como VS Code.
  • Um navegador web para visualizar o resultado.

1. Estrutura do Projeto

Crie uma pasta chamada Contagem-regressiva-para-natal e dentro dela, crie três arquivos:

  • index.html: Contém o layout da aplicação.
  • style.css: Para estilização.
  • script.js: Para a lógica de contagem regressiva.

2. HTML: Estruturando o Layout

No arquivo index.html, insira o seguinte código:



<!DOCTYPE html>

<html lang="pt-br">

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1">

    <title>Contagem Regressiva para o Natal</title>

    <link rel="stylesheet" type="text/css" media="screen" href="style.css">

    <script src="script.js"></script>

</head>

<body>

    <section class="section">

		<div class="main-container">

			<div class="content">

				<div class="circle-column bounce">

					<div class="circle blue">

						<div id="chrs-days"></div>

					</div>

				</div>

				<div class="circle-column bounce">

					<div class="circle yellow">

						<div id="chrs-hrs"></div>

					</div>

				</div>

				<div class="circle-column bounce">

					<div class="circle green">

						<div id="chrs-min"></div>

					</div>

				</div>

				<div class="circle-column bounce">

					<div class="circle white">

						<div id="chrs-sec"></div>

					</div>

				</div>

			</div>

			<div class="intro">

				<h1>Feliz Natal!</h1>

				<h3>25 Dez, 2024</h3>

				<a href="#" class="shop-btn">Compre Agora</a>

			</div>

		</div>

	</section>

</body>

</html>

Aqui, criamos uma seção com círculos que exibirão a contagem regressiva e uma mensagem de boas festas.

3. CSS: Adicionando Estilo e Animação

No arquivo style.css, adicione:



@import url('https://fonts.googleapis.com/css?family=Emilys+Candy&display=swap');

@import url('https://fonts.googleapis.com/css?family=Mountains+of+Christmas&display=swap');

body{

	margin: 0;

	padding: 0;

}

*{

	box-sizing: border-box;

}

.section{

	background-color: #b01010;

	font-family: 'Emilys Candy', cursive;

	padding: 0 15px 30px 15px;

}

.content{

	display: flex;

	flex-wrap: wrap;

}

.main-container{

	max-width: 1170px;

	margin: 0 auto;

}

.circle-column {

	align-items: flex-end;

	display: flex;

	flex: 0 0 25%;

	height: 260px;

	max-width: 25%;

	position: relative;

	width: 100%;

	z-index: 1;

	padding: 0 5px;

}

.circle-column::before {

	background-color: red;

	content: "";

	height: 100%;

	left: 0;

	margin: 0 auto;

	position: absolute;

	right: 0;

	top: 0;

	width: 2px;

	z-index: -1;

}

.circle-column .circle {

	align-items: center;

	border-radius: 50%;

	display: flex;

	font-size: 66px;

	justify-content: center;

	margin: 0 auto;

	position: relative;

	text-align: center;

	width: 180px;

	font-weight: bold;

}

.circle-column .circle span{

	display: block;

	text-transform: capitalize;

	font-weight: normal;

	font-size: 22px;

}

.circle-column .circle::before {

	background-color: #c03636;

	border-radius: 45%;

	border: 2px solid #f99d24;

	content: "";

	height: 15px;

	left: -1px;

	margin: 0 auto;

	position: absolute;

	right: 0;

	top: -19px;

	width: 5px;

}

.circle-column .circle::after {

	content: "";

	padding-top: 100%;

}

.circle-column .circle.blue {

	background-color: #1624e4;

}

.circle-column .circle.yellow {

	background-color:#f7f30a;

}

.circle-column .circle.green {

	background-color: #0acf0a;

}

.circle-column .circle.white {

	background-color: #ffffff;

}

.intro{

	color: #ffffff;

	text-align: center;

}

.intro h1{

	font-size: 90px;

	margin: 40px 0 0 0;

}

.intro h3 {

	font-family: 'Mountains of Christmas', cursive;

	font-size: 45px;

	margin: 0;

	text-transform: uppercase;

}

.shop-btn {

	border-radius: 3px;

	border: 2px dashed #ffffff;

	color: #ffffff;

	display: inline-block;

	font-family: 'Mountains of Christmas', cursive;

	font-size: 34px;

	font-weight: bold;

	margin-top: 30px;

	min-width: 200px;

	padding: 4px 10px;

	text-decoration: none;

}

.shop-btn:hover,

.shop-btn:focus{

	outline: 0;

	text-decoration: none;

	background-color: #0b290b;

}

@keyframes bounce {

  from,

  20%,

  53%,

  80%,

  to {

    transform: translate3d(0, 0, 0);

  }

  40%,

  43% {

    animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);

    transform: translate3d(0, -30px, 0);

  }

  70% {

    animation-timing-function: cubic-bezier(0.755, 0.05, 0.855, 0.06);

    transform: translate3d(0, -15px, 0);

  }

  90% {

    transform: translate3d(0, -4px, 0);

  }

}

.bounce {

	  animation-name: bounce;

	  transform-origin: center bottom;

	  animation-duration: 1s;

	  animation-fill-mode: both;

}

@media screen and (max-width: 767px) {

	.circle-column .circle {

		font-size: 26px;

	}

	.intro h1 {

		font-size: 54px;

	}

	.circle-column .circle span{

		font-size: 16px;

	}

}

@media screen and (max-width: 500px) {

	.circle-column .circle {

		font-size: 20px;

	}

	.intro h1 {

		font-size: 40px;

	}

	.circle-column .circle span{

		font-size: 10px;

	}

}

        

Aqui, usamos animações para dar um efeito de "pulo" nos círculos.

4. JavaScript: Criando a Lógica

No arquivo script.js, insira o seguinte código:



var dest = new Date(

 "dec 25, 2024 12:00:00").getTime();

var x = setInterval(function() {

 var now = new Date().getTime();

 var diff = dest - now;

 var days = Math.floor(diff / (1000 *

  60 * 60 * 24));

 var hours = Math.floor((diff % (

  1000 * 60 * 60 * 24)) / (1000 *

  60 * 60));

 var minutes = Math.floor((diff % (

  1000 * 60 * 60)) / (1000 * 60));

 var seconds = Math.floor((diff % (

  1000 * 60)) / 1000);

 document.getElementById('chrs-days')

  .innerHTML = days +

  "Dias";

 document.getElementById('chrs-hrs')

  .innerHTML = hours +

  "horas";

 document.getElementById('chrs-min')

  .innerHTML = minutes +

  "min";

 document.getElementById('chrs-sec')

  .innerHTML = seconds +

  "seg";

}, 1000);

        

Este código calcula a diferença entre a data atual e o Natal e atualiza os valores na tela.

5. Testando o Projeto

  1. Abra o arquivo index.html no navegador.

  2. Veja a contagem regressiva funcionando com a estilização e animação.

Dicas de Personalização

  • Mude as cores: Altere os estilos no style.css para criar um tema próprio.
  • Adicione um som natalino: Insira um áudio ao final da contagem.

Se preferir, os códigos estão no meu Repositório no GitHub.

Conclusão

Este projeto combina elementos essenciais do desenvolvimento web. Agora você tem uma aplicação funcional que pode ser usada como decoração digital para o Natal!

Comentários

Mais vistas

Autocode - Significado e Funcionalidade

O Que é Autocode? O Autocode foi uma das primeiras linguagens de programação de computador, desenvolvida em 1952 por Alick Glennie para o computador Mark 1 na Universidade

Semáforo - HTML, CSS e JavaScript - Tutorial

Semáforo Funcional: Aprenda a criar um semáforo funcional com este tutorial detalhado. Descubra como implementar a lógica de controle de um semáforo usando HTML, CSS e JavaScript.

Animação Roleta de Prêmios - HTML, CSS e JavaScript - Tutorial

Animação Roleta de Prêmios: Descubra como criar uma animada roleta de prêmios com este tutorial detalhado. Este projeto consiste em uma Animação,  uma roleta