Skip to content

Latest commit

Β 

History

History
30 lines (21 loc) Β· 2.16 KB

animation.md

File metadata and controls

30 lines (21 loc) Β· 2.16 KB

CSS μ• λ‹ˆλ©”μ΄μ…˜κ³Ό JavaScript μ• λ‹ˆλ©”μ΄μ…˜

μ›Ήμ‚¬μ΄νŠΈμ— μ• λ‹ˆλ©”μ΄μ…˜ 효과λ₯Ό λΆ€μ—¬ν•  λ•Œ CSS의 transition, animation 속성을 μ‚¬μš©ν•  수 있고, JavaScript의 setInterval(), requestAnimationFrame()을 μ‚¬μš©ν•  수 μžˆλ‹€. ν•˜μ§€λ§Œ 각각을 μ‚¬μš©ν•  λ•Œμ˜ νŠΉμ§•μ΄ λ‹€λ₯΄κ³  μž₯단점이 있기 λ•Œλ¬Έμ— ν™˜κ²½μ— 맞게 μ‚¬μš©ν•˜λŠ” 것이 μ€‘μš”ν•˜λ‹€.


CSS μ• λ‹ˆλ©”μ΄μ…˜

마우슀λ₯Ό μ˜¬λ Έμ„ λ•Œ ν˜Ήμ€ 메뉴 λ²„νŠΌμ˜ μ „ν™˜κ³Ό 같은 κ°„λ‹¨ν•˜κ²Œ μ²˜λ¦¬ν•˜λŠ” μ• λ‹ˆλ©”μ΄μ…˜μ˜ 경우 CSS둜 μ²˜λ¦¬ν•œλ‹€. κ°„λ‹¨ν•œ μ• λ‹ˆλ©”μ΄μ…˜μ„ JavaScript둜 κ΅¬ν˜„ν•˜λŠ” 경우 λΈŒλΌμš°μ €μ˜ λ Œλ”λ§ κ³Όμ •μ—μ„œ reflowλ₯Ό λ°œμƒμ‹œν‚€κΈ° λ•Œλ¬Έμ— μ• λ‹ˆλ©”μ΄μ…˜μ΄ λΆ€μžμ—°μŠ€λŸ½κ²Œ λŠκΈ°λŠ” λ“―ν•œ λŠλ‚Œμ„ 받을 수 μžˆλ‹€.

μž₯점

  • λ°˜μ‘ν˜•μœΌλ‘œ μ• λ‹ˆλ©”μ΄μ…˜μ„ κ΅¬ν˜„ν•  λ•Œ μœ μš©ν•œλ°, λ―Έλ””μ–΄ 쿼리둜 μ• λ‹ˆλ©”μ΄μ…˜μ„ μ μš©ν•˜λ©΄ λœλ‹€.
  • μ™ΈλΆ€ 라이브러리λ₯Ό ν•„μš”λ‘œ ν•˜μ§€ μ•ŠλŠ”λ‹€.
  • CSS μžμ²΄κ°€ μ„ μ–Έν˜•μ΄κΈ° λ•Œλ¬Έμ—, μ–΄λ–€ μš”μ†Œκ°€ μ• λ‹ˆλ©”μ΄μ…˜μ„ κ°€μ Έμ•Ό ν•œλ‹€λŠ” 직관적인 ν‘œν˜„μ΄ κ°€λŠ₯ν•˜λ‹€.
  • 메인 μŠ€λ ˆλ“œκ°€ μ•„λ‹Œ λ³„λ„μ˜ 컴포지터 μŠ€λ ˆλ“œ(Compositor Thread)μ—μ„œ 그렀지기 λ•Œλ¬Έμ— 메인 μŠ€λ ˆλ“œμ—μ„œ μž‘μ—…ν•˜λŠ” JavaScript보닀 νš¨μœ¨μ μ΄λ‹€.

JavaScript μ• λ‹ˆλ©”μ΄μ…˜

CSS둜 μ²˜λ¦¬ν•˜κΈ°μ—λŠ” 훨씬 λ³΅μž‘ν•˜κ³  무거운 μ• λ‹ˆλ©”μ΄μ…˜ μž‘μ—…λ“€μ„ 효율적이고, μ„Έλ°€ν•˜κ²Œ 닀루기 μœ„ν•΄ μ‚¬μš©ν•œλ‹€.

μž₯점

  • μš”μ†Œμ˜ μŠ€νƒ€μΌμ΄ λ³€ν•˜λŠ” μˆœκ°„λ§ˆλ‹€ μ œμ–΄ν•  수 있기 λ•Œλ¬Έμ— μ• λ‹ˆλ©”μ΄μ…˜μ˜ μ„Έλ°€ν•œ ꡬ성이 κ°€λŠ₯해진닀.
  • GPUλ₯Ό ν†΅ν•œ ν•˜λ“œμ›¨μ–΄ 가속을 μ œμ–΄ν•  수 μžˆλ‹€. μ΄λŠ” CSS의 νŠΉμ • μ†μ„±μœΌλ‘œ μΈν•œ 가속을 λ§‰μ•„μ£ΌλŠ”λ°, ν•˜λ“œμ›¨μ–΄ 가속이 λͺ¨λ°”μΌμ—μ„œ μ„±λŠ₯μ €ν•˜λ₯Ό λ°œν–‰μ‹œν‚¬ 수 있기 λ•Œλ¬Έμ— 이런 면에선 μ’‹λ‹€.
  • λΈŒλΌμš°μ € ν˜Έν™˜μ„± μΈ‘λ©΄μ—μ„œ transition, animation 속성보닀 λ›°μ–΄λ‚˜λ‹€.

πŸ’‘ ν•˜λ“œμ›¨μ–΄ 가속을 λ°œμƒμ‹œν‚€λŠ” 것 : opacity, transform


μ°Έκ³