π¨ transition / transform / animation μμ± μ¬μ©λ²
CSS νΈλμ§μ
νΈλμ§μ (transition)μ CSS νλ‘νΌν°μ κ°μ΄ λ³νν λ, νλ‘νΌν° κ°μ λ³νκ° μΌμ μκ°(duration)μ κ±Έμ³ μΌμ΄λλλ‘ νλ κ²μ΄λ€. μν λ³νμ λλ°νμ¬ λ³κ²½λλ CSS νλ‘νΌν° κ°μ μν νμμ λ³νλ₯Ό λΆλλ½κ² νκΈ° μν΄ μ λλ©μ΄μ μλλ₯Ό μ‘°μ νλ€. μ½κ² λ§νμλ©΄ μμμ λ§μ°μ€λ₯Ό μ¬λ Έμ κ²½μ°, μ νΉμ ν¬κΈ°κ° λ³ννλ μ€μ μ κ°λ―Ένλλ°, λλ λ°λ‘λ°λ‘ λ³ννλ κ² λ³΄λ¨ λΆλλ½κ² μ νλλ ν¨κ³Όλ₯Ό μ§μ ν΄ μ€ λ μ¬μ©νλ€κ³ 보면 λλ€
transitionμ μ νλλ λͺ¨μ μ μΆκ°λ‘ κ°λ―Ένλ μμ±μ΄μ§ κ·Έ μμ²΄λ‘ μ€νμΌμ μ£Όλ μμ±μ μλλ€. κ·Έλμ:hoverμ κ°μ κ°μ ν΄λμ€ μ νμ(Pseudo-Classes) λλ JavaScriptμ λΆμμ μΈ μ‘μ μ μν΄ λ°λνλ€. κ·Έλ¦¬κ³ λ€μ λ°°μΈ transform μμ±κ³Ό ν¨κ» μ¬μ©λμ΄μ§λ κ²½μ°κ° λ§μ΄ μλ€.
Transition μμ±
μμ± | μ€λͺ |
transition | λͺ¨λ transition μμ±μ μ΄μ©ν μ€νμΌμ ν μ€μ μ€μ ν μ μμ. |
transition-property | μμμ μΆκ°ν μ ν(transition) ν¨κ³Όλ₯Ό μ€μ ν¨. |
transition-duration | μ ν(transition) ν¨κ³Όκ° μ§μλ μκ°μ μ€μ ν¨. |
transition-timing-function | μ ν(transition) ν¨κ³Όμ μκ°λΉ μλλ₯Ό μ€μ ν¨. |
transition-delay | μ ν(transition) ν¨κ³Όκ° λνλκΈ° μ κΉμ§μ μ§μ° μκ°μ μ€μ ν¨. |
β
transition-property
νΈλμ§μ μ λμμ΄ λλ CSS νλ‘νΌν°λͺ μ μ§μ νλ€. μ§μ νμ§ μλ κ²½μ° λͺ¨λ νλ‘νΌν°κ° νΈλμ§μ μ λμμ΄ λλ€.
볡μμ νλ‘νΌν°λ₯Ό μ§μ νλ κ²½μ° μΌν(,)λ‘ κ΅¬λΆνλ€.
div {
width: 100px;
height: 50px;
background-color: red;
margin-bottom: 10px;
transition-property: width, background-color; /* μ΄λ€ css νλ‘νΌν°λ₯Ό transitionν μ§ μ§μ */
transition-duration: 2s, 2s; /* widthμ bg-colorκ° 2μ΄λμ λ³ν */
}
div:hover { /* λ§μ°μ€λ₯Ό μ¬λ¦¬λ©΄ transitionλ°λν΄μ μ μ©λ μν */
width: 300px;
background-color: blue;
}
See the Pen transition 1 by barzz12 (@inpaSkyrim) on CodePen.
μ£Όμν΄μΌ ν μ¬νμ λͺ¨λ CSS νλ‘νΌν°κ° νΈλμ§μ μ λμμ΄ λ μ μλ€λ κ²μ΄λ€. μλ₯Ό λ€μ΄ width, font-size, background-color λ±μ νλμ λ²μ£Όμμμ ν¬κΈ°λ μμμ κ°μ΄ λ³νκ° κ°λ₯νμ§λ§ display νλ‘νΌν°λ κ·Έλ μ§ μλ€.
λ°λΌμ νΈλμ§μ μ λμμ΄ λ μ μλ CSS νλ‘νΌν°λ λ€μκ³Ό κ°λ€.
[Box model]
- width height, max-width, max-height, min-width, min-height
- padding, margin
- border-color, border-width, border-spacing
β
[Background]
- background-color, background-position
β
[μ’ν]
- top, left, right, bottom
β
[ν μ€νΈ]
- color font-size, font-weight, letter-spacing, line-height
- text-indent, text-shadow, vertical-align, word-spacing
β
[κΈ°ν]
- opacity, outline-color, outline-offset, outline-width
- visibility, z-index
transition-duration
νΈλμ§μ μβ μΌμ΄λλ μ§μμκ°(duration)μ μ΄ λ¨μ(s) λλ λ°λ¦¬ μ΄ λ¨μ(ms)λ‘ μ§μ νλ€.
νλ‘νΌν°κ°μ μ§μ νμ§ μμ κ²½μ° κΈ°λ³Έκ° 0sμ΄ μ μ©λμ΄ μ΄λ ν νΈλμ§μ ν¨κ³Όλ λ³Ό μ μλ€.
transition-duration νλ‘νΌν°κ°μ transition-property νλ‘νΌν°κ°κ³Ό 1:1 λμνλ€.
div {
transition-property: width;
transition-duration: 2s; /* widthκ° 2μ΄μ κ±Έμ³ λ³ν */
}
div {
transition-property: width, opacity;
transition-duration: 2s, 4s; /* widthμ opacityκ° 2μ΄ 4μ΄μ κ±Έμ³ λ³ν */
}
div {
transition-property: width, opacity, left, top;
transition-duration: 2s, 1s; /* width, leftλ 2μ΄ opacity topμ 1μ΄μ κ±Έμ³ λ³ν */
}
div {
/* shorthand syntax */
transition: width 2s, opacity 4s; /* μΆμ½ νν */
}
β
transition-timing-function
νΈλμ§μ ν¨κ³Όμ λ³ν νλ¦, μκ°μ λ°λ₯Έ λ³ν μλμ κ°μ μΌμ’ μ λ³νμ 리λ¬μ μ§μ νλ€.
λλΆλΆμ νμ΄λ° ν¨μλ νλΉ λ² μ΄μ§μ΄(cubic bezier)λ₯Ό μ μνλ λ€ μ μ μν΄ μ μλλ―λ‘ μμνλ ν¨μμ κ·Έλνλ‘ μ 곡ν΄μ λͺ μν μ μλ€.
transition-timing-function: ease;
transition-timing-function: linear;
transition-timing-function: ease-in;
transition-timing-function: ease-out;
transition-timing-function: ease-in-out;
β
transition-delay
νΈλμ§μ λ°λ λκΈ°μκ°. μκ°μ μ΄ λ¨μ(s) λλ λ°λ¦¬ μ΄ λ¨μ(ms)λ‘ μ§μ νλ€.
transition-durationμ΄ νΈλμ§μ μ§μ μκ°μ΄λΌλ©΄, transition-delayλ λ°λ λκΈ° μ¬κ°μ΄λΌκ³ 보면 λλ€. κ·Έλμ νλ‘νΌν°μ κ°μ΄ λ³ννμ¬λ μ¦μ νΈλμ§μ μ΄ μ€νλμ§ μκ³ , μΌμ μκ° λκΈ°ν ν νΈλμ§μ μ΄ μ€νλλλ‘ νλ€.
transition-delay: 3s;
β
transition
λͺ¨λ νΈλμ§μ νλ‘νΌν°λ₯Ό νλ²μ μ§μ ν μ μλ shorthandμ΄λ€. κ°μ μ§μ νμ§ μμ νλ‘νΌν°μλ κΈ°λ³Έκ°μ΄ μ§μ λλ€.
λ¨, transition-durationμ λ°λμ μ§μ ν΄μΌ νλ€. μ§μ νμ§ μλ κ²½μ° κΈ°λ³Έκ° 0μ΄ μ ν λμ΄ μ΄λ ν νΈλμ§μ λ μ€νλμ§ μλλ€.
transition: property duration function delay
κΈ°λ³Έκ° all 0 ease 0
/* duration */
transition: 1s
/* property duration */
transition: width 1s
/* duration function */
transition: 1s ease-in;
/* duration delay*/
transition: 1s 1s;
/* property duration function delay */
transition: width 1s ease-in 1s;
CSS νΈλμ€νΌ
νΈλμ€νΌ(Transform)μ μμμ μ΄λ(translate), νμ (rotate), νλ/μΆμ(scale), λΉνκΈ°(skew) ν¨κ³Όλ₯Ό λΆμ¬ν΄μ€λ€.
λ¨, κ·Έ μμ²΄λ‘ μ λλ©μ΄μ ν¨κ³Όλ₯Ό μ 곡νμ§λ μκΈ° λλ¬Έμ μ μλ νλ‘νΌν°κ° λ°λ‘ μ μ©λμ΄ νλ©΄μ νμλμ΄, λ§μΌ μ λλ©μ΄μ ν¨κ³Όλ κ°μ΄ μ£Όκ³ μΆλ€λ©΄ μμμ λ°°μ΄ transitionκ³Ό μ‘°ν©νλ©΄ λλ€.
Transform μμ±
2D Transform
κΈ°λ³Έ x, y λ μ’νλ‘λ§ μμλ₯Ό λ³νμμΌ 2dμ μΈ λ³νλ₯Ό κ°λ―Έν μ μλ€.
transform function | μ€λͺ | λ¨μ |
translate(x,y) | μμμ μμΉλ₯Ό XμΆμΌλ‘ xλ§νΌ, YμΆμΌλ‘ yλ§νΌ μ΄λμν¨λ€. | px, %, em λ± |
translateX(n) | μμμ μμΉλ₯Ό XμΆμΌλ‘ xλ§νΌ μ΄λμν¨λ€. | px, %, em λ± |
translateY(n) | μμμ μμΉλ₯Ό YμΆμΌλ‘ yλ§νΌ μ΄λμν¨λ€. | px, %, em λ± |
scale(x,y) | μμμ ν¬κΈ°λ₯Ό XμΆμΌλ‘ xλ°°, YμΆμΌλ‘ yλ°° νλ λλ μΆμ μν¨λ€. | 0κ³Ό μμ |
scaleX(n) | μμμ ν¬κΈ°λ₯Ό XμΆμΌλ‘ xλ°° νλ λλ μΆμ μν¨λ€. | 0κ³Ό μμ |
scaleY(n) | μμμ ν¬κΈ°λ₯Ό YμΆμΌλ‘ yλ°° νλ λλ μΆμ μν¨λ€. | 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) |
β
3D Transform
x, y, z μΈ μ’νλ₯Ό μ΄μ©ν΄ μμλ₯Ό λ³νμμΌ 3dμ μΈ λ³νλ₯Ό κ°λ―Έν μ μλ€.
transform function | μ€λͺ | λ¨μ |
translate3d(x,y,z) | μμμ μμΉλ₯Ό XμΆμΌλ‘ xλ§νΌ, YμΆμΌλ‘ yλ§νΌ ZμΆμΌλ‘ zλ§νΌ μ΄λμν¨λ€. | px, %, em λ± |
translateX(n) | μμμ μμΉλ₯Ό XμΆμΌλ‘ xλ§νΌ μ΄λμν¨λ€. | px, %, em λ± |
translateY(n) | μμμ μμΉλ₯Ό YμΆμΌλ‘ yλ§νΌ μ΄λμν¨λ€. | px, %, em λ± |
translateZ(n) | μμμ μμΉλ₯Ό ZμΆμΌλ‘ zλ§νΌ μ΄λμν¨λ€. | px, %, em λ± |
scale3d(x,y) | μμμ ν¬κΈ°λ₯Ό XμΆμΌλ‘ xλ°°, YμΆμΌλ‘ yλ°°, ZμΆμΌλ‘ zλ°° νλ λλ μΆμ μν¨λ€. | 0κ³Ό μμ |
scaleX(n) | μμμ ν¬κΈ°λ₯Ό XμΆμΌλ‘ xλ°° νλ λλ μΆμ μν¨λ€. | 0κ³Ό μμ |
scaleY(n) | μμμ ν¬κΈ°λ₯Ό YμΆμΌλ‘ yλ°° νλ λλ μΆμ μν¨λ€. | 0κ³Ό μμ |
scaleZ(n) | μμμ ν¬κΈ°λ₯Ό ZμΆμΌλ‘ zλ°° νλ λλ μΆμ μν¨λ€. | 0κ³Ό μμ |
rotate3d(x,y,z) | μμλ₯Ό XμΆμΌλ‘ xκ°λ, YμΆμΌλ‘ yκ°λ, ZμΆμΌλ‘ zκ°λ νμ μν¨λ€. | +/- κ°λ(deg) |
rotateX(x) | μμλ₯Ό XμΆμΌλ‘ xκ°λ νμ μν¨λ€. | +/- κ°λ(deg) |
rotateY(y) | μμλ₯Ό YμΆμΌλ‘ yκ°λ νμ μν¨λ€. | +/- κ°λ(deg) |
rotateZ(z) | μμλ₯Ό ZμΆμΌλ‘ zκ°λ νμ μν¨λ€. | +/- κ°λ(deg) |
β
transform
λ³νν¨μλ₯Ό νλ‘νΌν°κ°μΌλ‘ μΌνμμ΄ λμ΄νλ€. λμ΄μμμ λ°λΌ μ°¨λ‘λλ‘ ν¨κ³Όκ° μ μ©λλ€.
transform: func1 func2 func3 ...;
<div class="box">
<div class="translate">translate</div>
</div>
<div class="box">
<div class="scale">scale</div>
</div>
<div class="box">
<div class="skew">skew</div>
</div>
<div class="box">
<div class="rotate">rotate</div>
</div>
<div class="box">
<div class="complex">complex</div>
</div>
.translate {
transform: translate(10px, 50px);
}
.scale {
transform: scale(0.75);
}
.skew {
transform: skew(5deg, -20deg);
}
.rotate {
transform: rotate(70deg);
}
.complex {
transform: scale(0.5) rotate(20deg);
}
/* Animation Effect */
.translate:hover {
transition: transform 1s linear;
transform: translate(0px, 0px);
}
.scale:hover {
transition: transform 1s linear;
transform: scale(1);
}
.skew:hover {
transition: transform 1s linear;
transform: skew(0, 0);
}
.rotate:hover {
transition: transform 1s linear;
transform: rotate(0);
}
.complex:hover {
transition: transform 1s linear;
transform: scale(1) rotate(0);
}
See the Pen transform by barzz12 (@inpaSkyrim) on CodePen.
transform-origin
μμμ κΈ°λ³ΈκΈ°μ€μ μ μ€μ ν λ μ¬μ©λλ€. κΈ°λ³Έ κΈ°μ€μ μ μμμ μ μ€μμ΄λ€ (50%,50%).
μ€μ κ°μΌλ‘ %, px, top left, bottom rightμ μ¬μ©ν μ μλ€. 0, 0μ top left / 100% 100%λ bottom rightκ³Ό κ°μ κ°μ΄λ€.
transform-origin: 0 0;
transform-origin: 50% 50%;
<div class="box">
<div class="child box scale1">scale1</div>
</div>
<div class="box">
<div class="child box scale2">scale2</div>
</div>
<div class="box">
<div class="child box scale3">scale3</div>
</div>
<div class="box">
<div class="child box translate">translate</div>
</div>
.scale1:hover {
transition: transform 1s linear;
transform-origin: 0 0;
transform: scale(0.5);
}
.scale2:hover {
transition: transform 1s linear;
transform-origin: 50% 50%;
transform: scale(0.5);
}
.scale3:hover {
transition: transform 1s linear;
transform-origin: 100% 100%;
transform: scale(0.5);
}
.translate:hover {
transition: transform 1s linear;
/*transform-origin: 100% 100%;*/
transform: translate(10px, 10px);
}
See the Pen transform-origin by barzz12 (@inpaSkyrim) on CodePen.
CSS μ λλ©μ΄μ
μ λλ©μ΄μ (animation) μμ±μ λ§ κ·Έλλ‘ html μμμ μ λλ©μ΄μ ν¨κ³Όλ₯Ό μ μ©μμΌ μ€λ€. μ λλ©μ΄μ μ μ μ©νκΈ° μν΄μ νΉλ³ν μμ±μ΄ μ°μ¬ μ§λλ° μ΄λ₯Ό @keyframes μ΄λΌ νλ€. μ λλ©μ΄μ μ νλμ μ€κ±°λ¦¬(keyframes)λ₯Ό ꡬμ±νμ¬ μ€κ±°λ¦¬ λ΄μμ μΈλΆ μμ§μμ μκ° νλ¦ λ¨μλ‘ μ μ΄νμ¬ μμμ μμ§μμ νννλ€.
λ¬Όλ‘ μμμ λ°°μ΄ transitionμΌλ‘λ μ΄λ μ λμ μ λλ©μ΄μ ν¨κ³Όλ₯Ό ννν μ μμΌλ animation보λ€λ μ’λ μΈν°λν°λΈ(interactive)νκ² ννμ΄ κ°λ₯ν μμ νΈν μ λλ‘ λ΄λ λλ€.
λμ΄ λΉκ΅νμλ©΄,
- μΌλ°μ μΌλ‘ νΈλμ§μ ν¨κ³Όλ μμ νλ‘νΌν°κ°μ΄ λ€λ₯Έ κ°μΌλ‘ λ³νν λ μ£Όλ‘ μ¬μ©νλ©° μμμ λ‘λμ ν¨κ» μλμΌλ‘ λ°λλμ§ μλλ€.
- animation νλ‘νΌν°λ νλμ μ€κ±°λ¦¬λ₯Ό ꡬμ±νμ¬ μ€κ±°λ¦¬ λ΄μμ μΈλΆ μμ§μμ μκ° νλ¦ λ¨μλ‘ μ μ΄ν μ μκ³ μ 체 μ€κ±°λ¦¬μ μ¬μκ³Ό μ μ§, λ°λ³΅κΉμ§ μ μ΄ν μ μλ€.
Animation μμ±
νλ‘νΌν° | μ€λͺ | κΈ°λ³Έκ° |
animation-name | @keyframes μ λλ©μ΄μ μ΄λ¦μ μ§μ νλ€ | |
animation-duration | ν μΈμ΄ν΄μ μ λλ©μ΄μ μ μμλλ μκ°μ μ΄ λ¨μ(s) λλ λ°λ¦¬ μ΄ λ¨μ(ms)λ‘ μ§μ νλ€. | 0s |
animation-timing-function | μ λλ©μ΄μ ν¨κ³Όλ₯Ό μν νμ΄λ° ν¨μλ₯Ό μ§μ νλ€. | ease |
animation-delay | μμκ° λ‘λλ μμ κ³Ό μ λλ©μ΄μ μ΄ μ€μ λ‘ μμνλ μ¬μ΄μ λκΈ°νλ μκ°μ μ΄ λ¨μ(s) λλ λ°λ¦¬ μ΄ λ¨μ(ms)λ‘ μ§μ νλ€ | 0s |
animation-iteration-count | μ λλ©μ΄μ μ¬μ νμλ₯Ό μ§μ νλ€. | 1 |
animation-direction | μ λλ©μ΄μ μ΄ μ’ λ£λ μ΄ν λ°λ³΅λ λ μ§ννλ λ°©ν₯μ μ§μ νλ€. | normal |
animation-fill-mode | μ λλ©μ΄μ λ―Έμ€ν μ(μ’ λ£ λλ λκΈ°) μμμ μ€νμΌμ μ§μ νλ€. | |
animation-play-state | μ λλ©μ΄μ μ¬μ μν(μ¬μ λλ μ€μ§)λ₯Ό μ§μ νλ€. | running |
animation | λͺ¨λ μ λλ©μ΄μ νλ‘νΌν°λ₯Ό νλ²μ μ§μ νλ€ (shorthand syntax) |
β
@keyframes
CSS μ λλ©μ΄μ κ³Ό νΈλμ§μ λ°©μμ μ£Όλ μ°¨μ΄λ @keyframes ruleμ μλ€.
μ΄ ruleμ μ¬μ©νλ©΄ μ λλ©μ΄μ μ νλ¦(sequence) μ€μ μ¬λ¬ μμ (breakpoint)μμ CSS νλ‘νΌν°κ°μ μ§μ ν μ μλ€.
@keyframes ruleμ μκ°μ νλ¦μ λ°λΌ μ λλ©μ΄μ μ μ μνλ€. μ¬λ¬ κ°μ ν€νλ μμ μ μνκ±°λ μ λλ©μ΄μ μ€μ νΉμ CSS νλ‘νΌν°μ κ°μ μ§μ νλ μ§μ μ μ μν μ μλ€.
@keyframes move { /* @keyframes λ€μ μ λλ©μ΄μ
μ λννλ μμμ μ΄λ¦ moveλ₯Ό λΆμ¬ */
from { /* μ λλ©μ΄μ
μμ μμ */
left: 0;
}
to { /* μ λλ©μ΄μ
μ’
λ£ μμ */
left: 300px;
}
}
/* from, to ν€μλλ₯Ό μ¬μ©νμ¬ μ λλ©μ΄μ
μ μμκ³Ό λ μμ μ μ μνμλ€.
μ λλ©μ΄μ
μ μμ μμ μ μλ―Ένλ from ν€νλ μ λ΄μλ left νλ‘νΌν°μ κ° 0μ,
μ λλ©μ΄μ
μ λ μμ μ μλ―Ένλ to ν€νλ μ λ΄μλ left νλ‘νΌν°μ κ° 300pxμ μ§μ νμλ€.
κ·Έ κ²°κ³Ό, μ μ§ μνμμ μ€λ₯Έμͺ½μΌλ‘ 300px μ΄λνλ μ λλ©μ΄μ
μ΄ μ€νλλ€. */
div {
position: absolute;
width: 100px;
height: 100px;
background-color: red;
animation-name: move; /* @keyframesμ μ§μ ν μ΄λ¦μ μ¬κΈ°λ€ μ΄λ€ */
animation-duration: 5s; /* μ λλ©μ΄μ
λμ μκ° */
animation-iteration-count: infinite; /* μ λλ©μ΄μ
μ¬μ νμ 무ν */
}
See the Pen animation 1 by barzz12 (@inpaSkyrim) on CodePen.
from, to ν€μλ λμ μ’λ μμΈν μ‘°μμ μν΄ νΌμΌν°μ§(%)λ μ¬μ©ν μ μλ€.
@keyframes move {
0% { left: 0; }
50% { left: 100px; }
100% { left: 300px; }
}
β
animation-name
μ΄λ¦μ animation-name νλ‘νΌν°κ°μΌλ‘ μ§μ νμ¬ μ¬μ©νκ³ μ νλ @keyframes ruleμ μ ννλ€. νλ μ΄μμ μ λλ©μ΄μ μ΄λ¦μ μ§μ ν μ μλ€.
μ μμ μμ 보면 @keyframes λ€μ μ λλ©μ΄μ μ λννλ μμμ μ΄λ¦λ₯Ό λΆμ¬νμλ€. κ·Έκ²μ μ΄λ μμμ λ±λ‘ν μ§ μ νλ κ²μΌλ‘ 보면 λλ€.
div {
position: absolute;
width: 100px;
height: 100px;
animation-name: move, fadeOut, changeColor; /* keyframeμ νκ·Έμ λ±λ‘ */
animation-duration: 5s; /* 5μ΄λμ μ€ν */
animation-iteration-count: infinite; /* a무ν λ°λ³΅ */
}
@keyframes move {
from {
left: 0;
}
to {
left: 300px;
}
}
@keyframes fadeOut {
from {
opacity: 1;
}
to {
opacity: 0;
}
}
@keyframes changeColor {
from {
background-color: red;
}
to {
background-color: blue;
}
}
See the Pen animation 2 by barzz12 (@inpaSkyrim) on CodePen.
animation-duration
ν μΈμ΄ν΄μ μ λλ©μ΄μ μ μμλλ μκ°μ μ΄ λ¨μ(s) λλ λ°λ¦¬ μ΄ λ¨μ(ms)λ‘ μ§μ νλ€.
animation-durationμ λ°λμ μ§μ ν΄μΌ νλ€. μ§μ νμ§ μλ κ²½μ° κΈ°λ³Έκ° 0sκ° μ ν λμ΄ μ΄λ ν μ λλ©μ΄μ λ μ€νλμ§ μλλ€.
animation-duration: .5s;
animation-duration: 500ms;
β
animation-timing-function
μ λλ©μ΄μ ν¨κ³Όλ₯Ό μν μμΉ ν¨μλ₯Ό μ§μ νλ€.
β
animation-delay
μ λλ©μ΄μ μ€ν λκΈ° μκ°
animation-delay: 2s;
β
animation-iteration-count
μ λλ©μ΄μ μ£ΌκΈ°μ μ¬μ νμλ₯Ό μ§μ νλ€. κΈ°λ³Έκ°μ 1μ΄λ©° infiniteλ‘ λ¬΄νλ°λ³΅ ν μ μλ€.
animation-iteration-count: 3;
β
animation-direction
μ λλ©μ΄μ μ΄ μ’ λ£λ μ΄ν λ°λ³΅λ λ μ§ννλ λ°©ν₯μ μ§μ νλ€.
νλ‘νΌν°κ° | μ€λͺ |
normal | κΈ°λ³Έκ°μΌλ‘ from(0%)μμ to(100%) λ°©ν₯μΌλ‘ μ§ννλ€. |
reverse | toμμ from λ°©ν₯μΌλ‘ μ§ννλ€. |
alternate | νμλ²μ§Έλ normalλ‘, μ§μλ²μ§Έλ reverseλ‘ μ§ννλ€. |
alternate-reverse | νμλ²μ§Έλ reverseλ‘, μ§μλ²μ§Έλ normalλ‘ μ§ννλ€. |
<head>
<style>
div {
width: 100px;
height: 100px;
background: red;
position: relative;
animation: myAnimation 5s infinite;
/*νμλ²μ§Έλ normalλ‘, μ§μλ²μ§Έλ reverseλ‘ μ§ν*/
animation-direction: alternate;
}
@keyframes myAnimation {
0% { background: red; left: 0px; top: 0px; }
25% { background: yellow; left: 200px; top: 0px; }
50% { background: blue; left: 200px; top: 200px; }
75% { background: green; left: 0px; top: 200px; }
100% { background: red; left: 0px; top: 0px; }
}
</style>
</head>
<body>
<div></div>
</body>
See the Pen animation 4 by barzz12 (@inpaSkyrim) on CodePen.
animation-fill-mode
μ λλ©μ΄μ λ―Έμ€ν μ(λκΈ° λλ μ’ λ£) μμμ μ€νμΌμ μ§μ νλ€.
νλ‘νΌν°κ° | μν | μ€λͺ |
none | λκΈ° | μμ νλ μ(from)μ μ€μ ν μ€νμΌμ μ μ©νμ§ μκ³ λκΈ°νλ€. |
μ’ λ£ | μ λλ©μ΄μ μ€ν μ μνλ‘ μ λλ©μ΄μ μμμ νλ‘νΌν°κ°μ λλλ¦¬κ³ μ’ λ£νλ€. | |
forwards | λκΈ° | μμ νλ μ(from)μ μ€μ ν μ€νμΌμ μ μ©νμ§ μκ³ λκΈ°νλ€. |
μ’ λ£ | μ’ λ£ νλ μ(to)μ μ€μ ν μ€νμΌμ μ μ©νκ³ μ’ λ£νλ€. | |
backwards | λκΈ° | μμ νλ μ(from)μ μ€μ ν μ€νμΌμ μ μ©νκ³ λκΈ°νλ€. |
μ’ λ£ | μ λλ©μ΄μ μ€ν μ μνλ‘ μ λλ©μ΄μ μμμ νλ‘νΌν°κ°μ λλλ¦¬κ³ μ’ λ£νλ€. | |
both | λκΈ° | μμ νλ μ(from)μ μ€μ ν μ€νμΌμ μ μ©νκ³ λκΈ°νλ€. |
μ’ λ£ | μ’ λ£ νλ μ(to)μ μ€μ ν μ€νμΌμ μ μ©νκ³ μ’ λ£νλ€. |
div {
width: 100px;
height: 100px;
font: bold 1em/100px san-serif;
text-align: center;
color: #fff;
background: red;
margin-bottom: 10px;
position: relative;
/*name duration timing-function delay iteration-count direction fill-mode play-state*/
animation: myAnimation 2s linear 2s;
}
div:nth-of-type(1) {
animation-fill-mode: none;
}
div:nth-of-type(2) {
animation-fill-mode: forwards;
}
div:nth-of-type(3) {
animation-fill-mode: backwards;
}
div:nth-of-type(4) {
animation-fill-mode: both;
}
@keyframes myAnimation {
0% { left: 0px; background: yellow; }
100% { left: 200px; background: blue; }
}
See the Pen Untitled by barzz12 (@inpaSkyrim) on CodePen.
animation-play-state
μ λλ©μ΄μ μ¬μ μν(μ¬μ λλ μ€μ§)λ₯Ό μ§μ νλ€. κΈ°λ³Έκ°μ runningμ΄λ€
animation-play-state: paused;
animation-play-state: running;
β
animation
λͺ¨λ μ λλ©μ΄μ νλ‘νΌν°λ₯Ό νλ²μ μ§μ νλ€. κ°μ μ§μ νμ§ μμ νλ‘νΌν°μλ κΈ°λ³Έκ°μ΄ μ§μ λλ€.
animation-durationμ λ°λμ μ§μ ν΄μΌ νλ€. μ§μ νμ§ μλ κ²½μ° κΈ°λ³Έκ° 0sκ° μ ν λμ΄ μ΄λ ν μ λλ©μ΄μ λ μ€νλμ§ μλλ€.
animation: name duration timing-function delay iteration-count direction fill-mode play-state
κΈ°λ³Έκ° none 0 ease 0 1 normal none running
/*name duration timing-function delay */
animation: myAnimation 2s linear 2s;
# μ°Έκ³ μλ£
https://poiemaweb.com/css3-transition
https://poiemaweb.com/css3-animation
https://poiemaweb.com/css3-transform