Javascript
Javascript30 - CSS + JS CLOCK
big whale
2021. 6. 17. 22:43
CSS + JS CLOCK

요구사항
1. 실제 시계처럼 동작하게 만들기
1. HTML 구성
- clock 안에 clock-face가 있고 그 안에 초침,분침,시침이 있다.
<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>
2. CSS 구성
- body클래스에서 시계를 중앙으로 위치시키고 clock클래스에서 시계의 모양,그림자를 그린다.
- hand 클래스에서 position:absolute로 해서 시침,분침,초침을 겹치게 놓은 후 transform-origin:right으로 해서 사각형의 오른쪽 선을 기준으로 회전하게 한다.
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;
box-shadow:
0 0 0 4px rgba(0,0,0,0.1),
inset 0 0 0 3px #EFEFEF,
inset 0 0 10px black,
0 0 10px rgba(0,0,0,0.2);
}
.clock-face {
position: relative;
width: 100%;
height: 100%;
transform: translateY(-3px);
}
.hand {
width: 50%;
height: 6px;
background: black;
position: absolute;
top: 50%;
transform-origin:right;
transform:rotate(90deg);
}
3. Javscript 구성
- 초침,분침,시침을 불러온 후에 시침,분침,초침을 회전시키는 setclock함수를 1초에 한번 호출하게 작성한다.
const secondHand = document.querySelector('.second-hand');
const minuteHand = document.querySelector('.min-hand');
const hourHand = document.querySelector('.hour-hand');
function setclock() {
let date = new Date();
secondHand.style.transform = `rotate(${90+date.getSeconds()*6}deg)`;
minuteHand.style.transform = `rotate(${90+date.getMinutes()*6+date.getSeconds()/60}deg)`;
hourHand.style.transform = `rotate(${90+date.getHours()*30+date.getMinutes()/2}deg)`;
console.log(date.getHours());
console.log(date.getMinutes());
console.log(date.getUTCHours());
}
setInterval(setclock,1000);
setclock();