EverGiver
animation 속성 본문
728x90
CSS 애니메이션에서 사용하는 속성
- 자바스크립트를 사용하지 않고도 웹 요소에 애니메이션을 추가할 수 있다.
- 특정 지점에서 스타일을 바꾸면서 애니메이션을 만드는데, 이렇게 애니메이션 중간에 스타일이 바뀌는 지점을 키프레임(key frame)이라고 한다.
- 키프레임은 @keyframes 속성으로 정의하고, animation 속성과 그 하위 속성을 이용해서 애니메이션의 실행 시간이나 반복 여부 등을 지정한다.
- transition 속성과 달리 별도의 동작 구문 없이도 스스로 애니메이션 효과를 발생시키는 css속성
종류 | 설명 |
@keyframes | 애니메이션이 바뀌는 지점을 지정한다. |
animation-delay | 애니메이션의 시작 시간을 지정한다. |
animation-direction | 애니메이션을 종료한 뒤 처음부터 시작할지, 역방향으로 진행할지 지정한다. |
animation-duration | 애니메이션의 실행 시간을 지정한다. |
animation-iteration-count | 애니메이션의 반복 횟수를 지정한다. |
animation-name | @keyframes로 설정해 놓은 중간 상태를 지정한다. |
animation-timing-function | 키프레임의 전환 형태를 지정한다. |
animation | animation 속성을 한꺼번에 묶어서 지정한다. |
cf) % 값 특징
@keyframes 원하는이름{
0%{css속성} (시간이 10초일 경우 처음에 이동할 때 0초 돌아올때 10초)
50%{css속성} (시간이 10초일 경우 처음에 이동할 때 5초 돌아올때 5초)
80%{css속성} (시간이 10초일 경우 처음에 이동할 때 8초 돌아올때 2초)
100%{css속성} (시간이 10초일 경우 처음에 이동할 때 10초 돌아올때 0초)
}
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="utf-8">
<title>animation #2</title>
<style>
*{margin:0;padding:0;}
div{width:400px;height:400px;
background-color:red;
animation:abc 10s;}
@keyframes abc{
80%{margin-left:300px;}
}
</style>
</head>
<body>
<div></div>
</body>
</html>
- 애니메이션의 지점과 이름을 설정하는 @keyframes 속성, animation-name 속성
- 애니메이션의 시작과 끝을 비롯하여 상태가 바뀌는 부분이 있다면 @keyframes 속성을 이용해 바뀌는 지점을 설정한다.
- 애니메이션을 여러 개 정의할 수 있으므로 이름을 이용해 애니메이션을 구분한다.@kwyframes <이름> { <선택자> { <스타일> } }
- animation-name 속성으로 어떤 애니메이션을 사용할지 이름으로 구분한다.
- @keyframes 속성에서 사용하는 선택자는 스타일 속성 값이 바뀌는 지점을 가리킨다.animation-name: <키프레임 이름> ¦ none
▷ 애니메이션의 중간 지점을 추가하려면 시작 위치를 0%, 끝 위치를 100%로 놓고 50% 위치에 키프레임을 추가하면 된다.
▷ 시작과 끝 위치만 사용하려면 0%, 100%와 같은 값 대신 from과 to라는 키워드를 사용해도 된다 - 애니메이션의 실행 시간을 지정하는 animation-duration 속성
- 애니메이션이 얼마 동안 재생할 것인지 설정한다.
- 사용할 수 있는 값은 초(s)나 밀리초(ms)와 같은 시간 단위이다.animation-duration: <시간>
- 기본값은 0이므로 animation-duration 속성값을 정하지 않으면 애니메이션은 실행되지 않는다. - 애니메이션의 방향을 지정하는 animation-direction 속성
- 진행 방향을 바꿀 수 있다.
animation-direction: normal ¦ reverse ¦ alternate ¦ alternate-reverse
종류 설명 normal 애니메이션을 from에서 to로 진행한다. (기본값) reverse 애니메이션을 to에서 from으로, 원래 방향과는 반대로 진행한다. alternate 홀수 번째는 normal로, 짝수 번째는 reverse로 진행한다. alternate-reverse 홀수 번째는 reverse로, 짝수 번째는 normal로 진행한다 - 반복 횟수를 지정하는 animation-iteration-count 속성
- 반복 횟수를 정한다.
animation-iteration-count: <숫자> ¦ infinite
-
종류 설명 숫자 애니메이션의 반복 회숫를 정한다. infinite 애니메이션을 무한 <!DOCTYPE html> <html lang="ko"> <head> <meta charset="utf-8"> <title>animation #1</title> <style> *{margin:0;padding:0} div{width:400px;height:400px; background-color:red; animation:abc 2s; animation-iteration-count:4} @keyframes abc{ 50%{margin-left:300px;background-color:blue;} } </style> </head> <body> <div></div> </body> </html>
- 애니메이션의 속도 곡선을 지정하는 animation-timing-function 속성
- 애니메이션의 시작, 중간, 끝에서 속도를 지정하여 전체 속도 곡선을 만들 수 있다.
animation-timing-function: linear ¦ ease ¦ ease-in ¦ ease-out ¦ ease-in-out ¦ cubic-bezier(n, n, n, n)
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="utf-8"> <title>animation #3</title> <style> *{margin:0;padding:0;} #a{width:400px;height:400px; background-color:red; animation:abc 3s; /*animation-delay:3s;*/ animation-timing-function:linear;} @keyframes abc{ 50%{margin-left:500px;} } </style> </head> <body> <div id="a"></div> </body> </html>
- 애니메이션의 속성을 한꺼번에 표기하는 animation 속성
- 애니메이션 속성을 사용할 때 animation-duration 속성을 반드시 표기해야 한다.
(실행 시간을 지정하지 않으면 기본값으로 0이 적용되어 애니메이션 효과를 볼 수 없다.)
animation: <animation-name> animation: <animation-name> ¦ <animation-duration> ¦ <animation-timing-function> ¦ <animation-delay> ¦ <animation-iteration-count> ¦ <animation-direction>
- animation-fill-mode:backwards
- 대상 태그의 animation 효과를 이미 적용시켜준 상태에서 시작해주는 구문
- animaiton-delay 구문과 0% 함께 보통 많이 사용한다. - animation-fill-mode:forwards
- animation 구문에 작성해준 css속성들은 일시적으로 적용이 되었다가 태그 본연의 모습으로 돌아오는데 forwards라는 css속성을 사용해주면 animation 구문이 적용이 된 상태로 끝까지 유지가 된다.
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="utf-8"> <title>animation #4</title> <style> *{margin:0;padding:0} #a{width:300px;height:300px; background-color:blue; animation:abc 1s; /*margin:300px auto;*/ margin-top:200px;margin-left:200px} @keyframes abc{ 0%{transform:translateX(-600px);opacity:0} } </style> </head> <body> <div id="a"></div> </body> </html>
<!DOCTYPE html> <html lang="ko"> <head> <meta charset="utf-8"> <title>animation #5</title> <style> *{margin:0;padding:0;} h1, h2, h3{text-align:center; height:100px; animation:abc 1s; animation-fill-mode:backwards;} @keyframes abc{ 0%{transform:translateY(100px);opacity:0;} } h2{animation-delay:1s;} h3{animation-delay:2s;} h4{text-align:center;height:100px; animation:bbb 2s; animation-fill-mode:forwards} @keyframes bbb{ 100%{color:orange;transform:translateY(300px)} } </style> </head> <body> <h1>안녕하세요 h1태그 입니다</h1> <h2>안녕하세요 h2태그 입니다</h2> <h3>안녕하세요 h3태그 입니다</h3> <h4>안녕하세요 h4태그 입니다</h4> </body> </html>
728x90
'Front-End (웹) > CSS' 카테고리의 다른 글
텍스트 관련 스타일 (0) | 2022.01.04 |
---|---|
글꼴 관련 스타일 (0) | 2022.01.04 |
transform 속성 (0) | 2021.09.07 |
드롭다운 메뉴 (1) | 2021.09.01 |
z-index 속성 (0) | 2021.09.01 |
Comments