개요.
요소에게 변화를 주기 위해서 transform과 transition을 사용했다.
이때 최종적으로 이동되는 위치가 한번 꺽어서 다른 방향으로 이동한다면 transform을 사용해서 구현할 수 없어진다.
이때 사용하는 것이 animtaion이다.
animation은 닥독으로 사용되는 것이 아닌 tansform이나 width 등 다른 속성과 함께 사용해서 원하는 동작을
만들어내는 속성이다.
@keyframes
실제로 애니메이션의 동작을 작성하는 속성이다. 이것을 활용해서 원하는 애니메이션을 만들 수 있다.
keyframes는 0% ~ 100% 까지의 타임라인이 존재한다.
애니메이션의 시작점이 0%이고 끝점이 100%이다. 중간에 원하는 어떤 지점에도 특정 애니메이션을 넣을 수 있다.
이제 앞서 말했던 x축으로 쭉 이동하다가 y축으로 이동하는 애니메이션을 만들어보자 :
@keyframes move-box {
0% {
transform: translate(0, 0);
}
50% {
transform: translate(300px, 0);
}
100% {
transform: translate(300px, 300px);
}
}
0%에서는 별다른 변동이 없으며 50%에서는 x축으로 300px 이동하고 마지막 100%에서 y축으로 300px 이동한다.
이렇게 선언하면 애니메이션 동작은 완료된 것이다.
animation
만들어둔 keyframes를 실제 사용하려면 animation 속성을 사용해야 한다.
.box {
display: flex;
align-items: center;
justify-content: center;
width: 100px;
height: 100px;
border: 2px solid #000;
background: teal;
animation: move-box 2s;
}
사용하는 방법은 transition과 매우 유사한데, 먼저 애니메이션 명칭을 입력하고 실행 시간을 추가하면 끝이다.
만들어진 코드를 실행해보면 제대로 애니메이션이 나타나는 것을 확인할 수 있다.
애니메이션의 상세 속성도 transform과 같이 여러 개가 존재한다.
animation-name: move-box;
animation-duration: 2s;
animation-delay: 1s;
animation-iteration-count: 2;
animation-timing-function: ease;
animation-direction: alternate;
animation-fill-mode: forwards;
animation-play-state: paused;
대부분의 속성이 transition과 동일하다고 생각하면 된다.
animation-name
사용할 애니메이션의 이름을 넣는 속성이다.
keyframes로 만든 애니메이션의 이름을 넣어주면 된다.
animation-duration
애니메이션의 실행 시간을 나타낸다.
animation-delay
애니메이션이 실행되기 전 대기 시간을 나타낸다. 설정한 시간 이후 실행된다.
animation-iteration-count
애니메이션이 실행되는 횟수를 나타낸다. 무한으로 반복하고 싶다면 infinite를 설정하면 무한으로 반복시킬 수 있다.
animation-timing-function
transition-timing-function 처럼 변화가 진행되는 속도를 설정할 수 있다.
기본값은 동일하게 ease인데, linear 또는 커스텀을 통해서 진행 속도를 조절할 수 있다.
animation-direction
기본적으로 애니메이션을 끝나면 다시 0%의 위치로 돌아오게 된다.
하지만 다시 100%에서 0%로 돌아오게 하는 방법이 존재하는데 이것이 animation-direction이다.
alternate 속성을 사용하면 다시 되돌아오는 애니메이션을 만들 수 있는데,
100% 에서 0%로 진행되는 reverse 속성이나, 100%에서 0%로 다시 100%로 돌아오는 alternate-reverse 속성도 있다.
animation-fill-mode
애니메이션이 끝나면 0%로 돌아가는데, 100%에 멈춰있게 하는 만들 수 있다.
forwards 속성을 주게 되면 애니메이션이 끝났을 때 0%로 돌아가는 것이 아닌 100%에 남아있게 된다.
animation-play-state
애니메이션이 실행되는 상태를 나타낸다. paused 속성을 주게 된다면 애니메이션이 바로 멈춘다.
hover 와 같은 가상 선택자를 함께 사용해서 특정 이벤트에서 애니메이션이 멈추게 할 수 있다.
'Web' 카테고리의 다른 글
CSS 선택자 (2) | 2024.05.05 |
---|---|
Animation - frame by frame (3) | 2024.05.01 |
CSS 변환 (2) | 2024.04.25 |
아이폰에서 폰트 크기가 제대로 적용이 안돼요... (1) | 2024.04.09 |
구글 SEO (1) | 2024.04.06 |