JavaScript 30 Days Challenge - Clock
728x90

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋งŒ์œผ๋กœ ์•„๋‚ ๋กœ๊ทธ ์‹œ๊ณ„ ๋งŒ๋“ค์–ด๋ณด๊ธฐ๋ฅผ ์ง„ํ–‰ํ–ˆ๋‹ค.
๋จผ์ € ์•„๋‚ ๋กœ๊ทธ ์‹œ๊ณ„๋ฅผ ๋งŒ๋“  ๋’ค ๋”ฐ๋กœ ๋””์ง€ํ„ธ ์‹œ๊ณ„๋„ ์ถ”๊ฐ€ํ•ด์คฌ๋‹ค.

 

์•Œ๊ฒŒ ๋œ ์ 

  • CSS์˜ ์†์„ฑ ์ค‘ transform-origin ์œผ๋กœ transform์˜ ๊ธฐ์ค€์ ์„ ์žก์„ ์ˆ˜ ์žˆ๋‹ค.
  • ์นจ์„ ์กฐ์ ˆํ•˜๋Š” ๊ฐ๋„๋ฅผ ์ง€์ •ํ•˜๋Š” ๋ฐฉ์‹์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€.

 

์ฒซ ๋ฒˆ์งธ ์ด์Šˆ

์ฒ˜์Œ์— 12์‹œ ๋ฐฉํ–ฅ์œผ๋กœ ๋ชจ๋“  ์นจ์„ ๊ณ ์ •์‹œํ‚ค๊ธฐ ์œ„ํ•ด rotate๋ฅผ 90๋„๋กœ ์„ค์ •ํ•ด์ฃผ์—ˆ๋”๋‹ˆ,

12์‹œ ๋ฐฉํ–ฅ์— ๋„์ฐฉํ•  ๋•Œ ๋งˆ๋‹ค transform์ด ์š”๋ž€ํ•˜๊ฒŒ ์›€์ง์˜€๋‹ค๊ฐ€ ๋‹ค์‹œ ๋Œ์•„์˜ค๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

(๋„ˆ๋ฌด ๋นจ๋ผ์„œ ์บก์ณ ๋ถˆ๊ฐ€๋Šฅ..)

์ด๊ฑด ์•„๋งˆ 444๋„ ๊นŒ์ง€ ๋Š˜์–ด๋‚ฌ๋‹ค๊ฐ€ ๊ธ‰๊ฒฉํ•˜๊ฒŒ 90๋„๋กœ ๋ณ€๊ฒฝ๋˜๋ฉฐ ์ƒ๊ธฐ๋Š” ๋ฌธ์ œ๊ฐ™์•˜๋‹ค.

๊ทธ๋ž˜์„œ ์•„๋ž˜ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ๋ชจ๋“  ์นจ์ด 12์‹œ ๋ฐฉํ–ฅ์— ๋„๋‹ฌํ–ˆ์„ ๋•Œ transition ์†๋„๋ฅผ ์ž ์‹œ ์กฐ์ •ํ•ด์ฃผ๋Š” ๊ฒƒ์œผ๋กœ ํ•ด๊ฒฐ.

  if (seconds === 0) {
    secondHand.style.transitionDuration = '0s';
  }

 

 

 


๋‘ ๋ฒˆ์งธ ์ด์Šˆ

๋””์ง€ํ„ธ ์‹œ๊ณ„์— ๋ฉ‹์ง„ ํฐํŠธ๋ฅผ ์ ์šฉํ–ˆ์œผ๋‚˜ ์น˜๋ช…์ ์ธ ๋‹จ์ ์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค.

 

gif ๋ณ€ํ™˜์ด ์ž˜๋ชป๋œ๊ฑด์ง€ ๋งค์šฐ ๋Š๋ ค์„œ ๋‹นํ™ฉ์Šค๋Ÿฝ์ง€๋งŒ...

์ดˆ๊ฐ€ ์นด์šดํŠธ ๋  ๋•Œ๋งˆ๋‹ค ์ˆซ์ž๊ฐ€ ์ขŒ์šฐ๋กœ ์›€์ง์ด๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

์‹ฌํžˆ ๊ฑฐ์Šฌ๋ฆฐ๋‹ค...

 

์ฐพ๋‹ค๋ณด๋‹ˆ ์ด๊ฒƒ์€ ์ด ํฐํŠธ๊ฐ€ ๊ฐ€๋ณ€ํฐํŠธ์ด๋‹ค ๋ณด๋‹ˆ ๋ฐœ์ƒํ•œ ๋ฌธ์ œ๋กœ ์ฝ”๋“œ๋กœ ์† ์“ธ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ฐพ์ง€ ๋ชปํ–ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๊ฐ€์žฅ ๊ฐ„๋‹จํ•œ ํ•ด๊ฒฐ์ฑ…์ธ ํฐํŠธ๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ๋กœ ๊ฒฐ์ •!..

๊ฐ ๋ฌธ์ž์˜ ํญ์ด ์ผ์ •ํ•œ monospace ๊ณ„์—ด ํฐํŠธ๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ์—ˆ๋‹ค.

์ž๊ฐ„๋„ ์ข€ ์ˆ˜์ •ํ•ด์ฃผ๋‹ˆ ํŽธ์•ˆํ•ด์กŒ๋‹ค. ๐Ÿ‘

 

๊ฐ„๋‹จํ•œ ์‹œ๊ณ„ ๋งŒ๋“ค๊ธฐ์˜€๋‹ค.

๋™์ž‘ํ•˜๋Š” ๋ชจ์Šต์€ ์•„๋ž˜์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

https://yujleee.github.io/jsChallenge30/02-Clock/index.html

 

Clock

 

yujleee.github.io

 

728x90