CSS ì ëë©ìŽì ì ììì ì€íìŒì ìê°ì ë°ëŒ ë³íìí€ë ê²ì ì믞í©ëë€. ìŽë¥Œ íµíŽ ì¹ íìŽì§ì ëì ìž íšê³Œë¥Œ ì¶ê°í ì ììµëë€. ìŽë² í¬ì€í ììë CSS ì ëë©ìŽì ì Ʞ볞 ê°ë ë¶í° ê³ êž íì©ë²ê¹ì§ ë€ë£šê² ìµëë€.
⣠목찚
CSS ì ëë©ìŽì ì transition ì í íšê³Œë¥Œ ìì°ì€ëœê² 구ííêž° ìí ìì±ìŽë¯ë¡ CSS transition ì í íšê³Œ ìì±ì 뚌ì íìžíŽ ëŽ ìë€ð
CSS ì ëë©ìŽì Ʞ볞 ê°ë ð
CSS ì ëë©ìŽì ì CSS륌 ì¬ì©íì¬ ì¹ ììì 몚ì, ìì¹ ëë í¹ì±ì ë³ê²œíì¬ ì ëë©ìŽì íšê³Œë¥Œ ë§ëë êž°ì ì ëë€. CSS ì ëë©ìŽì ì 죌ì ìì±ë€ì ë€ì곌 ê°ìµëë€.
- @keyframes: ì ëë©ìŽì ì ì€ê° ëšê³ë¥Œ ì ìí©ëë€.
- animation-name: ì ì©í ì ëë©ìŽì ì ìŽëŠì ì§ì í©ëë€.
- animation-duration: ì ëë©ìŽì ìŽ ìë£ëë ë° ê±žëŠ¬ë ìê°ì ì€ì í©ëë€.
- animation-timing-function: ì ëë©ìŽì ìëì ë³í륌 ì€ì í©ëë€.
- animation-delay: ì ëë©ìŽì ìì ì ì§ì° ìê°ì ì€ì í©ëë€.
- animation-iteration-count: ì ëë©ìŽì ë°ë³µ íì륌 ì€ì í©ëë€.
- animation-direction: ì ëë©ìŽì ì ì¬ì ë°©í¥ì ì€ì í©ëë€.
- animation-fill-mode: ì ëë©ìŽì ìŽ ëë íì ìí륌 ì€ì í©ëë€.
- animation-play-state: ì ëë©ìŽì ì ì¬ì ë° ìŒì ì ì§ ìí륌 ì ìŽí©ëë€.
@keyframes륌 ì¬ì©í ì ëë©ìŽì ì€ì ð¬
í€íë ì(keyframes)ì CSS ì ëë©ìŽì
ìì ì¬ì©ëë ì€ìí ê°ë
ì€ íëì
ëë€. í€íë ìì ì ëë©ìŽì
ì€ê°ì ììê° ê°ì§ ì ìë í¹ì ìí륌 ì ìíë ë° ì¬ì©ë©ëë€.
í€íë ìì ì ëë©ìŽì
ì ìì(0%)곌 ë(100%) ì§ì ìì ììì ì€íìŒì ì ìí©ëë€. ê·žë¬ë ìì곌 ëì ëª
ííê² íííêž° ìíŽ from곌 to í€ìë륌 ì¬ì©í ìë ììµëë€. ëí ìíë ê²œì° ìì곌 ë ì¬ìŽì ì¬ë¬ ì€ê° ì§ì ì ì¶ê°íì¬ ë ë³µì¡í ì ëë©ìŽì
ì ë§ë€ ìë ììµëë€.
í€íë ìì @keyframes ê·ì¹ì ì¬ì©íì¬ ì ìë©ëë€. ìŽ ê·ì¹ì ë€ì곌 ê°ì 구조륌 ê°ì§ê³ ììµëë€.
@keyframes ì ëë©ìŽì
ëª
{
0% {
/* ììì ìì ì€íìŒ */
}
50% {
/* ììì ì€ê° ì€íìŒ */
}
100% {
/* ììì ë ì€íìŒ */
}
}
ì¬êž°ì ì ëë©ìŽì
ëª
ì íŽë¹ í€íë ìì ì°žì¡°íë ë° ì¬ì©ë©ëë€. í€íë ì ëŽë¶ìë í¹ì ìì ìì ììì ì€íìŒì ì§ì íë ê·ì¹ìŽ í¬íšë©ëë€. ì륌 ë€ìŽ, 0% í€íë ìì ì ëë©ìŽì
ì ìì ì§ì ì ëíëŽë©°, 100% í€íë ìì ì ëë©ìŽì
ì ë ì§ì ì ëíë
ëë€.
ìì
ìëë ê°ëší ìì ì ëë€. ìŽ ìì ììë ë€ëªš ììì ììì ì ëë©ìŽì ì íµíŽ ë³ê²œí©ëë€.
@keyframes changeColor {
0% {
background-color: red;
}
50% {
background-color: blue;
}
100% {
background-color: green;
}
}
.box {
width: 100px;
height: 100px;
animation-name: changeColor;
animation-duration: 3s;
}
ìŽ ìì ììë changeColorëŒë í€íë ìì ì ìíê³ , 0%, 50%, 100%ìì ê°ê° ë€ë¥ž ììì ì§ì í©ëë€. ìŽ ì ëë©ìŽì ì .box ììì ì ì©íë©Ž 3ìŽ ëì 빚ê°ììì íëììŒë¡ ë³í ë€, ìŽë¡ììŒë¡ ë³ê²œë©ëë€.
ì ëë©ìŽì ìì± ìžë¶ ì€ëª ë° ìì ðš
animation-name
animation-name ìì±ì CSS ì ëë©ìŽì
ì ì§ì í ë ì¬ì©ë©ëë€. ìŽ ìì±ì í¹ì í€íë ì ê·ì¹ ì§í©ì ì°žì¡°íì¬ ì ëë©ìŽì
ì ì ìí©ëë€.
ìì
ìŒë°ì ìŒë¡ @keyframes ê·ì¹ ì§í©ì ì°žì¡°íì¬ ì ëë©ìŽì
ì ì ìíë©°, animation-name ìì±ì ì¬ì©íì¬ íŽë¹ ì ëë©ìŽì
ì ì§ì í©ëë€. animation-nameìë ì¬ì©ìê° ìíë ìŽëŠì ì§ì í ì ììŒë©°, ìŽ ìŽëŠì @keyframes ê·ì¹ ì§í©ì ìŽëŠê³Œ ìŒì¹íŽìŒ í©ëë€.
ì륌 ë€ìŽ, ë€ìì @keyframes ê·ì¹ ì§í©ì ì°žì¡°íë changeColorëŒë ìŽëŠì ì ëë©ìŽì ì ì§ì íë ìì ì ëë€.
@keyframes changeColor {
0% {
background-color: red;
}
50% {
background-color: blue;
}
100% {
background-color: green;
}
}
.box {
width: 100px;
height: 100px;
animation-name: changeColor; /* ì ëë©ìŽì
ìŽëŠ ì€ì */
animation-duration: 3s;
}
ìŽ ìœëìì animation-name: changeColor; ë¶ë¶ì changeColorëŒë ìŽëŠì ì ëë©ìŽì ì ì§ì í©ëë€. ìŽë @keyframes ê·ì¹ ì§í©ìì ì ìë changeColor ì ëë©ìŽì ì ì°žì¡°íì¬ ììì ì ëë©ìŽì ì ì ì©í©ëë€.
animation-duration
animation-duration ìì±ì CSS ì ëë©ìŽì
ìŽ í 죌Ʞ륌 ìë£íë ë° ê±žëŠ¬ë ìê°ì ì§ì í©ëë€. ìŽ ìì±ì ìŽ(second) ëšìë¡ ì§ì ë©ëë€.
ìì
ì륌 ë€ìŽ, ë€ì CSS ìœëììë. box ììì changeColor ì ëë©ìŽì ì ì ì©íê³ ììµëë€. ìŽ ì ëë©ìŽì ì ìŽ 3ìŽ ëì ì€íë©ëë€.
@keyframes changeColor {
0% {
background-color: red;
}
50% {
background-color: blue;
}
100% {
background-color: green;
}
}
.box {
width: 100px;
height: 100px;
animation-name: changeColor;
animation-duration: 3s; /* ì ëë©ìŽì
ì§ì ìê° ì€ì */
}
ìŽ ê²œì°, animation-duration: 3s;ì ì ëë©ìŽì ìŽ 3ìŽ ëì ì€íëë ê²ì ì믞í©ëë€. ìŠ, ì ëë©ìŽì ìŽ ììíì¬ 3ìŽ íì ì¢ ë£ë©ëë€. ìŽ ìê° ëì ì ëë©ìŽì ì í€íë ì ê·ì¹ì ì ìë ìì±ì ë°ëŒ ììì ì€íìŒìŽ ë³ê²œë©ëë€.
animation-timing-function
animation-timing-function ìì±ì CSS ì ëë©ìŽì
ì ìê° ê²œê³Œì ë°ë¥ž ìë륌 ì§ì í©ëë€. ìŠ, ì ëë©ìŽì
ìŽ ììë¶í° ëê¹ì§ ì§íëë ëì ìëê° ìŽë»ê² ë³ê²œëëì§ë¥Œ ê²°ì í©ëë€.
ìŽ ìì±ì ë€ìí ê°ì ê°ì§ ì ììŒë©°, ê° ê°ì ì ëë©ìŽì ìŽ ìŽë€ ìëë¡ ì§íë ì§ë¥Œ ëíë ëë€. 죌ìí ê°ë€ë¡ë ë€ììŽ ììµëë€:
- ease: Ʞ볞ê°ìŒë¡, ì²ììë ëëŠ¬ê² ììíì¬ ì€ê°ìë ë¹ ë¥Žê², ëì€ìë ë€ì ëëŠ¬ê² ì¢ ë£ë©ëë€. ìŒë°ì ìŒë¡ ìì°ì€ë¬ìŽ ì ëë©ìŽì ì ë§ìŽ ì¬ì©ë©ëë€.
- linear: ì ëë©ìŽì ìŽ ìŒì í ìëë¡ ì§íë©ëë€. ì íì ìž ìë륌 ê°ì§ë©°, ììë¶í° ëê¹ì§ ëìŒí ìëë¡ ì§íë©ëë€.
- ease-in: ì²ììë ëëŠ¬ê² ììíì¬ ì ì°š ê°ìíë©ëë€. ì ëë©ìŽì ìì ë¶ë¶ìì ë ë¹ ë¥ž ìëê° íìí 겜ì°ì ì ì©í©ëë€.
- ease-out: ì²ììë ë¹ ë¥Žê² ììíì¬ íë°ì ëëŠ¬ê² ì¢ ë£ë©ëë€. ì ëë©ìŽì ìŽ ëëë ë¶ë¶ìì ë ë¶ëë¬ìŽ ì¢ ë£ë¥Œ ìíŽ ì¬ì©ë©ëë€.
- ease-in-out: ìì곌 ë 몚ëìì ëëŠ¬ê² ììíì¬ ì€ê°ìë ê°ìíëê³ , ëì€ìë ë€ì ëëŠ¬ê² ì¢ ë£ë©ëë€.
ìŽ ìžìë cubic-bezier() íšì륌 ì¬ì©íì¬ ì¬ì©ì ì ì íìŽë° íšì륌 ì§ì í ì ììµëë€. ìŽ íšìë 4ê°ì ê°ì ê°ì§ë©°, ê° ê°ì xì yì ì¢í륌 ëíë ëë€. ìŽ ì¢íë íìŽë° íšìì ê·žëí륌 ê²°ì íë ë° ì¬ì©ë©ëë€.
ìì
ì륌 ë€ìŽ, ë€ìì ease-in-out íìŽë° íšì륌 ì¬ì©íì¬ ì ëë©ìŽì ì ì ìíë ìì ì ëë€.
@keyframes changeColor {
0% {
background-color: red;
}
50% {
background-color: blue;
}
100% {
background-color: green;
}
}
.box {
width: 100px;
height: 100px;
background-color: red;
animation-name: changeColor;
animation-duration: 3s;
animation-timing-function: ease-in-out; /* íìŽë° íšì ì€ì */
}
ìŽ ìœëììë ease-in-out íìŽë° íšì륌 ì¬ì©íì¬ ì ëë©ìŽì ìŽ ë¶ëëœê² ììíê³ ë¶ëëœê² ì¢ ë£ëëë¡ ì€ì ëììµëë€.
animation-delay
animation-delay CSS ìì±ì ì ëë©ìŽì
ì ììì ì§ì°ìí€ë ë° ì¬ì©ë©ëë€. ìŽ ìì±ì ì¬ì©íë©Ž ì ëë©ìŽì
ìŽ í¹ì ìê°(ìŽ ëë ë°ëŠ¬ìŽ) ìŽíì ììë ì ììµëë€.
ìì
ì륌 ë€ìŽ, ë€ì곌 ê°ì CSS ìœëê° ìë€ê³ ê°ì íŽ ëŽ ìë€.
@keyframes changeColor {
0% {
background-color: red;
}
50% {
background-color: blue;
}
100% {
background-color: green;
}
}
.box {
width: 100px;
height: 100px;
background-color: red;
animation-name: changeColor;
animation-duration: 3s;
animation-delay: 1s; /* 1ìŽ íì ì ëë©ìŽì
ìŽ ììëš */
}
ìì ìœëë ì ëë©ìŽì ì ììíêž° ì ì 1ìŽë¥Œ êž°ë€ëŠ¬ëë¡ ì§ì°ìíµëë€. ë°ëŒì ììì. box íŽëì€ê° ì ì©ëë©Ž ì ëë©ìŽì ì 1ìŽ íì ììë©ëë€. ìŽ ìì±ì ìì ê°ì ê°ì§ ìë ììµëë€. ìì ê°ì ì ëë©ìŽì ìŽ ììíêž° ì ì ìŒë¶ ì ëë©ìŽì íë ìì ìëµí ì ììì ì믞í©ëë€.
ì륌 ë€ìŽ, -1s ê°ì ê°ì§ë 겜ì°, ì ëë©ìŽì
ì Ʞ볞ì ìŒë¡ ìì ì ì 1ìŽê°ì ìí륌 ìëµíê³ ì ëë©ìŽì
ì ìŠì ììí©ëë€.
animation-delay ìì±ì ì ëë©ìŽì
ìŽ ì¬ë¬ ììì ì ì©ëë 겜ì°ìë ì ì©íê² ì¬ì©ë ì ììµëë€. ì륌 ë€ìŽ, ìì ê°ì ì ëë©ìŽì
ì ê²¹ì¹ì§ ìê³ ìŒì í ê°ê²©ì ëê³ ììíëë¡ ì¡°ì í ì ììµëë€.
ìŽë¬í ë°©ììŒë¡ animation-delay ìì±ì ì¬ì©íì¬ ì ëë©ìŽì ì íìŽë°ì ì¡°ì í ì ììµëë€.
animation-iteration-count
animation-iteration-count CSS ìì±ì ì ëë©ìŽì
ì ë°ë³µ íì륌 ì§ì íë ë° ì¬ì©ë©ëë€. ìŽ ìì±ì ì¬ì©íë©Ž ì ëë©ìŽì
ìŽ ëª ë² ë°ë³µëëì§ë¥Œ ì€ì í ì ììµëë€.
Ʞ볞ì ìŒë¡, animation-iteration-count ìì±ì 1ë¡ ì€ì ëìŽ ììŒë©°, ìŽë ì ëë©ìŽì ìŽ í ë²ë§ ì€íëšì ì믞í©ëë€. ê·žë¬ë ìŽ ê°ì ë€ë¥Žê² ì€ì íì¬ ì ëë©ìŽì ì ì¬ë¬ ë² ë°ë³µíëë¡ í ì ììµëë€.
ì¬ë¬ ìµì
ìŽ ììµëë€.
- ì«ì: ì ëë©ìŽì ìŽ ëª ìë íìë§íŒ ë°ë³µë©ëë€. ì륌 ë€ìŽ, animation-iteration-count: 2;ë ì ëë©ìŽì ìŽ ë ë² ë°ë³µëšì ì믞í©ëë€.
- infinite: ì ëë©ìŽì ìŽ ë¬Žíí ë°ë³µë©ëë€. animation-iteration-count: infinite;륌 ì€ì íë©Ž ì ëë©ìŽì ìŽ ëììŽ ê³ì ë°ë³µë©ëë€.
- initial: ìŽ ìì±ì Ʞ볞ê°ìŒë¡ ìŽêž°íí©ëë€.
- inherit: ë¶ëªš ììë¡ë¶í° ììë ê°ìŒë¡ ì€ì í©ëë€.
ìì
ì륌 ë€ìŽ, ë€ì CSS ìœëììë ì ëë©ìŽì ìŽ ë¬Žíí ë°ë³µë©ëë€.
@keyframes changeColor {
0% {
background-color: red;
}
50% {
background-color: blue;
}
100% {
background-color: green;
}
}
.box {
width: 100px;
height: 100px;
background-color: red;
animation-name: changeColor;
animation-duration: 3s;
animation-iteration-count: infinite; /* 묎í ë°ë³µ */
}
animation-direction
animation-direction CSS ìì±ì ì ëë©ìŽì
ì ì§í ë°©í¥ì ì€ì íë ë° ì¬ì©ë©ëë€. ìŽ ìì±ì ì ëë©ìŽì
ìŽ ì ë°©í¥ìŒë¡ ì€íëëì§ ìë°©í¥ìŒë¡ ì€íëëì§ë¥Œ ê²°ì í©ëë€.
죌ì ìµì ì ë€ì곌 ê°ìµëë€.
- normal: ì ëë©ìŽì ìŽ ì ë°©í¥ìŒë¡ ì€íë©ëë€. ì²ìë¶í° ëê¹ì§ ìì°šì ìŒë¡ ì§íë©ëë€.
- reverse: ì ëë©ìŽì ìŽ ìë°©í¥ìŒë¡ ì€íë©ëë€. ë§ì§ë§ íë ììì ììíì¬ ì²ì íë ìê¹ì§ ìììŒë¡ ì§íë©ëë€.
- alternate: ì ëë©ìŽì ìŽ ë²ê°ìê°ë©° ì§íë©ëë€. í ë²ì ì ë°©í¥ìŒë¡, ë€ììë ìë°©í¥ìŒë¡ ì€íë©ëë€. ìŽê²ì infinite ë°ë³µê³Œ íšê» ì¬ì©ë ë í¹í ì ì©í©ëë€.
- alternate-reverse: alternateì ë¹ì·íì§ë§, ìë°©í¥ìì ììíì¬ ì ë°©í¥ìŒë¡ ì§íë©ëë€.
Ʞ볞ì ìŒë¡ animation-directionì normalë¡ ì€ì ëìŽ ììµëë€.
ìì
ì륌 ë€ìŽ, ë€ì CSS ìœëë ì ëë©ìŽì ì ë²ê°ìê°ë©° ë°ë³µíëë¡ ì€ì í©ëë€.
@keyframes changeColor {
0% {
background-color: red;
}
50% {
background-color: blue;
}
100% {
background-color: green;
}
}
.box {
width: 100px;
height: 100px;
background-color: red;
animation-name: changeColor;
animation-duration: 3s;
animation-iteration-count: infinite;
animation-direction: alternate; /* ë²ê°ìê°ë©° ì§í */
}
ì ìœëìì animation-direction ìì±ì alternateë¡ ì€ì ëìŽ ììŒë¯ë¡ ì ëë©ìŽì ìŽ ë²ê°ìê°ë©° ë°ë³µë©ëë€.
animation-fill-mode
animation-fill-mode CSS ìì±ì ì ëë©ìŽì ìŽ ì€íëêž° ì ìŽë íì ììì ì€íìŒì ì ì©íë ë°©ë²ì ì ìŽí©ëë€.
죌ì ìµì ì ë€ì곌 ê°ìµëë€.
- none: Ʞ볞ê°ìŒë¡, ì ëë©ìŽì ìŽì ë° ìŽíì ììì ì€íìŒì ì ì©íì§ ììµëë€.
- forwards: ì ëë©ìŽì ìŽ ìë£ë íì ë§ì§ë§ íë ìì ì€íìŒìŽ ì ì§ë©ëë€.
- backwards: ì ëë©ìŽì ìŽ ììëêž° ì ì 첫 ë²ì§ž íë ìì ì€íìŒìŽ ì ì©ë©ëë€.
- both: forwards ë° backwardsì íšê³Œë¥Œ 몚ë ì ì©í©ëë€. ì ëë©ìŽì ìŽ ììíêž° ì ì 첫 ë²ì§ž íë ìì ì€íìŒìŽ ì ì©ëê³ , ìë£ë íìë ë§ì§ë§ íë ìì ì€íìŒìŽ ì ì§ë©ëë€.
ìì
ì륌 ë€ìŽ, ë€ì CSS ìœëë ì ëë©ìŽì ì ì€ííêž° ì ì 첫 ë²ì§ž íë ìì ì€íìŒì ì ì§í©ëë€.
@keyframes changeColor {
0% {
background-color: red;
}
50% {
background-color: blue;
}
100% {
background-color: green;
}
}
.box {
width: 100px;
height: 100px;
background-color: red;
animation-name: changeColor;
animation-duration: 3s;
animation-iteration-count: infinite;
animation-fill-mode: backwards; /* ì ëë©ìŽì
ìŽì ì 첫 ë²ì§ž íë ìì ì€íìŒ ì ì© */
}
ìŽë ê² íë©Ž ì ëë©ìŽì ìŽ ììëêž° ì ì ììì 0% íë ìì ì€íìŒìŽ ì ì©ëìŽ ë¹šê°ììŒë¡ ì€ì ë©ëë€.
animation-play-state
animation-play-state CSS ìì±ì ì ëë©ìŽì
ì ì¬ì ìí륌 ì ìŽí©ëë€. ìŽ ìì±ì ì¬ì©íì¬ ì ëë©ìŽì
ì ìŒì ì€ì§íê±°ë ë€ì ì¬ìí ì ììµëë€.
죌ì ìµì ì ë€ì곌 ê°ìµëë€.
- running: ì ëë©ìŽì ìŽ ì¬ìë©ëë€. ìŽê²ìŽ Ʞ볞ê°ì ëë€.
- paused: ì ëë©ìŽì ìŽ ìŒì ì€ì§ë©ëë€.
ì륌 ë€ìŽ, ë€ì CSS ìœëë ì ëë©ìŽì ì íŽëŠí ëë§ë€ ìŒì ì€ì§íê±°ë ë€ì ì¬ìí©ëë€.
.box {
width: 100px;
height: 100px;
background-color: red;
animation-name: changeColor;
animation-duration: 3s;
animation-iteration-count: infinite;
cursor: pointer; /* ë§ì°ì€ 컀ì륌 í¬ìží°ë¡ ë³ê²œ */
}
.paused {
animation-play-state: paused; /* ì ëë©ìŽì
ìŒì ì€ì§ */
}
ê·žëŠ¬ê³ JavaScript륌 ì¬ì©íì¬ ìì륌 íŽëŠí ëë§ë€ ì ëë©ìŽì ì ì¬ì ìí륌 ë³ê²œí ì ììµëë€.
document.querySelector('.box').addEventListener('click', function() {
this.classList.toggle('paused'); // íŽëŠí ëë§ë€ ìŒì ì€ì§/ì¬ì ìí륌 ì íí©ëë€.
});
ìŽë ê² íë©Ž. box ìì륌 íŽëŠí ëë§ë€ ì ëë©ìŽì ìŽ ìŒì ì€ì§ëê±°ë ë€ì ì¬ìë©ëë€.
ë³µí© ì ëë©ìŽì ë§ë€êž°ð
ì¬ë¬ ì ëë©ìŽì ì ëìì ì ì©íë©Ž ëì± ë³µì¡íê³ ë§€ë ¥ì ìž íšê³Œë¥Œ ë§ë€ ì ììµëë€. ìëì ìì ë ìŽë곌 í¬ëª ë ë³í륌 ëìì ì ì©í ì ëë©ìŽì ì ëë€.
@keyframes move {
0% { transform: translateX(0); }
50% { transform: translateX(50px); }
100% { transform: translateX(0); }
}
@keyframes fade {
0% { opacity: 1; }
50% { opacity: 0.5; }
100% { opacity: 1; }
}
.element {
animation: move 3s infinite, fade 2s infinite;
}
ìë ìœëë ììê° ìŒìªœìì ì€ë¥žìªœìŒë¡ ìŽëíë©Žì ëíëë ì ëë©ìŽì ì ì ìí©ëë€.
@keyframes slideIn {
from { transform: translateX(-100%); }
to { transform: translateX(0); }
}
.header {
width: 100px;
height: 50px;
background-color: blue;
color: white;
animation: slideIn 1s ease-in-out forwards;
/* ì ëë©ìŽì
ìŽ ìë£ë íì ë§ì§ë§ ì€íìŒ ì ì§ */
}
ìë ìì ë ììê° ì¢ì°ë¡ ìŽëíë©Žì ëìì í¬ëª ëê° ë³ííë ì ëë©ìŽì ì ì ì©í ìì ì ëë€.
* {
padding: 0;
margin: 0;
}
body {
background-color: #747eff;
}
@keyframes test {
0% {
border-radius: 0px;
}
30% {
border-radius: 50px 0 0 0;
background-color: #fae573;
}
50% {
border-radius: 0 50px 0 0;
background-color: #76b47d;
}
100% {
border-radius: 100px;
background-color: #303efd;
}
}
.ani {
width: 100px;
height: 100px;
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50px, -50px);
background-color: #ff9259;
animation-name: test;
animation-duration: 2s;
animation-iteration-count: infinite;
animation-direction: alternate;
animation-delay: 2s;
animation-timing-function: ease-in-out;
}
.ani:hover {
animation-play-state: paused;
}
ìµì í ë° ì±ë¥ ê³ ë €ì¬íâ¡
CSS ì ëë©ìŽì ì ì¬ì©í ë ì±ë¥ì ìµì ííë ê²ìŽ ì€ìí©ëë€. ë€ìì ì±ë¥ì ìµì ííë ë°©ë²ì ëë€.
- íëìšìŽ ê°ì ì¬ì©: transform곌 opacity ìì±ì ì¬ì©íì¬ GPU ê°ìì íì±íí©ëë€.
- íìí 겜ì°ìë§ ì ëë©ìŽì ì¬ì©: ì ëë©ìŽì ìŽ ë묎 ë§ìŒë©Ž íìŽì§ ì±ë¥ìŽ ì íë ì ììµëë€.
- ì ëë©ìŽì ì ë³µì¡ì± ìµìí: ê°ëší ì ëë©ìŽì ìŽ ì±ë¥ì ë ì 늬í©ëë€.
íµì¬ ëŽì©ð