์ด ๊ธ์ CSS์ ์ด์ง(easing) ๋ฐ ํ๋น ๋ฒ ์ง์ด(cubic-bezier) ์ปค๋ธ ์ดํดํ๊ธฐ ๊ฒ์๋ฌผ์ ๋ํ ํ์ ๊ธ์ ๋๋ค.
์ด ๊ธ์ ๋ณด๋ฌ ์ค์ จ๊ฑฐ๋ CSS
cubic-bezier
์ปค๋ธ์ ๋ํด ์์ง ์ ๋ชจ๋ฅด์ ๋ค๋ฉด ์ง๊ธ ๋ฐ๋ก ํด๋น ๊ธ์ ์ฝ์ด๋ณด์๊ธฐ ๋ฐ๋๋๋ค.
์ง๊ฐ์ด ์ด๋์ ์๋์ง ์ ํํ ์ ์ ์๊ฑฐ๋ ๊ทธ ์ง๊ฐ์ด ์ ํํ ๋ฌด์์ธ์ง ๋ง๋ก ํํํ ์ ์๋๋ผ๋ ๊ฒฝํํด ๋ณด๋ฉด ์ ์ ์๋ ๊ฒ๋ค์ด ์์ต๋๋ค.
์ธํ ๋ฆฌ์ด์ ๋ํด ์๋ฌด๊ฒ๋ ๋ชจ๋ฅด์ง๋ง ์ ๋์์ธ๋ ๊ณต๊ฐ์ ์์ผ๋ฉด ๊ทธ๊ณณ์ ๋๋์ ๋ฐ์ ์ ์์ต๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก, ์ด๋ค ์ฑ์ด ๋ค๋ฅธ ์ฑ๋ณด๋ค ๋ ๋์ ๋๋์ ์ฃผ๋ ์ด์ ๋ฅผ ์ค๋ช ํ ์ ์๋๋ผ๋ ์ข์ ์ฑ๊ณผ ๋์ ์ฑ์ ๊ตฌ๋ถํ ์ ์์ต๋๋ค.
๋ํ ์ฌ์ฉ์๋ ์น์ฌ์ดํธ์ ์ฑ์ ํธ๋์ง์ ์ด๋ ์ ๋๋ฉ์ด์ ์ด ๋ฌด์์ธ์ง ์ ๋ชจ๋ฅผ ์๋ ์์ง๋ง, ์ข์ ๊ฒ๊ณผ ๋์ ๊ฒ์ ์ฐจ์ด๋ฅผ ์๋ฆฌํ๊ฒ ํ์ ํ ์ ์์ต๋๋ค. ์ฑ์ ์์ง์์ด ์ข์ ๋์ ๊ทธ๋ ์ง ์์ ๋๋ฅผ ์ง๊ด์ ์ผ๋ก ์ ์ ์์ผ๋ฉฐ, ๊ทธ ๋ฐฉ๋ฒ์ด๋ ์ด์ ๋ฅผ ์ค๋ช ํ ์ ์๋๋ผ๋ ์ผ๋ฐ์ ์ด๊ฑฐ๋ ์ธ๋ จ๋์ง ์๋ค๋ ์ธ์์ ๋ฐ์ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ด๋ฌํ ๋๋์ ์ฃผ๋ ์์์ ๋ํด ๋ ์ ์ดํดํ๊ณ , ์์ฒด UI๋ฅผ ๊ตฌ์ถํ ๋ ๋์ ๋๋์ ํผํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ธฐ ์ํด ์ง๋ 10์ฌ ๋ ๋์ ์น์์ ํธ๋์ง์ ๊ณผ ์ ๋๋ฉ์ด์ ์ ์ ์ํ๋ฉด์ ๋ฐฐ์ด ๋ด์ฉ์ ์ ๋ฆฌํ์ต๋๋ค.
์ฐธ๊ณ :
โํธ๋์ง์ โ๊ณผ โ์ ๋๋ฉ์ด์ โ์ CSS์์ ๋ณ๊ฐ์ ๊ฐ๋ ์ด์ง๋ง ์ฌ๊ธฐ์๋ โ๋ชจ๋ ์ข ๋ฅ์ ์์ง์ ๋๋ ๋ณํโ๋ผ๋ ์๋ฏธ๋ก ์ด ๋ ๋จ์ด๋ฅผ ๋๋ถ๋ถ ๊ฐ์ ์๋ฏธ๋ก ์ฌ์ฉํ๊ฒ ์ต๋๋ค.
์๊ฐ๊ณผ ๋ ธ๋ ฅ์ ์์๋ถ์ด ๋ฉ์ง ํธ๋์ง์ ์ ๋ง๋ค์๋ค๋ฉด ์ด๋ฅผ ์ฆ๊ธฐ๊ณ ์ถ์ ๊ฒ์ ๋๋ค. ์ ๋ฅผ ๋น๋กฏํ ๋๋ถ๋ถ์ ๊ฐ๋ฐ์๋ ๋ฉ์ง ์ ๋๋ฉ์ด์ ์ ๊ฐ์ํ๋ฉฐ ํธ๋์ง์ ์ด ์๋ค ๊ฐ๋ค ํ๋ ๋ชจ์ต์ ๋ณด๋ฉฐ ์ฆ๊ฑฐ์ํ ์๋ ์์ต๋๋ค. ํ์ง๋ง ์ฌ๊ธฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
์๋ชป ๊ฐ๋ฐ๋ ์์ง์์ ์ ๋์ ์ธ ๋จ์ 1์์๋ ๋๋ฌด ์ค๋ ์ง์๋๋ค๋ ์ ์ ๋๋ค.
์ฌ์ฉ์๋ค์ ์ฌ๋ฌ๋ถ๋งํผ ํฅ๋ฏธ๋ฅผ ๋๋ผ์ง ๋ชปํ๋ฉฐ, ๋ฐ๋ผ์ ์ธ๋ด์ฌ๋ ์์ต๋๋ค. ๊ทธ๋ค์ ๋ฌด์ธ๊ฐ๋ฅผ ์๋ฃํ๊ธฐ ์ํด ์น์ฌ์ดํธ์ ๋ฐฉ๋ฌธํ์ผ๋ฉฐ, ์๋ฌด๋ฆฌ ๋ฉ์ง ๊ธฐ๋ฅ์ด๋ผ๋ ํ์ ์ด์์ผ๋ก ์ค๋ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ ์ข์ํ์ง ์์ต๋๋ค.
์กฐ์ธ์ ๋๋ฆฌ์๋ฉด, ์ฌ์ฉ์๊ฐ ํธ๋์ง์ ์ ๋์น์ง ์๋ ๋ฒ์ ๋ด์ ๊ฐ๋ฅํ ์งง๊ฒ ์ง์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ๊ฒฝํ์ ๋๋ถ๋ถ์ ๋จ์ผ ํธ๋์ง์ ์ ๊ฒฝ์ฐ 150~400๋ฐ๋ฆฌ ์ด ๋ฒ์(0.15~0.4์ด)์์ ๊ฐ์ฅ ์ ์๋ํ๋ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. ์๋ฅผ ๋ค์ด ํ ์์๊ฐ ์ฌ๋ผ์ก๋ค๊ฐ ๋ค๋ฅธ ์์๊ฐ ๋ํ๋๋ ๋ฑ ์ฐ์์ ์ธ ํธ๋์ง์ ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ์๋ ๊ทธ ์๋๋ฅผ ๋ ๋ฐฐ๋ก ๋๋ฆฌ๊ณ ๊ทธ ์ฌ์ด์ ์ฝ๊ฐ์ ์๊ฐ๋ ์ถ๊ฐํ ์ ์์ต๋๋ค. (๋ ๊ฐ์ ๊ฐ๋ณ ์ ๋๋ฉ์ด์ ์ด ๋์์ ๋ํ๋๋ ๊ฒ์ ์ํ์ง ์์ ๊ฒ์ ๋๋ค.)
๋๋ฌด ๋น ๋ฅด๋ค๊ณ ๋๊ปด์ง ๋๊น์ง ๊ณ์ ์๋๋ฅผ ๋์ธ ๋ค์ ์กฐ๊ธ๋ง ์๋๋ฅผ ์ค์ด์ธ์.
ํ์ง๋ง ํญ์ ์์ธ๋ ์กด์ฌํ๋ฉฐ ํ์ด์ง์ ๋ณํ๊ฐ ํด์๋ก ํธ๋์ง์ ์ ๋ ๋์ ๋๊ฒ ๋ง๋ค์ด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์นดํธ์ ์๋ ํ๋ชฉ ์๊ฐ ์ ๋ฐ์ดํธ๋ ๋ ์์ ์ ๋๋ฉ์ด์ ์ผ๋ก ๊ฐ์กฐํ๋ ๊ฒ๊ณผ ์ ์ฒด ํ์ด์ง๊ฐ ํธ๋์ง์ ์ ํ๋ ๊ฒ ์ฌ์ด์๋ ํฐ ์ฐจ์ด๊ฐ ์์ต๋๋ค. ํฐ ๋ณ๊ฒฝ์ฌํญ์ ๋๋ฌด ๋น ๋ฅด๊ฒ ์ง๋๊ฐ์ง ์๋๋ก ํ์ธ์.
๋ง์ง๋ง์ผ๋ก ํ ๊ฐ์ง ์ฃผ์ํ ์ ์ ์ ๋๋ฉ์ด์ ์ ์ง์ ์๊ฐ์ด ์ค์ ์ง์ ์๊ฐ๋ณด๋ค ์งง๊ฒ ๋๊ปด์ง ์ ์๋ค๋ ์ ์ ๋๋ค. ๋งค์ฐ ๋๋ฆฐ ease-in์ผ๋ก ํธ๋์ง์ ์ ์์ํ๋ฉด ๋ฐ๋ก ์์๋์ง ์์ ๊ฒ์ฒ๋ผ ๋ณด์ผ ์ ์๊ณ , ๋ฐ๋๋ก ๊ธด ๊ผฌ๋ฆฌ๋ฅผ ๊ฐ์ง ํธ๋์ง์ ์ ์ค์ ๋ก๋ ๋๋๊ธฐ ์ ์ ์ด๋ฏธ ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ผ ์ ์์ต๋๋ค. ์ด ์ ์ ์ผ๋์ ๋์ธ์. ์ฌ์ฉ์๊ฐ ํธ๋์ง์ ์ ์ง๊ฐํ๋ ๊ฑด ํ์ค์ด๋ฏ๋ก ์ฝ๋์ ๊ธฐ์ ์ ์ธ ์ง์ ์๊ฐ๋ณด๋ค ์ค์ ๋ก ์ด๋ป๊ฒ ๋๊ปด์ง๋์ง๊ฐ ๋ ์ค์ํฉ๋๋ค.
๋ฌผ๋ก ์ด๊ฒ์ ๋ง์ฒ๋ผ ์ฌ์ด ์ผ์ด ์๋๋๋ค. โ์ข์์, ํ์ง๋ง ์ฃผ์ด์ง ์ํฉ์์ ์ด๋ค ์ข ๋ฅ์ ํ๋น ๋ฒ ์ง์ด(cubic bรฉzier) ์ปค๋ธ๋ฅผ ์ฌ์ฉํด์ผ ํ๋์ง ์ค์ ๋ก ์ด๋ป๊ฒ ์ ์ ์๋์?โ๋ผ๊ณ ๋งํ ์ ์์ต๋๋ค.
๋ง์กฑ์ค๋ฝ์ง ๋ชปํ๊ฒ ์ง๋ง ์ด์ ๋ํ ๋๋ต์ ์ํ์ฐฉ์ค(๊ฒฝํ์ด๋ผ๊ณ ๋ ํฉ๋๋ค)๊ฐ ์ต๊ณ ์ ์ ์๋์ด๋ผ๋ ๊ฒ์ ๋๋ค.
์์ง์์ ์์๋งํผ์ด๋ ์ฃผ๊ด์ ์ด์ง๋ง ๊ทธ๋งํผ ์ค์ํฉ๋๋ค. ์น์ฌ์ดํธ๋ ์น ์ฑ์ ๋๋๊ณผ ๋ธ๋๋ฉ์ ํต์ฌ์ ์ธ ๋ถ๋ถ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
ํ์ง๋ง ํ ๊ฐ์ง ๋ช ์ฌํด์ผ ํ ์๋ น์ด ์์ต๋๋ค. ์คํํ ๋ ์ค์ ์ธ๊ณ์ ์์ง์์ ๋ ์ฌ๋ฆฌ๊ณ ์ด๋ฅผ ์ฑ์์ ์์ ์ค์ธ ์์ง์๊ณผ ๋น๊ตํด ๋ณด์ธ์. ์ด๋ฌํ ํธ๋์ง์ ์ด ๋ํ๋๊ณ ์ ์๋ฆฌ๋ก ์ฌ๋ผ์ด๋ฉ๋๋ ๊ฒ์ด ์ ๋๋ก ํ์ธ๋๋์? ๊ทธ๋ ๋ค๋ฉด ์ด์ฌํ ์ผ์ ๋ง์น ๋ณด๊ณ ์๊ฐ ๋ฌ๋ ค์ ์ผ์ ๋๋๋ค๋ ๊ฒ์ ์๋ฆฌ๋ ๊ฒ๊ณผ ๊ฐ์ด ๋น ๋ฅธ ์๋์ ์ธํธ๋ก์ ๋ถ๋๋ฝ๊ณ ๋น ๋ฅธ ease-out์ ํจ๊ป ์ฌ์ฉํ๋ ๋น ๋ฅธ ์๋์ ํธ๋์ง์ ์ ์ฌ์ฉํด์ผ ํ ์๋ ์์ต๋๋ค.
ํ๋ฉด์ ์คํจ ๋ฉ์์ง๊ฐ ํ์๋๋ ๊ฒ์ ์ด๋จ๊น์? ์ด ๊ฒฝ์ฐ ์ฝ๊ฐ์ ์ฃผ์๋ฅผ ๋๊ธฐ ์ํด ์ฝ๊ฐ ๋๋ฆฐ ์ด์ง ์ปค๋ธ๊ฐ ํ์ํ ์ ์์ต๋๋ค.
์ฆ์ ์๋ ค์ผ ํ๋ ์ค์ํ ์ฌํญ์ด๋ผ๋ฉด ์๋์ ๋ช ํ์ฑ์ ์ต์ฐ์ ์ผ๋ก ๊ณ ๋ คํ ์ ์์ต๋๋ค. ๋งค์ฐ ์ค์ํ ๋ด์ฉ์ด๋ผ๋ฉด ํ๋ค๊ธฐ์ ๊ฐ์ ๋ณด๋ค ์ ๊ทน์ ์ธ ์์ง์์ ํตํด ์ฌ๊ฐ์ฑ์ ์ ๋ฌํ๊ณ ํ์ํ ๊ณณ์ ์ฃผ์๋ฅผ ์ง์ค์ํฌ ์๋ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ ๊ฐ ๊ฐ์ฅ ์ถ์ฒํ๋ ๊ฒ์ ์๊ฐ์ ํฌ์ํ์ฌ ํด๋น ๋์์ด ์ ์ ํ ๋๋์ ์ ๋ฌํ๋์ง ๋ฌผ์ด๋ณด๋ ๊ฒ์ ๋๋ค. ์ด ์์ง์์ด ์ ํ ๋๋ ํ์ด์ง์ ๋ธ๋๋์ ์ผ๊ด์ฑ์ด ์๋์?
๋ง์ฝ Pixar์์ ์ฌ๋ฌ๋ถ์ UI์ ๊ฐ์ ๋์์ ์ํํ๋ ๋ก๋ด์ ์ ๋๋ฉ์ด์ ์ผ๋ก ์ ์ํ๋ค๋ฉด ์ด๋ป๊ฒ ์์ง์ผ๊น์?
์ค์ ์ธ๊ณ์์๋ ์ด๋ค ์ ํ์ ์์ง์๋ ์ฆ์ ์ต๋ ์๋๋ก ์ ํํ๊ฑฐ๋ ์์๊ฐ์ ์์ ํ ์์ ํ ๋ฉ์ถ๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์ด๋ฌํ ์์ง์์ ๋ง๋๋ ์ปค๋ธ๋ฅผ ํผํ๋ฉด UI๊ฐ ์ข ๋ โ์ง์งโ ๊ฐ๊ณ ์ง๊ด์ ์ผ๋ก ๋ณด์ผ ๊ฒ์ ๋๋ค.
์ ๋๋ฉ์ด์ ์ด ๋ญ๊ฐ ์ด์ํด ๋ณด์ธ๋ค๋ฉด, ์์์ด๋ ๋์ด ๋ถ์์ฐ์ค๋ฝ๊ฒ ๊ฐ์์ค๋ฝ๊ธฐ ๋๋ฌธ์ผ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค.
์กฐ๊ธ์ด๋ผ๋, cubic-bezier
์ปค๋ธ์ ์ฝ๊ฐ์ ease in๊ณผ out์ ์ถ๊ฐํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์์ง๋ง ๊ฐ์งํ ์ ์๋ ์ฝ๊ฐ์ ๊ฐ์ ๋ฐ/๋๋ ๊ฐ์์ด ๋ถ๋๋ฌ์ด ๋๋์ ํธ๋์ง์
๊ณผ ์ฝ๊ฐ ์ด์ํ ๋๋์ ํธ๋์ง์
์ ์ฐจ์ด๋ฅผ ๋ง๋ค ์ ์์ต๋๋ค.
์๋๋ ๋ค ๊ฐ์ ์ฌ๊ฐํ์ด ๋ชจ๋ ํ ๋ฐํด ํ์ ํ์ง๋ง ์๋ก ๋ค๋ฅธ ์ด์ง(easing)์ด ์ ์ฉ๋ ๋ฐ๋ชจ์ ๋๋ค.
์์ ์ฒซ ๋ฒ์งธ์ ๋ ๋ฒ์งธ ์ฌ๊ฐํ์ ๋๋ฌด ๊ฐ์์ค๋ฝ๊ฒ ์์ํ๊ฑฐ๋ ๋๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค.
์ธ ๋ฒ์งธ โ๋ถ๋๋ฌ์ด(smooth)โ ์ต์ ์ ์ปค์คํ ์ปค๋ธ๊ฐ ๋ถ๋๋ฝ๊ฒ ๋ค์ด์ค๊ณ ๋๊ฐ๋ฉด์ ๊ฐ์ ๋ฐ ๊ฐ์์ด ๋์ฑ ์ฐ์ํ๊ฒ ์์ง์ด๊ธฐ ๋๋ฌธ์ ํจ์ฌ ๋ ์ ์๋ํฉ๋๋ค.
์ค์ ๋ฌผ๋ฆฌํ์ด ์ ์ฉ๋ ๋ฏํ ์ ๋๋ฉ์ด์ ์ ๋ ๊ตฌํํ๊ณ ์ถ๋ค๋ฉด ๋ค ๋ฒ์งธ โ๊ด์ฑ(inertia)โ ์ต์ ์ ์ฌ์ฉํ๋ฉด ๋ง์น ์คํ๋ง์ ์ํด ๊ตฌ๋๋๋ ๊ฒ์ฒ๋ผ โ์์ธ๋์ (winds up)โ ๋ฐ ์ค๋ฒ์ํ ์ด ๊ฐ๋ฅํฉ๋๋ค. (์ด๋ฐ ์ ํ์ ์ ๋๋ฉ์ด์ ์์๋ ์กฐ๊ธ๋ง ์ถ๊ฐํด๋ ํฐ ํจ๊ณผ๋ฅผ ์ป์ ์ ์์ผ๋ ์ฐธ๊ณ ํ์ธ์.)
ํ์ง๋ง ๊ฐ์์ค๋ฌ์ด ์์๊ณผ ๋ฉ์ถค์ ๋ํด ํ ๊ฐ์ง ์ค์ํ ์ ์ ์ฌ์ฉ์๊ฐ ๋ณผ ์ ์๋ ๊ฒฝ์ฐ์๋ ๊ด์ฐฎ๋ค๋ ๊ฒ์ ๋๋ค. ํด๋น ์ค๋ธ์ ํธ๊ฐ ํ์ด๋ ์ธํ๋ ๊ฒฝ์ฐ ์ ๋๋ฉ์ด์ ์ ์์์ ์ ์ด์ ์ธ์งํ ์ ์์ผ๋ฏ๋ก ๊ฐ์๊ธฐ ์์ํด๋ ๋ฌด๋ฐฉํฉ๋๋ค.
๊ทธ ๋ฐ๋๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค. ์์๊ฐ opacity: 0
์ผ๋ก ํฌ๋ฏธํด์ง๋ ๊ฒฝ์ฐ, ์ด์ฐจํผ ๋ง์ง๋ง์๋ ํ์๋์ง ์๊ธฐ ๋๋ฌธ์ ํธ๋์ง์
์ปค๋ธ๊ฐ ์ ํํ ์ด๋ป๊ฒ ๋๋๋์ง๋ ์ค์ํ์ง ์์ต๋๋ค.
์ด ํ์ ๋๋ถ๋ถ์ โ์ ์ ๊ฒ์ด ๋ ๋ง์ต๋๋คโ๋ก ์์ฝํ ์ ์์ต๋๋ค.
ํ์ด์ง์ ๋ชจ๋ ์์๋ฅผ ์ ๋ถ ์ ๋๋ฉ์ด์ ์ผ๋ก ๋ง๋ค์ด ๋ฃ๊ณ ์ถ์ ์ ํน์ ๋น ์ง๊ธฐ ์ฝ์ต๋๋ค. (์ ๋ ๋ถ๋ช ํ ๊ทธ๋ฐ ์ ์ด ์์ต๋๋ค.) ํ์ง๋ง ๊ฐ์ธ ์น์ฌ์ดํธ๋ผ์ ์ฝ๊ฐ ๊ณผ๊ฒฉํ๊ฒ ๋ง๋ค๊ณ ์ถ์ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋, ๋๋ฌด ๋ง์ ์์ง์์ ๋ ๋ณด๋ค ์ค์ด ๋ง์ ์ ์์ต๋๋ค. CSS๋ก ํธ๋์ง์ ํ ๋๋ ์ผ๋ฐ์ ์ผ๋ก ๊ณผ์ฅํ๊ธฐ๋ณด๋ค๋ ์ ์ ํ๋ ํธ์ด ์ข์ต๋๋ค.
์ ๋๋ฉ์ด์ ์ค์ ์์๊ฐ ๋ง์ด ๋ฐ๋์๋ก ํธ๋์ง์ ์ด ๊ณผ๋ํ๊ฒ ๋ณด์ผ ์ํ์ด ์์ต๋๋ค.
opacity
๋ฅผ 0์์ 1๋ก(๋๋ ๊ทธ ๋ฐ๋๋ก) ์ ๋๋ฉ์ด์
ํ๋ ๊ฒฝ์ฐ, 0.4์์ 1๊ณผ ๊ฐ์ด ๋ ์์ ๋ฒ์๋ก ์๋ํด ๋ณด์ธ์. ์์๊ฐ ์ ์ฒด ํฌ๊ธฐ๋ก ํ์ฅ๋๋ ๊ฒฝ์ฐ, ๋ณด์ด์ง ์์ ์ ๋๋ก ์๊ฒ ๋ง๋ค์ง ๋ง๊ณ , ์์ํ ๋ ๋๋ฌด ๊ทน์ ์ด์ง ์์ ์์ ๋ณํ๋ฅผ ์๋ํด ๋ณด์ธ์.
์ด๋ค ์์๊ฐ ๋ค๋ฅธ ์๋ฆฌ๋ก ์ด๋ํ๋์? ๋๋ถ๋ถ์ ๊ฒฝ์ฐ, ์ด๋ฌํ ์์ง์์ ์ฝ 5~40ํฝ์ ๋ฒ์์์ ์ด๋ฃจ์ด์ ธ์ผ ํฉ๋๋ค. ์ด๋ณด๋ค ์งง์ผ๋ฉด ์์ง์์ด ๋๋ฌด ๋ฏธ๋ฌํด์ ๋์น์ฑ์ง ๋ชปํ ์ ์๊ณ , ๋๋ฌด ๊ธธ๋ฉด ๋ถ๋๋ฌ์ด ์ฌ๋ผ์ด๋๊ฐ ์ด์ํ๊ฒ ๋๊ปด์ง ์ ์์ต๋๋ค.
๋ค์์ opacity
, translateY
๋ฐ scale
์ ์ ๋๋ฉ์ด์
ํ๋ ํธ๋์ง์
์ ์์์
๋๋ค. ๋จผ์ ๋ฑ์ฅํ์ง๋ง ๋น๊ต์ ๊ธด ์ ๋๋ฉ์ด์
(์ฃผํฉ์)๊ณผ ์กฐ๊ธ ๋ ๊ฐ์ํํ๊ณ ๋น ๋ฅด๊ฒ ํํํ ์ ๋๋ฉ์ด์
(ํ๋์)์ ๋น๊ตํด ๋ณด์ธ์.
๋๋ฌด ๋ง์ ๊ฒ์ ํ๋ ๊ฒ์ ์๋ฌด๊ฒ๋ ํ์ง ์๋ ๊ฒ๋ณด๋ค ๋์ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ํธ๋์ง์ ์ด ์ถฉ๋ถํ ํจ๊ณผ์ ์ผ ์ ์๋ ์ง์ ์ ์ฐพ๊ณ , ๊ทธ ์ด์ ๋์๊ฐ์ผ ํ๋ค๋ฉด ์ ์คํ๊ฒ ์งํํ์ธ์.
๋ธ๋ผ์ฐ์ ์ linear
, ease
, ease-in
, ease-out
, ๊ทธ๋ฆฌ๊ณ ease-in-out
๊ณผ ๊ฐ์ ๋ช ๊ฐ์ง ๊ธฐ๋ณธ์ผ๋ก ์ ๊ณต๋๋ ์ด์ง ์ปค๋ธ๊ฐ ์๋ค๋ ๊ฒ์ ์ด๋ฏธ ์๊ณ ๊ณ์ค ๊ฒ์
๋๋ค.
ํ์ง๋ง ์ด ๋ค์ฏ ๊ฐ์ง ํ์ด๋ฐ ๊ธฐ๋ฅ์ ์ผ๋ถ ์ํฉ์์ ํธ๋ฆฌํ๊ณ ์ ์ฉํ์ง๋ง ๋งค์ฐ ๋ณดํธ์ ์ด๊ธฐ๋ ํฉ๋๋ค. (์จ๋ผ์ธ ๋๊ตฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ๋ด์ฅ๋ ์ ๋๋ฉ์ด์ ์ค ์๋น์๋ ์ ํ์ ํญ์ด ๋๊ธด ํ์ง๋ง ๋์ผํ ํํ๋ฐฉ์์ ๋น ์ง๊ฒ ๋๊ธฐ ์ฝ์ต๋๋ค).
์์ง์์ ์ต๋ํ ํ์ฉํ๊ณ ์ถ๋ค๋ฉด, ๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ช ๋ช ๋ ์ต์ ์ ๋ฒ์ด๋๋ณด๋ ๊ฒ์ด ์ข์ต๋๋ค.
Bootstrap์ด๋ Tailwind๋ฅผ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ฌ์ฉํ์ฌ ๊ตฌ์ถํ ์ฌ์ดํธ๊ฐ ์ผ๋ฐ์ ์ผ๋ก ๋ณด์ผ ์ํ์ด ์๋ ๊ฒ์ฒ๋ผ, ์ผ๋ฐ์ ์ธ ์ด์ง ์ปค๋ธ๋ UI๋ฅผ ๋จ์กฐ๋กญ๊ณ ํ์ผ์ ์ผ๋ก ๋ณด์ด๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
์ด์ ๋ํ ๋์์ผ๋ก VS Code์๋ ๋ค์ํ ์ต์
์ด ์๋ cubic-bezier
์ปค๋ธ์ ๋ํ ๋๋ผ์ด ์๋ ์์ฑ ๊ธฐ๋ฅ์ด ์์ต๋๋ค. CSS ์ปจํ
์คํธ์์ cubic-bezier
๋ฅผ ์
๋ ฅํ๊ธฐ ์์ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋๋กญ๋ค์ด์ด ํ์๋ฉ๋๋ค.
์ด ๋ชจ๋ ํ๋ฆฌ์ ์ ์ดํด๋ณด๊ณ ์ฌ์ฉํด ๋ณด๊ณ ์ถ์ผ์๋ค๋ฉด ์ ์ด์ง ํ๋ ์ด๊ทธ๋ผ์ด๋์์ ๋ค๋ฃจ๊ณ ์์ต๋๋ค.
๋ ๋ค๋ฅธ ํ๋ฅญํ ์ต์ ์ ๋ธ๋ผ์ฐ์ ์ ๊ฐ๋ฐ ๋๊ตฌ๋ฅผ ์ด๊ณ ๊ทธ ์์ ์๋ ์ด์ง ์ปค๋ธ๋ฅผ ์ฌ์ฉํด ๋ณด๋ ๊ฒ์ ๋๋ค.
๋ชจ๋ ์ฃผ์ ๋ธ๋ผ์ฐ์ ์๋ ๋ค์ํ ์ต์
์ ์๋ํ๊ณ ์กฐ์ ํ ์ ์๋ ์๋๋ฐ์ค๋ก ์ฌ์ฉํ ์ ์๋ ์ด์ง ํจ๋์ด ์์ต๋๋ค. ์ด ํจ๋์ ์ก์ธ์ค ํ๋ ค๋ฉด ๊ฐ๋ฐ ๋๊ตฌ๋ฅผ ์ด๊ณ CSS ์คํ์ผ ํจ๋์์ cubic-bezier
๊ฐ ์์ ์๋ ์ปค๋ธ ์์ด์ฝ์ ํด๋ฆญํฉ๋๋ค. (์์ด์ฝ์ ๋ค๋ฅด์ง๋ง ์ํฌํ๋ก์ฐ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ๋ธ๋ผ์ฐ์ ์์ ๋์ผํฉ๋๋ค.)
ํ์ง๋ง ์ด์ง ์ปค๋ธ๋ฅผ ์ด๋ป๊ฒ ์ ์ํ๋ , ์๊ฐ์ ๋ค์ฌ ๋ฏธ์ธํ๊ฒ ์กฐ์ ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. cubic-bezier
๋ฅผ ์ฌ์ฉํ๊ณ ์์ ํ๋ ๊ฒ์ ๋๋ ค์ํ์ง ๋ง์ธ์.
๋ธ๋ผ์ฐ์ ๋๋ VS Code์ ํ๋ฆฌ์
์ ํ์ฉํ๋ฉด ์ถฉ๋ถํ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๋ง์ฝ ํค์๋ ๊ฐ ๋์ ์ cubic-bezier
๋ฅผ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด, ์ด๋ฏธ ๊ฒ์์์ ์์๊ฐ๊ณ ์๋ ๊ฒ์
๋๋ค.
์ฌ๋ฌ๋ถ์ด ์ปฌ๋ฌ ํ๋ ํธ๋ก ๋ฏธ๋ฆฌ ์ ์๋ CSS ๋ค์๋ ์ปฌ๋ฌ๋ง ์ฌ์ฉํ๋๋ก ์ ํํ๊ธธ ์์น ์์ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์, ๋น์ ์ ํธ๋์ง์ ๋ํ ์์์ ๋ฏธ๋ฆฌ ์ ์๋ ์ปค๋ธ์๋ง ์ ํ๋์ง ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์ด ๊ธฐ๋ฅ์ด ํญ์ ์ ์ฉํ ๊ฒ์ ์๋์ง๋ง, transform
์ผ๋ก ํญ๋ชฉ์ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ๋ opacity
๋ ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ์ฒ๋ผ, ๋จ์ผ ์์์ ํ ๋ฒ์ ๋ ๊ฐ ์ด์์ ํ๋กํผํฐ๋ฅผ ์ ๋๋ฉ์ด์
ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ ์ ์์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ด ๋ ํ๋กํผํฐ์ ๋์ผํ cubic-bezier
์ปค๋ธ๋ฅผ ์ ์ฉํ ์ ์์ต๋๋ค.
/* โ ์ข์ง๋ง ๋ ๋์์ง ์ ์์ต๋๋ค. */
.my-element {
transition: all cubic-bezier(0.5, 0, 0.5, 1) 0.5s;
}
/* โ ์ด ๋ํ ์ด์์ ์ด์ง๋ ์์ต๋๋ค. */
@keyframes scale_and_appear {
from {
opacity: 0;
transform: scale(0);
}
}
.my-element {
animation: scale_and_appear 0.5s cubic-bezier(0.5, 0, 0.5, 1) forwards;
}
๊ฒฝ์ฐ์ ๋ฐ๋ผ์๋ ๊ด์ฐฎ์ ๋ณด์ผ ์๋ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ํธ๋์ง์ ๋๋ ๋ชจ๋ ํ๋กํผํฐ์ ๋ํด ๋์ผํ ์ปค๋ธ๊ฐ ์ค์ ๋ก ๋์ํ์ง ์๋ ์ํฉ์ด ์์ ์ ์์ต๋๋ค.
transform
์ ์ ์๋ํ๋ ์ด์ง ์ปค๋ธ๊ฐ ํ์ด๋์๋ ์ ํฉํ์ง ์์ ์ ์์ต๋๋ค. ์ด๋ด ๋๋ CSS ํ๋กํผํฐ๋ณ๋ก ๊ณ ์ ํ ์ด์ง์ ์ค์ ํ๋ ๊ฒ์ด ํธ๋ฆฌํฉ๋๋ค.
์ด๋ฌํ ๊ฒฝ์ฐ @keyframes
์ ๋๋ฉ์ด์
์ ํ๋กํผํฐ๋ณ๋ก ๋ถํ ํ๊ฑฐ๋ ์ฌ๋ฌ transition
์ ์ง์ ํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ transition
๊ณผ animation
๋ชจ๋ ์ฌ๋ฌ ๊ฐ์ ํ์ฉํ ์ ์์ผ๋ฏ๋ก ๊ฐ ํ๋กํผํฐ๋ง๋ค ๋ค๋ฅธ ์ปค๋ธ๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค.
/* ๐ ๊ฐ ํ๋กํผํฐ์ ๊ณ ์ ํ ์ปค๋ธ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ ์ข์ต๋๋ค. */
.my-element {
transition: opacity linear 0.5s, transform cubic-bezier(0.5, 0, 0.5, 1) 0.5s;
}
/* ๐ ๋ ๊ฐ์ ์ ๋๋ฉ์ด์
์ ์ฌ์ฉํ์ฌ ๋ ๋ค ์ ์ฉํฉ๋๋ค. */
@keyframes scale {
from {
transform: scale(0);
}
}
@keyframes appear {
from {
opacity: 0;
}
}
.my-element {
animation: scale 0.5s cubic-bezier(0.5, 0, 0.5, 1) forwards, appear 0.5s
linear forwards;
}
๋ค์์ ๋ฐ๋ชจ์
๋๋ค. ์์๊ฐ ๋ฒ๊ฐ์ ๊ฐ๋ฉฐ ๋ค์ด์ค๊ณ ๋๊ฐ ๋ ์ผ์ชฝ ์ฌ๊ฐํ์ opacity
์ scale
์ด ๋์ผํ ๊ฐ์๋๋ฅผ ๋ฐ๋ฅด๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ์ค๋ฅธ์ชฝ์์๋ opacity
๊ฐ ๊ณ ์ ํ ์ ํ ์ปค๋ธ๋ฅผ ๋ฐ๋ฆ
๋๋ค.
์ด๋ ๊ฒ์ด ๋ ๋ซ๋์? ๊ธ์์, ๊ทธ๊ฒ์ ์ฌ๋ฌ๋ถ์ด ์ํ๋ ํจ๊ณผ๊ฐ ๋ฌด์์ธ์ง์ ๋ฐ๋ผ ๋ค๋ฆ ๋๋ค.
๋ค์ ๋งํ์ง๋ง, ์ด ๊ธฐ๋ฅ์ ์์ฃผ ์ฌ์ฉ๋์ง๋ ์์ง๋ง ๋งค์ฐ ํธ๋ฆฌํ๊ณ ์์ด๋ฒ๋ฆฌ๊ธฐ ์ฝ๊ธฐ ๋๋ฌธ์, ์ด๋ฒ ๋ชฉ๋ก์์ ํ ์๋ฆฌ๋ฅผ ์ฐจ์งํ์ต๋๋ค.
๊ฐ ํ๋กํผํฐ์ ์ง์์๊ฐ์ ๋ณ๊ฒฝํ ์๋ ์์ง๋ง, ๋๋ฌด ์๋ฑํ๊ฒ ์ค์ ํ๋ฉด ๋๊ธฐํ๊ฐ ์ ๋๋ก ๋์ง ์์ ์ ์์ผ๋ ์กฐ์ฌํด์ผ ํฉ๋๋ค.
์ฌ๋ฌ ์์(๋๋ ์ฌ๋ฌ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ ํ๋์ ์์)๋ฅผ ํธ๋์ง์
ํ ๋ animation-delay
๋๋ transition-delay
์ด ๊ฐ์ ธ์ฌ ์ ์๋ ํจ๊ณผ๋ฅผ ๊ณผ์ํ๊ฐํด์๋ ์ ๋๋ฉฐ, ํนํ ๋จ๊ณ์ ์ธ ์ง์ฐ์ ์ฌ์ฉํ ๋ ๋์ฑ ๊ทธ๋ ์ต๋๋ค.
๊ฐ ์ค๋ง๋ค ์๋ก์ด ์ข ๋ฅ์ ์ ๋๋ฉ์ด์ ์ง์ฐ์ ์ฌ์ฉํ์ฌ ์๋ก ๋ค๋ฅธ ํจ๊ณผ๋ฅผ ๋ง๋ค์ด๋ด๋ ์ด CodePen ์์๋ฅผ ์ดํด๋ณด์ธ์.
์์ ์์์์ ์ฒซ ๋ฒ์งธ ์ค์ ํ๊บผ๋ฒ์ ํธ๋์ง์ ๋ฉ๋๋ค. ๊ด์ฐฎ์ง๋ง ํน๋ณํ ๋์ ๋๊ฒ ์ ๋ช ํ์ง๋ ์์ต๋๋ค.
๊ทธ๋ค์์ ์ด์ด์ง๋ ๊ฐ ์ค์๋ ๊ฐ ๊ธ์์ ๋ค์ํ ์ ๋์ ์ง์ฐ์ด ์ ์ฉ๋์ด ์ฌ๋ฏธ์๋ โ๋ฐ์ด์ค ์ธโ ํจ๊ณผ๋ฅผ ์ฐ์ถํฉ๋๋ค. ์ฌ์ง์ด๋ ๊ฑฐ๊พธ๋ก ํ์๋๋ ์ค๋ ์๊ณ , ์ค๊ฐ์์ ๋ฐ๊นฅ์ชฝ์ผ๋ก ํ์๋๋ ์ค๋ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ ์ ๊ฒ์ด ๋ ๋ง๋ค๋ ๊ฒ์ ๊ธฐ์ตํ์ธ์. ํนํ ํธ๋์ง์ ๋๋ ์์๊ฐ ๋ง์ ๋๋ ์ด๋ฐ ์ ๋๋ฉ์ด์ ์ ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ๊ธฐ ์ฝ์ต๋๋ค. ์ด ์์ ๋ ๋ฐ๋ชจ ๋ชฉ์ ์ผ๋ก ์ผ๋ฐ์ ์ผ๋ก ๊ถ์ฅํ๋ ๊ฒ๋ณด๋ค ํจ์ฌ ๋ ๊ณผ์ฅ๋๊ฒ ๋ง๋ค์์ผ๋ฉฐ, ์ผ๋ฐ์ ์ธ UI ์์ ์์๋ ๋๋ฌด ๋ฒ์กํด ๋ณด์ผ ์ ์์ต๋๋ค.
ํ์ง๋ง ์ด ํจ๊ณผ๋ฅผ ์ข ๋ ์ฌ์ธํ๊ฒ ์ ์ฉํ ์ ์๋ ๊ธฐํ๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ก๋ฉ ํ๋ฉด์ ์ ์ ๋ฃ๋ ๊ฒ์ ์ด๋จ๊น์? ๋๋ก์ด๋ ํ๋ฒ๊ฑฐ ๋ฉ๋ด๊ฐ ์ด๋ฆด ๋ ๊ฐ ํญ๋ชฉ์ด ์ฝ๊ฐ ์ง์ฐ๋ ์ํ๋ก ํ์๋๋ ๊ฒ์ ์ด๋จ๊น์?
๋ค์ ๋งํ์ง๋ง, ์งง๊ณ ๊ฐ๊ฒฐํ๊ฒ ์ ์งํ์ธ์. ํ์ง๋ง ๋จ๊ณ์ ์ง์ฐ์ ์ ์ ์ฉํ๋ฉด ์น ํธ๋์ง์ ์ ํ ๋จ๊ณ ๋ ๋ฐ์ ์ํฌ ์ ์์ต๋๋ค.
๋ค์ํ ์ข ๋ฅ์ ์ด์ง ์ปค๋ธ๋ฅผ ์ดํด๋ณธ ์ ์ด ์๋ค๋ฉด ease in(์ฒ์ฒํ ์์), ease out(์ฒ์ฒํ ๋), in-out(๋ณธ์ง์ ์ผ๋ก ๋ ๋ค, ์ค๊ฐ์ ๋น ๋ฅด๊ณ ์์๊ณผ ๋์ ๋๋ฆผ)์ ์ธ ๊ฐ์ง ์ ํ์ด ์๋ค๋ ๊ฒ์ ์ ์ ์์ ๊ฒ์ ๋๋ค.
ํธ๋์ง์ ์ ๊น๋ค๋ก์ด ์ ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ๋ณดํต ๋ค์ด์ค๋ ์์์ ๋ํ ํธ๋์ง์ ์ ease-out์ผ๋ก ์ฒ๋ฆฌํ๊ณ , ๋๊ฐ๋ ์์์ ๋ํ ํธ๋์ง์ ์ ease-in์ผ๋ก ์ฒ๋ฆฌํ๊ณ ์ถ์ด ํฉ๋๋ค.
์ ๊ฐ ๊ธ์ ์ฐ๋ ๊ฒ๋งํผ์ด๋ ์ฌ๋ฌ๋ถ๋ ์ฝ๊ธฐ ํผ๋์ค๋ฌ์ ์ ๊ฒ์ ๋๋ค. ๋ค์ ๋์๊ฐ ๋ณด๊ฒ ์ต๋๋ค.
ํ์ด์ง ์ ํ์ด๋ ๋ผ์ดํธ๋ฐ์ค์์ ๋ ์ด๋ฏธ์ง ์ฌ์ด๋ฅผ ์ฌ๋ผ์ด๋ฉํ๋ ๊ฒ์ฒ๋ผ ํ ์์๊ฐ ํ์ด์ง๋ฅผ ๋ ๋๋ฉด ๋ค๋ฅธ ์์๊ฐ ๊ทธ ์๋ฆฌ๋ฅผ ๋์ ํ๋ ์ ๋๋ฉ์ด์ ์ด ์๋ค๊ณ ๊ฐ์ ํด ๋ณด๊ฒ ์ต๋๋ค.
์ฌ์ฉ์๋ ์ด๋ฅผ ํ๋์ UI ํธ๋์ง์ ์ผ๋ก ์ธ์ํฉ๋๋ค. ํ์ง๋ง ์ค์ ๋ก๋ ์ด์ ์์๊ฐ ๋๊ฐ ํ ์ ์์๊ฐ ๋ค์ด์ค๋ ๋ ๊ฐ์ง ํธ๋์ง์ ์ ๋๋ค.
์ฆ, ์์๋ฅผ ํธ๋์ง์ ํ ๋ ์ฒ์ฒํ ์์ํ๋ ค๋ฉด ease-in์ด ํ์ํฉ๋๋ค.
๋ฐ๋๋ก ์์๊ฐ ๋ค์ด์ค๋๋ก ํธ๋์ง์ ํ ๋๋ ์ผ๋ฐ์ ์ผ๋ก ์์ํ ๋ฉ์ถฐ์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๊ธฐ ์ํด์๋ ease-out์ด ํ์ํฉ๋๋ค.
์ด ๋ ๊ฐ์ง๋ฅผ ํจ๊ป ์ฌ์ฉํ๋ฉด ํ๋์ ๋งค๋๋ฌ์ด ์์ง์ ํจ๊ณผ๋ฅผ ๋ผ ์ ์์ต๋๋ค.
๋ชจ๋ CSS ํ๋กํผํฐ๊ฐ ๋ชจ๋ ๋๋ฐ์ด์ค์ ๋ธ๋ผ์ฐ์ ์์ ๋ถ๋๋ฝ๊ฒ ์ ๋๋ฉ์ด์ ๋๊ฑฐ๋ ํธ๋์ง์ ๋ ์ ์๋ ๊ฒ์ ์๋๋๋ค. ์ค์ ๋ก ๋๋ฐ์ด์ค์ ํ๋์จ์ด ๊ฐ์์ ํ์ฉํ์ฌ ๊ฐ์ฅ ๋ถ๋๋ฝ๊ณ ๋์ ํ๋ ์๋ฅ ๋ก ํธ๋์ง์ ํ ์ ์๋ ๊ฒฝ์ฐ๋ ๊ทน์์์ ๋ถ๊ณผํฉ๋๋ค.
์ฐธ๊ณ :
ํ๋์จ์ด ๊ฐ์์ ํ์ฉํ๊ธฐ ์ํด ํ๋์จ์ด ๊ฐ์์ด ๋ฌด์์ธ์ง ์ดํดํ๋ ๊ฒ์ ์ค์ํ์ง ์์ต๋๋ค. ํ์ง๋ง ๊ถ๊ธํ ์ ์ด ์๋ค๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ๊ธฐ๊ธฐ์ ๊ทธ๋ํฝ ์ฒ๋ฆฌ ์ฅ์น(GPU)์ ๋์์ ๋ฐ์ ๋ ๋๋ง์ ํจ์ฌ ๋น ๋ฅด๊ณ ๋ถ๋๋ฝ๊ฒ ๋ง๋ค ์ ์๋ค๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค(๋จ, ํน์ ์กฐ๊ฑด์์๋ง ๊ฐ๋ฅํฉ๋๋ค).
ํญ์ ํ๋์จ์ด ๊ฐ์์ด ๊ฐ๋ฅํ ํ๋กํผํฐ๋ ์๋์ ๊ฐ์ต๋๋ค.
transform
(translate
, scale
, rotate
๋ฐ ๋ชจ๋ 3D ๊ด๋ จ ๊ธฐ๋ฅ์ ํฌํจํฉ๋๋ค.)opacity
๋๋๋ก ํ๋์จ์ด ๊ฐ์์ด ๊ฐ๋ฅํ ํ๋กํผํฐ๋ ์๋์ ๊ฐ์ต๋๋ค.
filter
, ๋ธ๋ผ์ฐ์ ๋ฐ ์ด๋ค ํํฐ์ธ์ง์ ๋ฐ๋ผ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค.์บ๋ฒ์ค๋ WebGL๊ณผ ๊ฐ์ด CSS๊ฐ ์๋ ๋ค๋ฅธ ๊ฒ๋ค๋ ํ๋์จ์ด ๊ฐ์์ ํ์ฉํ ์ ์์ต๋๋ค. ํ์ง๋ง ์ฌ๊ธฐ์๋ ์์ธํ ์ค๋ช ํ์ง ์๊ฒ ์ต๋๋ค.
์์ ๋ชจ๋ ๋ด์ฉ์ ์์ฝํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์์๋ฅผ ์ด๋, ํฌ๊ธฐ ์กฐ์ ๋๋ ํ์ ํ๋ ค๋ฉด ํญ์ CSS transform
ํ๋กํผํฐ๋ฅผ ์ฌ์ฉํ์ธ์.
transform
์ ์ ์ฉํ๋ฉด ๋ ์ด์์์ ์ํฅ์ ๋ฏธ์น์ง ์์ผ๋ฏ๋ก ์ฌ๊ณ์ฐ์ ์ต์ํํ๊ณ ๋ธ๋ผ์ฐ์ ๋ฅผ ์ํํ๊ฒ ์๋์ํฌ ์ ์์ต๋๋ค. ์น์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ์ ๋๋ฉ์ด์
๊ณผ ํธ๋์ง์
์ ๋๋ถ๋ถ transform
๊ณผ opacity
๋ฅผ ์กฐํฉํ์ฌ ๊ตฌํํ ์ ์์ต๋๋ค.
ํ์ง๋ง ์ด๋ค ์์
์ ํ๋ ์์์ ํฌ๊ธฐ๋ ๋ฐฐ์น๋ฅผ ์ง์ ๋ณ๊ฒฝํ์ง ๋ง์ธ์. height
, width
, border
, margin
, padding
๋ฑ ํ์ด์ง์์ ์์์ ๋ ์ด์์์ ์ํฅ์ ์ค ์ ์๋ ํ๋กํผํฐ๋ฅผ ๋ณ๊ฒฝํ๋ฉด ๋ณ๊ฒฝ์ ํ์ํ ๊ณ์ฐ์ผ๋ก ์ธํด ํ์ด์ง ์๋๊ฐ ๋์ ๋๊ฒ ๋๋ ค์ง ์ ์์ต๋๋ค.
์ด๋ฌํ ํ๋กํผํฐ์ ์ ๋๋ฉ์ด์ ์ ์ ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ ๊ฐ๋ฅํ ๋ชจ๋ ์ฅ์น์ ๋ธ๋ผ์ฐ์ ์์ ํ ์คํธํด์ผ ํฉ๋๋ค. ์ ๊ฒฝํ์ Safari๋ ํนํ iOS์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๋๋ฉ์ด์ ์ ์ ๋๋ก ์ฒ๋ฆฌํ๋ ๋ฐ ๋งค์ฐ ์ทจ์ฝํฉ๋๋ค. Firefox๋ ๊ทธ๋ค์ง ๋ค์ฒ์ง์ง๋ ์์ง๋ง ๊ณ ์ฑ๋ฅ ๋๋ฐ์ด์ค์์๋ง ํ ์คํธํ๋ ๊ฒฝ์ฐ ์ด๋ฅผ ๊นจ๋ซ์ง ๋ชปํ ์๋ ์์ต๋๋ค. ์ ์ธ๊ณ์ ๋ง์ ์ฌ๋๋ค์ด ์ ์ฌ์ Android๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฏ๋ก ํ ์คํธ์์ ์ ์ธํด์๋ ์ ๋ฉ๋๋ค.
์ฐธ๊ณ :
ํ๋์จ์ด ๊ฐ์์ด ๊ฐ๋ฅํ๋ค๊ณ ํด์ ๋ฐ๋์ ๊ฐ์์ด ๋๋ ๊ฒ์ ์๋๋๋ค. ์ต์ข ๊ฒฐ์ ์ ๋ธ๋ผ์ฐ์ ๊ฐ ๋ด๋ฆฝ๋๋ค.
GPU๋ ๋ ๋น ๋ฅด์ง๋ง ๋ ๋ง์ ์๋์ง๋ฅผ ์๋นํ๋ค๋ ์ ์ฌ์ ์ธ ์ด์ ๋ ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ธฐ๊ธฐ์ ์ ์์ด ๋ถ์กฑํ๊ฑฐ๋ ๋ฐฐํฐ๋ฆฌ ์ ์ฝ ๋ชจ๋์ ์๋ ๊ฒฝ์ฐ ๋ธ๋ผ์ฐ์ ๋ ๊ทธ๋ํฝ ์ฑ๋ฅ๋ณด๋ค ๋ฐฐํฐ๋ฆฌ๋ฅผ ์ ํํ ์ ์์ต๋๋ค.
will-change
๋ฅผ ์ฌ์ฉํ์ธ์.์ด๋ก ์์ผ๋ก๋ ๋ถ๋๋ฝ๊ณ ์ํํ๊ฒ ์๋ํด์ผ ํ์ง๋ง ์ค์ ๋ก๋ ๋๊ธฐ๊ฑฐ๋ ์๊ฑฑ๊ฑฐ๋ฆฌ๋ ์ ๋๋ฉ์ด์
๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด(๋ค์ ํ ๋ฒ ๋งํ์ง๋ง, ์ ๋ Safari์์ ์ฃผ๋ก ์ด๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ง๋ง ์ฌ์ฉ์๋ง๋ค ๋ค๋ฅผ ์ ์์ต๋๋ค) will-change
ํ๋กํผํฐ๋ฅผ ํ์ฉํ์ธ์.
๊ธฐ์ ์ ์ธ ์ธ๋ถ ์ฌํญ์ ์์ธํ ์ค๋ช
ํ์ง ์๊ฒ ์ง๋ง, ๊ธฐ๋ณธ์ ์ผ๋ก will-change
๋ ๋ธ๋ผ์ฐ์ ์ ๋ณ๊ฒฝ ์ฌํญ์ ์๋ ค์ฃผ์ด(๊ธฐ์ตํ๊ธฐ ์ฝ๋๋ก) ๋ค๋ฅธ ๊ณ์ฐ์ ๊ฑด๋๋ธ ์ ์๊ฒ ํด ์ค๋๋ค. ์ด๋ ๋ง์น ๋ ์คํ ๋์ ์ผํ ์ ์ฒด๊ฐ ํ์ ๋ ๋ฉ๋ด๋ง ์ฃผ๋ฌธํ ๊ฒ์ด๋ผ๊ณ ๋ฏธ๋ฆฌ ์๋ ค์ฃผ๋ ๊ฒ๊ณผ ๋น์ทํ๋ฉฐ, ์ฃผ๋ฐฉ/๋ธ๋ผ์ฐ์ ๊ฐ ์ง์คํด์ผ ํ ์ฌํญ๊ณผ ์ ๊ฒฝ ์ธ ํ์๊ฐ ์๋ ์ฌํญ์ ์๋ ค์ค์ผ๋ก์จ ์๊ฐ์ ์ ์ฝํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์ด๋ค ์์์ transform
ํ๋กํผํฐ๋ง ๋ณ๊ฒฝ๋ ๊ฒ์ด๋ผ๋ ๊ฒ์ ํ์คํ ์๊ณ ์๊ณ , ๋ธ๋ผ์ฐ์ ์ will-change: transform
์ ํตํด ์ด๋ฅผ ๋ฏธ๋ฆฌ ์๋ ค์ค ์ ์๋ค๋ฉด ํ์ด์ง์์ ๋ฌด์ธ๊ฐ๊ฐ ๋ณ๊ฒฝ๋ ๋ ํด๋น ์์๋ฅผ ๋ค์ ๋ ๋๋ง ํ๊ธฐ ์ํด ๊ฑฐ์ณ์ผ ํ๋ ๋ค๋ฅธ ๋ชจ๋ ๋จ๊ณ๋ฅผ ์์ ํ๊ฒ ๊ฑด๋๋ธ ์ ์์ต๋๋ค.
์ต์์ ์๋๋ฆฌ์ค๋ ๋ ์ด์์์ ์ํฅ์ ์ฃผ์ง ์๋ ํ๋กํผํฐ์ ํจ๊ป ์ฌ์ฉํ์ฌ ๋ธ๋ผ์ฐ์ ๊ฐ ๊ณ์ฐ์ ์ ์ ์ผ๋ก GPU๋ก ๋๊ฒจ ๊ฐ์ฅ ๋์ ํ๋ ์ ์๋์ ๋ถ๋๋ฌ์ด ์ฑ๋ฅ์ ์ป๋ ๊ฒ์ ๋๋ค.
ํ์ง๋ง will-change
๋ ๋ง๋ณํต์น์ฝ์ด ์๋๋๋ค. ์คํ๋ ค ๊ณผ๋ํ๊ฒ ์ฌ์ฉํ๋ฉด ์ฑ๋ฅ์ ์
์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
๋ธ๋ผ์ฐ์ ๋ will-change
๊ฐ ์ ์ฉ๋ ๋ชจ๋ ์์์ ๋ํด ์๋ก์ด ๋ ์ด์ด(์ผ์ข
์ ์๋ก์ด z-index
๋ ๋ฒจ)๋ฅผ ์์ฑํ๊ธฐ ๋๋ฌธ์ ๊ฒฐํฉ์ด ์กฐ๊ธ ๋ ๋ณต์กํด์ง๋๋ค. ์ ์คํ๊ฒ ์ฌ์ฉํ๋ฉด ์ด ๊ฑฐ๋๋ ๊ทธ๋งํ ๊ฐ์น๊ฐ ์์ต๋๋ค. ํ์ง๋ง ๋ถ์ฃผ์ํ๊ฒ ์ฌ์ฉํ๋ฉด ๋ธ๋ผ์ฐ์ ์ ๋ ๋ง์ ์์
์ ์ ๋ฐํ ์ ์์ต๋๋ค. ๋ค์์ MDN์์ ์ธ์ฉํ ๋ด์ฉ์
๋๋ค.
๊ฒฝ๊ณ : will-change๋ ๊ธฐ์กด์ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ ์ตํ์ ์๋จ์ผ๋ก ์ฌ์ฉํ๋๋ก ๊ณ ์๋์์ต๋๋ค. ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ๋ฏธ๋ฆฌ ์์ธกํ๊ธฐ ์ํด ์ฌ์ฉํด์๋ ์ ๋ฉ๋๋ค.
์ผ๋ถ ์๋ฃ์์๋ ์ ๋๋ฉ์ด์
์ด๋ ํธ๋์ง์
์ ์ will-change
๊ธฐ๋ฅ์ ์ ์ฉํ ๋ค์, ๋์ค์ ์ ๊ฑฐํ ๊ฒ์ ๊ถ์ฅํ๊ธฐ๋ ํฉ๋๋ค.
๋ค์ ํ๋ฒ ๊ฐ์กฐํ์ง๋ง, ๊ฐ์ฅ ์ข์ ์กฐ์ธ์ ์ฒ ์ ํ๊ฒ ํ ์คํธํ๋ผ๋ ๊ฒ์ ๋๋ค.
์ฌ์ฉ์๋ ๊ธฐ๊ธฐ ์ค์ ์ ํตํด ์ถ์๋ ๋ชจ์ ์ ์ ํธํ๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ผ ์ ์์ต๋๋ค.
์ฌ์ฉ์๊ฐ ์ด๋ ๊ฒ ์ ํํ๋ ์ด์ ๋ ๋ค์ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์๋ฃ์ ์ธ ์ด์ ๋ก๋ ํ๊ธฐ์ฆ, ๋ฉ์ค๊บผ์ ๋๋ ๊ณผ๋ํ ์์ง์์ ๋ ธ์ถ๋ ๋ ๋ฐ์์ ์ผ์ผํฌ ์๋ ์์ต๋๋ค. ๋๋ ์ฌ์ฉ์๊ฐ ๋จ์ง ์์ง์์ด ์ง๋์น๊ฒ ๋์ ๋์ด์ ๊ฑฐ์ฌ๋ฆฌ๊ฒ ๋๋ ์๋ ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ ์ด๋ฌํ ์ ํ์ ํ๋์ง๋ ๋ณ๋ก ์ค์ํ์ง ์์ต๋๋ค. ์ฐ๋ฆฌ ๊ฐ๋ฐ์์ ์ผ์ ์ด๋ค ๊ฒฝ์ฐ๋ ์ฌ์ฉ์์ ์ ํธ๋ฅผ ์์ฉํ๋ ๊ฒ์ ๋๋ค.
์ด๋ฅผ CSS๋ฅผ ์ฌ์ฉํ์ฌ ๋ฏธ๋์ด ์ฟผ๋ฆฌ๋ฅผ ์ด์ฉํด ๊ตฌํํ ์ ์์ต๋๋ค. (์: ์๋์ ์ฝ๋๋ MDN์์ ์ ๊ณตํฉ๋๋ค.)
@media (prefers-reduced-motion) {
/* ์ฌ์ฉ์ ์ค์ ์ด ์ถ์๋ ๋ชจ์
์ผ๋ก ์ค์ ๋ ๊ฒฝ์ฐ ์ ์ฉํ ์คํ์ผ */
}
๋๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ ์๋ ์์ต๋๋ค. ์ด ์์ ์์๋ ์ถ์๋ ๋ชจ์
๊ธฐ๋ณธ ์ค์ ์ด ์กด์ฌํ๋์ง ํ์ธํ๊ณ , ์กด์ฌํ๋ ๊ฒฝ์ฐ <html>
ํ๊ทธ์ ํด๋์ค๋ฅผ ์ถ๊ฐํฉ๋๋ค.
const prefersReducedMotion = window.matchMedia(
'(prefers-reduced-motion: reduce)'
).matches;
if (prefersReducedMotion) {
document.documentElement.classList.add('reduce-motion');
}
์ด ์๋ฐ์คํฌ๋ฆฝํธ ์์ ์ ๋ฐ๋ผ ํ์ด์ง์ ๋์ ์์์ CSS๋ฅผ ์ถ๊ฐํ์ฌ ์ค๋ฒ๋ผ์ด๋๋ฅผ ์ค์ ํ ์ ์์ต๋๋ค.
.reduce-motion {
/* ์ฌ๊ธฐ์ ์ถ์๋ ๋ชจ์
์ ์ค์ ํฉ๋๋ค. */
}
๋จ, ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฌ์ฉํ ๋๋ ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋๊ธฐ ์ ์ ๋์์ด ๊น๋ฐ์ด์ง ์๊ณ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๋นํ์ฑํํ ์ฌ์ฉ์๋ฅผ ๋ฐฐ์ ํ์ง ์๋๋ก ํ์ด์ง๊ฐ ์ ์ง์ ์ผ๋ก ํฅ์๋๊ธฐ๋ฅผ ์ํฉ๋๋ค. ๋ฐ๋ผ์ ๋ ๊ฐ์ง ๊ธฐ์ ์ ํผํฉํ๋ ๊ฒ์ด ์ด์์ ์ ๋๋ค.
์ด๋ฌํ ๊ฒฝ์ฐ CSS๋ฅผ ์ ํํ ์ด๋ป๊ฒ ํด์ผ ํ๋์ง์ ๊ดํด์๋ ๋ชจ์ ์ ์ค์ธ๋ค๊ณ ํด์ ๋ชจ์ ์ด ์๊ฑฐ๋ ์ ๋๋ฉ์ด์ ์ด ์ ํ ์๋ ๊ฒ์ ์๋๋ผ๋ ์ ์ ๊ธฐ์ตํ์ธ์.
์ ๊ฐ ์์ฃผ ์ฌ์ฉํ๋ ๊ธฐ๋ฒ ์ค ํ๋๋ ํคํ๋ ์ ์ ๋๋ฉ์ด์ ์ ๋ณ๊ฒฝํ์ฌ ์ถ์๋ ๋ชจ์ ๊ธฐ๋ณธ ์ค์ ์ด ๊ฐ์ง๋ ๊ฒฝ์ฐ์๋ง ํฌ๋ช ๋๋ฅผ ์ฌ์ฉํ๋๋ก ํ๋ ๊ฒ์ ๋๋ค.
@keyframes slide_in {
from {
opacity: 0;
transform: translateY(2rem);
}
}
@keyframes slide_in_reduced {
from {
opacity: 0;
}
}
.animated-thing {
animation-name: slide_in;
}
@media (prefers-reduced-motion) {
.animated-thing {
animation-name: slide_in_reduced;
}
}
์ฌ์ฉ์๊ฐ ์ต์ํ์ ์์ง์์ ์ ํธํ๋ค๊ณ ํด์ ํธ๋์ง์ ์ ์ค์ํ๊ฒ ์๊ฐํ์ง ์๋ ๊ฒ์ ์๋๋๋ค.
๋ํ ๋ชจ์ ์ ๊ทธ๋๋ก ์ ์งํ๋ ๊ฒ์ด ๋ ๋์ ์ํฉ๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ๋ฌด์ธ๊ฐ๊ฐ ๋ก๋๋ ๋ ์งํ๋ฅ ํ์์ค์ ํ์ํ๊ฑฐ๋ ์ค๋์ค ๋๋ ๋น๋์ค ํ์ผ์ ์ฌ์ ํ์๊ธฐ๋ฅผ ํ์ํ๋ ๊ฒฝ์ฐ, ์ด๋ UI์ ํต์ฌ ์ ๋ณด์ ๋๋ค. ์ด๋ฌํ ํ์๊ธฐ๋ฅผ ์์ ํ ์์ ๊ธฐ๋ณด๋ค๋ ์ฌ์ธํ๊ณ ๋์ ๊ฑฐ์ฌ๋ฆฌ์ง ์๊ฒ ํ์ํ ์ ์๋ ๋ฐฉ๋ฒ์ ์ฐพ์๋ณด์ธ์. ์ฌ์ฉ์๊ฐ ์์ง์์ ์จ๊ธธ ์ ์๋๋ก ํ ์๋ ์์ต๋๋ค. ๋๋ ์ ๋ณด๋ฅผ ๋ค๋ฅธ ๋ฐฉ์์ผ๋ก ํํํ๋ ๊ฒ๋ ์ข์ ๋ฐฉ๋ฒ์ผ ์ ์์ต๋๋ค(์๋ฅผ ๋ค์ด ์ ๋๋ฉ์ด์ ๋ง๋ ๋์ ์ซ์ ํผ์ผํธ ์นด์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋๋ค).
์ต์ํ ์ฌ์ฉ์๋ ๋์์๊ณผ GIF๋ฅผ ํฌํจํ ๋ชจ๋ ์ฐ์ ์ ๋๋ฉ์ด์ ์ ์ผ์ ์ค์งํ ์ ์์ด์ผ ํฉ๋๋ค. ๊ทธ๋ฌ๋ ์ด์์ ์ผ๋ก๋ ์ฌ์ฉ์๊ฐ ์ด๋ฏธ ๋ณด๊ณ ์ถ์ง ์๋ค๊ณ ํ์ํ ๊ฒ์ ๊ฐ์ ๋ก ์ฒ๋ฆฌํ๋ ๋์ ๋๋ฐ์ด์ค ์ ํธ๋์ ๋ฐ๋ผ ์ฌ์ฉ์์ ์๊ตฌ๋ฅผ ์์ธกํด์ผ ํฉ๋๋ค.
์ถ์ ๋ชจ์ ๊ณผ ๊ด๋ จ๋ ๋์์ธ์ ๋ํด ๋ ์์ธํ ์์๋ณด๋ ค๋ฉด ์ค๋งค์ฑ ๋งค๊ฑฐ์ง์ Val Head๊ฐ ์ด ์ด ๊ธ์ ์ฐธ์กฐํ์ธ์. ๊ทธ ์์ฒด๋ก ํฐ ์ฃผ์ ์ด์ง๋ง, ์ด ํ์ด ์ผ๋ฐ์ ์ธ ์ง์นจ์ด ๋๊ธธ ๋ฐ๋๋๋ค.
์ด CodePen ๋ฐ๋ชจ๋ ์ด ๊ธ์ ํ์ ๋ชจ๋ ์ ์ฉํ๋ฉด UI ํธ๋์ง์ ์ ๋๋์ด ์์ ํ ๋ฌ๋ผ์ง ์ ์๋ค๋ ๊ฒ์ ๋ณด์ฌ์ค๋๋ค. ์์ชฝ์ โrun animationโ ๋ฒํผ์ ํด๋ฆญํ๋ฉด ํด๋น ์ด์ ํญ๋ชฉ์ด ํธ๋์ง์ ๋๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
๋ ๋ชจ๋ ์์์ ํฌ๊ธฐ ์กฐ์ , ์ด๋, ํ์ด๋์ธ ๋ฑ ๊ธฐ๋ณธ์ ์ผ๋ก ๋์ผํ ์ ๋๋ฉ์ด์ ์ด ์ ์ฉ๋๋ค๋ ์ ์ ์ฃผ๋ชฉํ์ธ์. ํ์ง๋ง ๊ทธ ํธ๋์ง์ (transition)์ ๋ํ ์ผ์ด ํจ๊ณผ๋ฅผ ์์ ํ ๋ฐ๊ฟ(transform) ๋์์ต๋๋ค(๋ง์ฅ๋ ์๋๋ ์์ต๋๋ค).
์ผ์ชฝ(๋นจ๊ฐ์-์ฃผํฉ์) ์ด์ ํญ๋ชฉ์ ๋จ๊ณ์ ์ง์ฐ์ด ์์ผ๋ฉฐ ํฌ๋ช
๋, ์์น ๋ฐ ํฌ๊ธฐ๊ฐ ๋ณํํ๋ฉด์ ํ ๋ฒ์ ๋ชจ๋ ํ์ด๋ ์ธํฉ๋๋ค. ๋ํ ํธ๋์ง์
์ด ๊ฝค ์ค๋ ์ง์๋๋ฉฐ ๋ธ๋ผ์ฐ์ ์ ๊ธฐ๋ณธ ease-out
์ปค๋ธ๋ฅผ ์ฌ์ฉํ๋๋ฐ, ์ด ๊ฒฝ์ฐ ๋์์ง๋ ์์ง๋ง ์ต์ ์ด๋ผ๊ณ ํ ์๋ ์์ต๋๋ค.
๋ฐ๋ฉด ์ค๋ฅธ์ชฝ(ํ๋์) ์ด์์๋ ์ ๋๋ฉ์ด์
์ด ๋จ๊ณ์ ์ผ๋ก ์ง์ฐ๋์ด ํญ๋ชฉ์ด ์ฐจ๋ก๋ก ๋ค์ด์ต๋๋ค. ์ง์ฐ ์๊ฐ๊ณผ ์ด ํธ๋์ง์
์๊ฐ์ ๋ชจ๋ ์๋นํ ์ ์ผ๋ฉฐ ํจ๊ณผ๋ ๋ชจ๋ ๊ทธ๋๋ก ์ ์ง๋์ง๋ง ํจ์ฌ ๋ ์ฌ์ธํฉ๋๋ค. ๋ง์ง๋ง์ผ๋ก, ์ปค์คํ
cubic-bezier
์ปค๋ธ๊ฐ ์ ์ฉ๋์์ต๋๋ค.
์ด ๋ฐ๋ชจ๋ฅผ ํตํด ์ฝ๊ฐ์ ์กฐ์ ์ด ์ผ๋ง๋ ํฐ ์ฐจ์ด๋ฅผ ๋ง๋ค ์ ์๋์ง ์ฝ๊ฒ ์ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
์น์์ ๋๋ง์ ์ ๋๋ฉ์ด์ ์ ์ ์ํด ๋ณด์ธ์! ์ด๋ฒ ํฌ์คํ ์ด ์ฌ๋ฌ๋ถ์๊ฒ ํฅ๋ฏธ๋กญ๊ณ ์ ์ฉํ ์ ๋ณด๊ฐ ๋์๊ธฐ๋ฅผ ๋ฐ๋ผ๋ฉฐ, ๋์ฑ ๊ฐ๋ ฅํ ์ธํฐ๋ํฐ๋ธ ๊ฒฝํ์ ์ ์ํ๋ ๋ฐ ๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
๐ ํ๊ตญ์ด๋ก ๋ ํ๋ฐํธ์๋ ์ํฐํด์ ๋น ๋ฅด๊ฒ ๋ฐ์๋ณด๊ณ ์ถ๋ค๋ฉด Korean FE Article(https://kofearticle.substack.com/)์ ๊ตฌ๋ ํด์ฃผ์ธ์!