๐ ํธ๋์คํผ(Transform)์ ์์์ ์ด๋(translate)
, ํ์ (rotate)
, ํ๋์ถ์(scale)
, ๋นํ๊ธฐ(skew)
ํจ๊ณผ๋ฅผ ๋ถ์ฌํ๊ธฐ ์ํ ํจ์๋ฅผ ์ ๊ณตํ๋ค.
ํธ๋์ง์ (transition)
์ CSS ์คํ์ผ ๋ณ๊ฒฝ์ ๋ถ๋๋ฝ๊ฒ ํํํ๊ธฐ ์ํด duration(์ง์์๊ฐ)์ ๋ถ์ฌํ์ฌ ์๋๋ฅผ ์กฐ์ ํ๋ค.
์ ๋๋ฉ์ด์ (animation)
์ ํ๋์ ์ค๊ฑฐ๋ฆฌ(@keyframes)๋ฅผ ๊ตฌ์ฑํ์ฌ ์ค๊ฑฐ๋ฆฌ ๋ด์์ ์ธ๋ถ ์์ง์์ ์๊ฐ ํ๋ฆ ๋จ์๋ก ์ ์ดํ์ฌ ์์์ ์์ง์์ ํํํ๋ค.
ํธ๋์คํผ(Transform)
์ ์์์ ์ด๋(translate), ํ์ (rotate), ํ๋์ถ์(scale), ๋นํ๊ธฐ(skew) ํจ๊ณผ๋ฅผ ๋ถ์ฌํ๊ธฐ ์ํ ํจ์๋ฅผ ์ ๊ณตํ๋ค. ๋จ ์ ๋๋ฉ์ด์ ํจ๊ณผ๋ฅผ ์ ๊ณตํ์ง๋ ์๊ธฐ ๋๋ฌธ์ ์ ์๋ ํ๋กํผํฐ๊ฐ ๋ฐ๋ก ์ ์ฉ๋์ด ํ๋ฉด์ ํ์๋๋ค. ํธ๋์คํผ์ ์ ๋๋ฉ์ด์ ํจ๊ณผ๋ฅผ ์ํด ์ฌ์ฉํ์ฌ์ผ ํ๋ ๊ฒ์ ์๋์ง๋ง ์ ๋๋ฉ์ด์ ํจ๊ณผ๋ฅผ ๋ถ์ฌํ ํ์๊ฐ ์๋ค๋ฉด ํธ๋์ง์ ์ด๋ ์ ๋๋ฉ์ด์ ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ค.
โ ๋ง์ฝ ํ๋์ ํ๊ทธ์ ์ฌ๋ฌ๊ฐ์ transform ๋ณํํจ์(translate, scale ๋ฑ) ๋ฅผ ์ ์ฉํ๊ณ ์ถ๋ค๋ฉด, ๋ณํํจ์๋ฅผ ํ๋กํผํฐ๊ฐ์ผ๋ก ์ผํ์์ด ๋์ดํ๋ค. ๋์ด์์์ ๋ฐ๋ผ ์ฐจ๋ก๋๋ก ํจ๊ณผ๊ฐ ์ ์ฉ๋๋ค.
/* ์์ */ transform: scale(1) rotate(0) translateX(30px);
transform ์์ฑ | ํจ๊ณผ | ์ค๋ช | ๋จ์ |
---|---|---|---|
translate(x,y) | ์ด๋ํจ๊ณผ | ์์์ ์์น๋ฅผ X์ถ์ผ๋ก x๋งํผ, Y์ถ์ผ๋ก y๋งํผ ์ด๋ | px, %, em ๋ฑ |
translateX(n) | ์ด๋ํจ๊ณผ | ์์์ ์์น๋ฅผ X์ถ์ผ๋ก n๋งํผ ์ด๋ | px, %, em ๋ฑ |
translateY(n) | ์ด๋ํจ๊ณผ | ์์์ ์์น๋ฅผ Y์ถ์ผ๋ก n๋งํผ ์ด๋ | px, %, em ๋ฑ |
----------------------- | ---------------- | --------------------------------------------------------------- | -------------- |
scale(x,y) | ํ๋/์ถ์ ํจ๊ณผ | ์์์ ํฌ๊ธฐ๋ฅผ X์ถ์ผ๋ก x๋ฐฐ, Y์ถ์ผ๋ก y๋ฐฐ ํ๋ ๋๋ ์ถ์ | 0๊ณผ ์์ |
scaleX(n) | ํ๋/์ถ์ ํจ๊ณผ | ์์์ ํฌ๊ธฐ๋ฅผ X์ถ์ผ๋ก n๋ฐฐ ํ๋ ๋๋ ์ถ์ | 0๊ณผ ์์ |
scaleY(n) | ํ๋/์ถ์ ํจ๊ณผ | ์์์ ํฌ๊ธฐ๋ฅผ Y์ถ์ผ๋ก n๋ฐฐ ํ๋ ๋๋ ์ถ์ | 0๊ณผ ์์ |
----------------------- | ---------------- | --------------------------------------------------------------- | -------------- |
skew(x-angle,y-angle) | ๋นํ๊ธฐ ํจ๊ณผ | ์์๋ฅผ X์ถ์ผ๋ก x ๊ฐ๋๋งํผ, Y์ถ์ผ๋ก y ๊ฐ๋๋งํผ ๊ธฐ์ธ์ธ๋ค | +/- ๊ฐ๋(deg) |
skewX(x-angle) | ๋นํ๊ธฐ ํจ๊ณผ | ์์๋ฅผ X์ถ์ผ๋ก x ๊ฐ๋๋งํผ ๊ธฐ์ธ์ธ๋ค. | +/- ๊ฐ๋(deg) |
skewY(y-angle) | ๋นํ๊ธฐ ํจ๊ณผ | ์์๋ฅผ Y์ถ์ผ๋ก y ๊ฐ๋๋งํผ ๊ธฐ์ธ์ธ๋ค. | +/- ๊ฐ๋(deg) |
----------------------- | ---------------- | --------------------------------------------------------------- | -------------- |
rotate(angle) | ํ์ ํจ๊ณผ | ์์๋ฅผ angle๋งํผ ํ์ | +/- ๊ฐ๋(deg) |
/* translate */ .translate_div { transform: translate(10px, 50px); /* ์์น๋ฅผ ๊ฐ 10px, 50px๋งํผ ์ด๋ */ } /* โ translate() ๊ฐ์ด ํ๋๋ง ์์ ๊ฒฝ์ฐ์๋ ๊ฐ๋ก ๋ฐฉํฅ ์ด๋๋ง์ ๋ํ๋ด๋ฉฐ, ์ธ๋ก ๋ฐฉํฅ ์ด๋์ ์๋ค๊ณ ๊ฐ์ฃผํจ โ ๊ธฐ๋ณธ๊ธฐ์ค์ ์ ์์์ ์ ์ค์์ด๋ค (50%, 50%) = transform-origin */ /* scale */ .scale_div { transform: scale(.75); /* 0.75๋ฐฐ ํฌ๊ธฐ ๋ณ๊ฒฝ */ } .scale_div:hover { transform: scale(1.0); /* hover์ ํฌ๊ธฐ ๋ณ๊ฒฝ ํจ๊ณผ */ } /* skew */ .skew_div { transform: skew(5deg, -20deg); } .skew_div:hover { transition: transform 1s linear; transform: skew(0, 0); } /* rotate */ .rotate_div { transform: rotate(70deg); transition-duration: 2s; /* ์ฌ๋ฌ๊ฐ์ ๋ณํ ํจ์๋ฅผ ์ ์ํ ๋(์ผํ ์์ด ๋์ดํ๊ธฐ) */ .complex { transform: scale(.5) rotate(20deg); } .complex:hover { transition: transform 1s linear; transform: scale(1) rotate(0); }