-
Javascript30 - CSS + JS CLOCKJavascript 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();
'Javascript' 카테고리의 다른 글
Javascript30 - Array Cardio Day 1 (0) 2021.06.20 Javascript30 - Playing WITH CSS VARIABLES AND JS (0) 2021.06.18 Javascript30 - DRUM KIT (0) 2021.06.16 koan 풀기 (0) 2021.06.06 미니프로젝트 - 캘린더, 베이스볼게임 (0) 2021.06.04