[ index ]
1.ย @keyframesย ์ย ์ ๋๋ฉ์ด์
ย ์๊ฐ
2.ย @keyframes
3. animation
4.ย Vendorย Prefixesย ๋ํ๊ธฐ
1. @keyframes ์ ์ ๋๋ฉ์ด์ ์๊ฐ
๋์์ ์์ฉ์์ ์ฌ์ฉํ๋ ์ธ์ด๋ก, ์์ ํ๋ ์๊ณผ ๋ง์ง๋ง ํ๋ ์ ์ค์์ย ์ ์ฒด ์ ๋ณด๋ฅผ ๊ฐ๊ณ ์์ด์ ๊ฐ์ฅ ์ค์ฌ์ด ๋๋ ํ๋ ์์ ํค ํ๋ ์
์ด๋ผ๊ณ ํ๋ค. ์๋ฅผ ๋ค์ด ์ ๋๋ฉ์ด์
์์๋ ์ฒ์ ํ๋ฉด์ ์ ์ฒด ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ ๋ค์ ํ๋ฉด๋ค์ ์ ์ฒด ์ ๋ณด๋ฅผ ๋ชจ๋ ๊ฐ๊ณ ์์ ํ์๊ฐ ์๋ค. ์๋ํ๋ฉด ์์ ์ ์ฒด ์ ๋ณด๋ฅผ ๊ฐ๊ณ ์๋ ํ๋ฉด๊ณผ ๋น๊ตํด์ ์ฐจ์ด๊ฐ ์๋ ์ ๋ณด๋ง ๋ด์ผ๋ฉด ๋๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ ์ ์ฒด ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ๊ฒ์ด ํค ํ๋ ์์ด๋ค. ์ด๋ ๊ฒ ํค ํ๋ ์์ ์ง์ ํ๋ฉด ์ ์ฒด์ ์ผ๋ก ์ฉ๋์ ์ค์ผ ์ ์๋ค. ์ ๋๋ฉ์ด์
์์๋ ์ฒ์ ํ๋ฉด์ ํค ํ๋ ์์ผ๋ก ์ง์ ํ ํ์๋ ๊ฐ ์ฃผ๊ธฐ๋ง๋ค ์ ์ฒด ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ ํค ํ๋ ์์ ๋ง๋ค์ด ๋ฃ์์ผ๋ก์จ ํ๋ฉด์ด ์์ฐ์ค๋ฝ๊ฒ ์ด์ด์ง๋๋ก ํ๋ค.
์ฌ์ด์ธ์ค์ฌ์ ๋ฐ๋ฅด๋ฉด key-frame์ด๋ animation์ ์์๊ณผ ์ค๊ฐ, ๋์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ ํ์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค. CSS ์ ๋๋ฉ์ด์
์์ ๊ฐ์ฅ ์ค์ํ ์์๊ฐ ๋ฐ๋กย @keyframesย ์
๋๋ค. @keyframes๋ CSS ๋ฌธ๋ฒ ์ค ํ๋๋ก ์ ๋๋ฉ์ด์
์ด ๋ง๋ค์ด์ง๋ ๋ถ๋ถ์
๋๋ค.ย @keyframesย ์์์ ์ฐ๋ฆฌ๋ ์คํ
์ด์ง๋ค์ ์ ์ํ๊ณ ๊ฐ ๊ตฌ๊ฐ๋ง๋ค ๋ค๋ฅธ ์คํ์ผ์ ์ ์ฉ ์ํฌ ์ ์์ต๋๋ค.
2. @keyframes
์ฌ๊ธฐ์ ์ฐ๋ฆฌ๋ ์ ๋๋ฉ์ด์
์คํ
์ด์ง๋ค์ ์ ํ ๊ฒ์
๋๋ค. ์ฐ๋ฆฌ์ย @keyframesย ์์ฑ์:
โข
์ฐ๋ฆฌ๊ฐ ์ ํ ์ด๋ฆ (์ฌ๊ธฐ์๋ย tutsFade๋ก ์ ํ์ต๋๋ค)
โข
์คํ
์ด์ง: 0%-100%, from (0%์ ๊ฐ์) ๊ทธ๋ฆฌ๊ณ to (100%์ ๊ฐ์)
โข
CSS ์คํ์ผ: ๊ฐ ๊ตฌ๊ฐ์ ์ ์ฉ์ํฌ ์คํ์ผ
์๋ฅผ ๋ค์ด:
@keyframes tutsFade {
0% {
opacity: 1;
}
100% {
opacity: 0;
}
}
CSS
๋ณต์ฌ
ํน์:
@keyframes tutsFade {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
CSS
๋ณต์ฌ
๋๋ ์ค์ฌ์ ์ธ ์๋ ์์ต๋๋ค.
@keyframes tutsFade {
to {
opacity: 0;
}
}
CSS
๋ณต์ฌ
์๋จ์ ์ฝ๋๋ ์๋ ๋ฉํธ์ ํฌ๋ช
๋๋ฅผย opacity: 1์์ย opacity: 2๋ก ๋ณํ๊ฒ ํฉ๋๋ค. ์์ ์ธ๊ฐ์ง ๋ฐฉ๋ฒ ๋ชจ๋ ๋์ผํ ๊ฒฐ๊ณผ๋ก ๋์ต๋๋ค.
3. Animation
animationย ์์ฑ์ ์์ ์ย @keyframes๋ก ๋ถ๋ฆฌ๋ฉฐ CSS ์ ํ์ ์์์ ์กด์ฌํ์์ต๋๋ค. ์ ๋๋ฉ์ด์
์ ์ฌ๋ฌ๊ฐ์ ์์ฑ์ ๊ฐ์ง ์ ์์ต๋๋ค.
โข
animation-name:ย @keyframesย ์ด๋ฆ (์์์์๋ย tutsFade๋ฅผ ์ฌ์ฉํจ)
โข
animation-duration: ํ์ํ๋ ์ ๊ธธ์ด. ์ ๋๋ฉ์ด์
์์๋ถํฐ ๋ง์ง๋ง๊น์ง ์ด ์ง์์๊ฐ
โข
animation-timing-function:ย ์ ๋๋ฉ์ด์
์๋ ์กฐ์ (ย linear | ease | ease-in | ease-out | ease-in-out | cubic-bezierย ).
โข
animation-delay: ์ ๋๋ฉ์ด์
์ด ์์ํ๊ธฐ ์ ์ง์ฐ์๊ฐ
โข
animation-iteration-count: ๋ฐ๋ณต ํ์
โข
animation-direction: ๋ฃจํ (loop) ๋ฐฉํฅ. ์ ๋ฐฉํฅ์ผ๋ก ๋ฐ๋ณต, ์ญ๋ฐฉํฅ์ผ๋ก ๋ฐ๋ณต, ๋ฒ๊ฐ์๊ฐ๋ฉฐ ๋ฐ๋ณต ๋ฑ์ ์ค์
โข
animation-fill-mode: ์ ๋๋ฉ์ด์
์์/๋ ์ํ ์ ์ด (ย none | forwards | backwards | bothย )
์๋ฅผ ๋ค์ด:
.element {
animation-name: tutsFade;
animation-duration: 4s;
animation-delay: 1s;
animation-iteration-count: infinite;
animation-timing-function: linear;
animation-direction: alternate;
}
CSS
๋ณต์ฌ
ํน์ ์งง๊ฒ:
.element {
animation: tutsFade 4s 1s infinite linear alternate;
}
@keyframes tutsFade {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
CSS
๋ณต์ฌ
์๋จ์ ์ฝ๋๋ย 1์ด์ ์ง์ฐ์๊ฐ ํ 4์ด์ ์ด ์ ๋๋ฉ์ด์
๊ธธ์ด๋ฅผ ๊ฐ์ง๊ณ loop ๋ฐฉํฅ์ ๋ฒ๊ฐ์๊ฐ๋ฉด์ ์ ํ ์๋๋ก ๋ฌดํ ๋ฐ๋ณต ๊น๋นก๊ฑฐ๋ฆฌ๋ ํจ๊ณผ๋ฅผ ๋ง๋ค ๊ฒ์
๋๋ค.
๋ ๋ง์ ํจ๊ณผ๋ ์๋์ ์ฌ์ดํธ๋ฅผ ์ฐธ๊ณ ํฉ๋๋ค!
4. Vendor Prefixes ๋ํ๊ธฐ
์์
์ด์์ ๋ง๋๋๋์, ์ฐ๋ฆฌ๋ ๋ธ๋ผ์ฐ์ ์ ๋ง๋ ํ๋ฆฌํฝ์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ธ๋ผ์ฐ์ ์ง์์ด ๊ฐ๋ฅํ ์๋๋๋ก ํฉ๋๋ค. ๊ธฐ๋ณธ ํ๋ฆฌํฝ์ค๋ค์ ๋ฌ์์ค๋๋ค:
โข
ํฌ๋กฌ & ์ฌํ๋ฆฌ:ย webkit-
โข
ํ์ด์ดํญ์ค:ย moz-
โข
์คํ๋ผ:ย o-
โข
์ธํฐ๋ท ์ต์คํ๋ก๋ฌ:ย ms-
animationย ์์ฑ์ ๋ฒค๋ ํ๋ฆฌํฝ์ค์ ํจ๊ป ์ฌ์ฉํ๋ฉด ์ด๋ ๊ฒ ๋ฉ๋๋ค:
.element {
-webkit-animation: tutsFade 4s 1s infinite linear alternate;
-moz-animation: tutsFade 4s 1s infinite linear alternate;
-ms-animation: tutsFade 4s 1s infinite linear alternate;
-o-animation: tutsFade 4s 1s infinite linear alternate;
animation: tutsFade 4s 1s infinite linear alternate;
}
CSS
๋ณต์ฌ
@keyframesย ์์๋ ๋ถ์ฌ ์ค๋๋ค:
@-webkit-keyframes tutsFade {/* your style */ }
@-moz-keyframes tutsFade {/* your style */ }
@-ms-keyframes tutsFade {/* your style */ }
@-o-keyframes tutsFade {/* your style */ }
@keyframes tutsFade {/* your style */ }
CSS
๋ณต์ฌ
๋ง์ง๋ง ๊ฒฐ๊ณผ๋ฌผ์์๋ ํ๋ฆฌํฝ์ค๋ฅผ ํฌํจํ๊ณ ์ฌ๋ฌ๋ถ๋ CSS ์ฝ๋์ ํ๋ฆฌํฝ์ค๋ฅผ ๋ฃ๋ ๊ฒ์ ์ถ์ฒํฉ๋๋ค.
<์ถ์ฒ>
CSS ์ ๋๋ฉ์ด์
์ด๋ณด์ ์
๋ฌธ์ (https://webdesign.tutsplus.com/ko/tutorials/a-beginners-introduction-to-css-animation--cms-21068)