๋ง์ ์น์ฌ์ดํธ์์ ์ ๋๋ฉ์ด์
ํจ๊ณผ๋ฅผ ๋ถ์ฌํ ๋ CSS์ transition/animation
์์ฑ์ ์ฌ์ฉํ ์ ์๊ณ
JavaScript์ setInterval()/requestAnimationFrame()
์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ์ง๋ง ๊ฐ๊ฐ์ ์ฌ์ฉํ ๋์ ํน์ง์ด ๋ค๋ฅด๊ณ ์ฅ๋จ์ ์ด ๋ค๋ฆ
๋๋ค.
CSS ์ ๋๋ฉ์ด์
๊ฐ๋จํ๊ฒ ์ฒ๋ฆฌํ๋ ์ ๋๋ฉ์ด์
์ ๊ฒฝ์ฐ CSS๋ก ์ฒ๋ฆฌ ํฉ๋๋ค.transform
์ translate
๋ฅผ ์ฌ์ฉํด์ ๊ตฌํํ ์ ์๋ ์ ๋๋ฉ์ด์
์ JavaScript์ style.top
๊ณผ style.left
์์ฑ์ ๋ณํ ์ํค๊ฒ ๋๋ฉด ๋ธ๋ผ์ฐ์ ๋ ๋๋ง ๊ณผ์ ์์ layout ์ด๋ paint ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ์ผ ํ ๊ฒฝ์ฐ๊ฐ ์๊ธธ ์ ์๊ธฐ ๋๋ฌธ์ ์ฑ๋ฅ ๊ฐ์ ์ ํจ์จ์ ์ด์ง ์์ ์ ์์ต๋๋ค.
CSS ์ ๋๋ฉ์ด์ ํน์ง
- ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ์๋ก ํ์ง ์์ต๋๋ค.
- ์ด๋ค ์์๊ฐ ์ ๋๋ฉ์ด์ ์ ๊ฐ์ ธ์ผ ํ๋ค๋ ์ง๊ด์ ์ธ ํํ์ด ๊ฐ๋ฅ ํฉ๋๋ค.
- ๋ฏธ๋์ด์ฟผ๋ฆฌ๋ฅผ ์ฌ์ฉํด์ ๋ฐ์ํ์ผ๋ก ์ ๋๋ฉ์ด์ ์ ๊ตฌํ ํ ์ ์์ต๋๋ค.
- ๋ฉ์ธ ์ฐ๋ ๋๊ฐ ์๋ ๋ณ๋์ ์ปดํฌ์งํฐ ์ฐ๋ ๋(Compositor Thread)์์ ๊ทธ๋ ค์ง๊ธฐ ๋๋ฌธ์ ๋ฉ์ธ ์ฐ๋ ๋์์ ์์ ํ๋ JS๋ณด๋ค ํจ์จ์ ์ ๋๋ค.
JavaScript ์ ๋๋ฉ์ด์
CSS๋ก ์ฒ๋ฆฌํ๊ธฐ์๋ ํจ์ฌ ๋ณต์กํ๊ณ ๋ฌด๊ฑฐ์ด ์ ๋๋ฉ์ด์
์์
๋ค์ ํจ์จ์ ์ด๊ณ , ์ธ๋ฐํ๊ฒ ๋ค๋ฃจ๊ธฐ ์ํด ์ฌ์ฉํฉ๋๋ค.
๋ฐ๋๋ผ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ๊ตฌํํ ๊ฒฝ์ฐ ์์์ ์ดํด๋ณธ ๋ฐ์ ๊ฐ์ด ๊ณ์ํด์ ์์์ ์์น๋ฅผ ์ฌ๊ณ์ฐํ๊ธฐ ๋๋ฌธ์ ๋นํจ์จ์ ์ด๊ณ ,์ฌ๋๋ค์ ๋์ ๊ฐ์ฅ ๋ถ๋๋ฌ์ด 60fps๊ฐ ์ ์ง๋์ง ์์ต๋๋ค. ์ด ๋๋ฌธ์ RAF(RequestAnimationFrame)
๊ฐ ๋ฑ์ฅํ๊ณ
๋์ผํ ๊ตฌํ ๋ฐฉ์์ผ๋ก 60fps๋ฅผ ๋ฌ์ฑ์ํฌ ์ ์์์ต๋๋ค.
๋ํ ์ธ๋ถ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค๋ก ํ์ฌ๊ธ ์ฑ๋ฅ ์ข์ ์ ๋๋ฉ์ด์
์ ๊ตฌํ ํ ์ ์์ต๋๋ค.
JavaScript ์ ๋๋ฉ์ด์ ํน์ง
- ์ ๋๋ฉ์ด์ ์ ์ธ๋ฐํ๊ฒ ์ ์ดํด์ผ ํ๋ ๊ฒฝ์ฐ JS๋ฅผ ์ฌ์ฉ ํฉ๋๋ค.
- ํฌ๋ก์ค ๋ธ๋ผ์ฐ์ง ์ธก๋ฉด์์ JS ์ ๋๋ฉ์ด์ ์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ ๋ฆฌ ํฉ๋๋ค.(๋ธ๋ผ์ฐ์ ํธํ์ฑ์ด ์ข๋ค.)
- GPU๋ฅผ ํตํ ํ๋์จ์ด ๊ฐ์์ ์ ์ดํ ์ ์์๋๋ค. CSS ์ ๋๋ฉ์ด์ ์ ๊ฒฝ์ฐ ํน์ ์์ฑ์ ์ํ GPU๊ฐ์์ด ๋จ์ผ๋ก์ ์ ์ฌ์์ ์ปดํจํ ์ธ ๊ฒฝ์ฐ์ ์ฑ๋ฅ ํ๋ฝ์ ๋ฐ์์ํฌ ์ ์์ผ๋ ์ด๋ฅผ ๋ง์์ ์์ต๋๋ค.
์ฐธ๊ณ
'๐ Front-End > CSS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
background-img ๊ฒฝ๋ก (0) | 2022.10.20 |
---|---|
CSS ์ ์ฒ๋ฆฌ๊ธฐ (0) | 2022.10.20 |
Resetting๊ณผ Normalizing CSS (0) | 2022.10.20 |
CSS ์ฐ์ ์์ (0) | 2022.10.20 |
z-index (0) | 2022.10.20 |