Created
June 9, 2021 18:38
-
-
Save ahmadrosid/bd12f153a2e07138b956e31515b395db to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!DOCTYPE html> | |
<html lang="en"> | |
<head> | |
<meta charset="UTF-8"> | |
<title>JS + CSS Clock</title> | |
</head> | |
<body> | |
<div class="clock"> | |
<div class="clock-face"> | |
<div class="hand hour-hand"></div> | |
<div class="hand min-hand"></div> | |
<div class="hand second-hand"></div> | |
</div> | |
</div> | |
<style> | |
html { | |
background: #00ACD7; | |
background-size: cover; | |
font-family: 'helvetica neue'; | |
text-align: center; | |
font-size: 10px; | |
} | |
body { | |
margin: 0; | |
font-size: 2rem; | |
display: flex; | |
flex: 1; | |
min-height: 100vh; | |
align-items: center; | |
} | |
.clock { | |
width: 30rem; | |
height: 30rem; | |
border: 20px solid white; | |
border-radius: 50%; | |
margin: 50px auto; | |
position: relative; | |
padding: 2rem; | |
} | |
.clock-face { | |
position: relative; | |
width: 100%; | |
height: 100%; | |
transform: translateY(-3px); /* account for the height of the clock hands */ | |
} | |
.hand { | |
width: 50%; | |
height: 6px; | |
background: black; | |
position: absolute; | |
top: 50%; | |
transform-origin: 100%; | |
transform: rotate(90deg); | |
transition: all 0.05s; | |
transition-timing-function: cubic-bezier(0.1, 2.7, 0.58, 1); | |
} | |
</style> | |
<script> | |
const secondHand = document.querySelector('.second-hand'); | |
const minsHand = document.querySelector('.min-hand'); | |
const hourHand = document.querySelector('.hour-hand'); | |
function setDate() { | |
const now = new Date(); | |
const seconds = now.getSeconds(); | |
const secondsDegrees = ((seconds / 60) * 360) + 90; | |
secondHand.style.transform = `rotate(${secondsDegrees}deg)`; | |
const mins = now.getMinutes(); | |
const minsDegrees = ((mins / 60) * 360) + ((seconds/60)*6) + 90; | |
minsHand.style.transform = `rotate(${minsDegrees}deg)`; | |
const hour = now.getHours(); | |
const hourDegrees = ((hour / 12) * 360) + ((mins/60)*30) + 90; | |
hourHand.style.transform = `rotate(${hourDegrees}deg)`; | |
} | |
setInterval(setDate, 1000); | |
setDate(); | |
</script> | |
</body> | |
</html> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment