Pular para o conteúdo principal

Relógio Temático - HTML, CSS e JavaScript - Tutorial

Relógio Temático

Relógio Temático:

Aprenda a criar um relógio estilizado com tema usando HTML, CSS e JavaScript neste tutorial passo a passo.

Este projeto consiste em um Relógio com ponteiros e digital ao mesmo tempo,  o mesmo pode ser alternado em temas claro e escuro.

Esse projeto é muito bom pra quem está aprendendo linguagens de programação,  principalmente nestas 3 linguagens: HTML,  CSS e JavaScript.

Veja o Relógio com tema em funcionamento neste link. Relógio com tema.

Veja o vídeo no YouTube:

Começando o Tutorial: 

1° Passo: Abra seu VS Code, ou qualquer IDE da sua preferência e crie três pastas com os nomes... index.html, style.css e script.js.

Logo em seguida copie o código html abaixo e cole na pasta "index.html".




<!DOCTYPE html>

<html lang="pt-br">

<head>

<meta charset="UTF-8">

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

<link rel="stylesheet" href="style.css">

<title>Relógio com tema</title>

</head>

<body>

<button class="toggle">Modo Escuro</button>

<div class="clock-container">

<div class="clock">

<div class="needle hour"></div>

<div class="needle minute"></div>

<div class="needle second"></div>

<div class="center-point"></div>

</div>

<div class="time"></div>

<div class="date"></div>

</div>

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

</body>

</html>

2° Passo: Copie o código abaixo e cole na pasta "style.css".



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

* {

box-sizing: border-box;

}

:root {

--primary-color: #000;

--secondary-color: #fff;

}

html {

transition: all 0.5s ease-in;

}

html.dark {

--primary-color: #fff;

--secondary-color: #333;

}

html.dark {

background-color: #111;

color: var(--primary-color);

}

body {

font-family: 'Heebo', sans-serif;

display: flex;

align-items: center;

justify-content: center;

height: 100vh;

overflow: hidden;

margin: 0;

}

.toggle {

cursor: pointer;

background-color: var(--primary-color);

color: var(--secondary-color);

border: 0;

border-radius: 4px;

padding: 8px 12px;

position: absolute;

top: 100px;

}

.toggle:focus {

outline: none;

}

.clock-container {

display: flex;

flex-direction: column;

justify-content: space-between;

align-items: center;

}

.clock {

position: relative;

width: 200px;

height: 200px;

}

.needle {

background-color: var(--primary-color);

position: absolute;

top: 50%;

left: 50%;

height: 65px;

width: 3px;

transform-origin: bottom center;

transition: all 0.5s ease-in linear;

}

.needle.hour {

transform: translate(-50%, -100%) rotate(0deg);

}

.needle.minute {

transform: translate(-50%, -100%) rotate(0deg);

height: 100px;

}

.needle.second {

transform: translate(-50%, -100%) rotate(0deg);

height: 100px;

background-color: #e74c3c;

}

.center-point {

background-color: #e74c3c;

width: 10px;

height: 10px;

position: absolute;

top: 50%;

left: 50%;

transform: translate(-50%, -50%);

border-radius: 50%;

}

.center-point::after {

content: '';

background-color: var(--primary-color);

width: 5px;

height: 5px;

position: absolute;

top: 50%;

left: 50%;

transform: translate(-50%, -50%);

border-radius: 50%;

}

.time {

font-size: 60px;

}

.date {

color: #aaa;

font-size: 14px;

letter-spacing: 0.3px;

text-transform: uppercase;

}

.date .circle {

background-color: var(--primary-color);

color: var(--secondary-color);

border-radius: 50%;

height: 18px;

width: 18px;

display: inline-flex;

align-items: center;

justify-content: center;

line-height: 18px;

transition: all 0.5s ease-in;

font-size: 12px;

}

        

3° Passo: Copie o código abaixo e cole na pasta "script.js".



const hourEl = document.querySelector('.hour')

const minuteEl = document.querySelector('.minute')

const secondEl = document.querySelector('.second')

const timeEl = document.querySelector('.time')

const dateEl = document.querySelector('.date')

const toggle = document.querySelector('.toggle')

const days = ["Domingo", "Segunda", "Terça", "Quarta", "Quinta", "Sexta", "Sábado"];

const months = ["Janeiro", "Fevereiro", "Março", "Abril", "Maio", "Junho", "Julho", "Agosto", "Setembro", "Outubro", "Novembro", "Dezembro"];

toggle.addEventListener('click', (e) => {

    const html = document.querySelector('html')

    if (html.classList.contains('dark')) {

        html.classList.remove('dark')

        e.target.innerHTML = 'Modo Escuro'

    } else {

        html.classList.add('dark')

        e.target.innerHTML = 'Modo Claro'

    }

})

function setTime() {

    const time = new Date();

    const month = time.getMonth()

    const day = time.getDay()

    const date = time.getDate()

    const hours = time.getHours()

    const hoursForClock = hours >= 13 ? hours % 12 : hours;

    const minutes = time.getMinutes()

    const seconds = time.getSeconds()

    const ampm = hours >= 12 ? 'PM' : 'AM'

    hourEl.style.transform = `translate(-50%, -100%) rotate(${scale(hoursForClock, 0, 12, 0, 360)}deg)`

    minuteEl.style.transform = `translate(-50%, -100%) rotate(${scale(minutes, 0, 60, 0, 360)}deg)`

    secondEl.style.transform = `translate(-50%, -100%) rotate(${scale(seconds, 0, 60, 0, 360)}deg)`

    timeEl.innerHTML = `${hoursForClock}:${minutes < 10 ? `0${minutes}` : minutes} ${ampm}`

    dateEl.innerHTML = `${days[day]}, ${months[month]} ${date}`

}

const scale = (num, in_min, in_max, out_min, out_max) => {

    return (num - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;

}

setTime()

setInterval(setTime, 1000)

        
4° Passo: Testar o Projeto! 
Agora, com os três arquivos (index.html, style.css, e script.js) criados, você pode abrir o index.html no seu navegador e ver seu projeto funcionando perfeitamente!

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.

UI vs UX - Diferenças

Entendendo as diferenças entre UI e  Ux: Quando se trata de design de produtos digitais, os termos UI e UX são frequentemente usados juntos, mas representam conceitos distintos. Embora