19_Theme Clock
๐ป ์ฃผ์ : ํ์ฌ์๊ฐ์ ๋ณด์ฌ์ฃผ๊ณ ์๊ณ๋ฐ๋์ด ์์ง์ด๋ ์๊ณ + ๋คํฌ๋ชจ๋
- x์ถ์ผ๋ก -50%, y์ถ์ผ๋ก-100% ๊น์ง ์ด๋์ํค๊ณ ํ์ ์ํฌ๊ฑฐ์.
transform: translate(-50%, -100%) rotate(0deg);
โtransform
- Element๋ฅผ ๋ณ๊ฒฝ์ํฌ ๋ ์ฌ์ฉ ( ์์น ์ด๋ , ํ์ , ํฌ๊ธฐ ์กฐ์ ๋ฑ )
- transform ๋ด ์ฌ์ฉ : translate , scale , rotate ๋ฑ
โtranslate
- Element๋ฅผ ์ด๋์ํฌ ๋ ์ฌ์ฉ
- X์ถ์ด๋ Y์ถ ๊ธฐ์ค์ผ๋ก ํ ๊ฐ๋ง ์ ์ฉ์ํค๊ณ ์ถ์ ๋๋ translateY , translateY๋ฅผ ์ฌ์ฉํ๋๊ฐ translate์์ ์ํ์ง ์๋ ๊ฐ์ 0์ ์ฌ์ฉํด๋ ๋๋ค.
โtransition
- Element์ CSS ์์ฑ์ ๋ณ๊ฒฝํ ๋ ๋ถ๋๋ฝ๊ฒ ์์ง์ด๊ฑฐ๋ ์ํ๋ ๋๋ก ์ ์ฉ๋๋๋ก ์ ๋๋ฉ์ด์
์๋, ๋ฐ๋ณต ํ์, ์กฐ์ ๋ฑ์ ํ ์ ์๋ค.
- dark ํด๋์ค๋ฅผ ๋ง๋ค์ด add, remove๋ก ๋คํฌ๋ชจ๋์ ๋ผ์ดํธ๋ชจ๋๋ก ๋ณ๊ฒฝํ ์ ์์.
- ์๊ณ๋ 360๋ ํ์ ํ๊ธฐ ๋๋ฌธ์ 0~360๊น์ง ๋งคํ(์๋ 12, ๋ถ์ 60, ์ด๋ 60)
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)`;