6장: CSS 애니메이션과 트랜지션
### 6.1 트랜지션 (Transitions)
트랜지션은 CSS 속성의 변경이 일어날 때 애니메이션 효과를 추가하여 부드럽게 변하도록 합니다.
#### 6.1.1 기본 사용법
트랜지션을 적용하려는 요소에 `transition` 속성을 사용합니다.
예제:
.box {
width: 100px;
height: 100px;
background-color: red;
transition: background-color 1s;
}
.box:hover {
background-color: blue;
}
HTML 코드:
<div class="box"></div>
이 예제는 `box` 요소에 마우스를 올리면 배경색이 1초 동안 부드럽게 빨간색에서 파란색으로 변경됩니다.
#### 6.1.2 여러 속성에 트랜지션 적용
여러 CSS 속성에 트랜지션을 적용할 수 있습니다.
예제:
.box {
width: 100px;
height: 100px;
background-color: red;
transition: background-color 1s, width 0.5s;
}
.box:hover {
background-color: blue;
width: 200px;
}
이 예제는 `box` 요소에 마우스를 올리면 배경색과 너비가 부드럽게 변경됩니다.
#### 6.1.3 트랜지션 속성
- `transition-property`: 트랜지션을 적용할 CSS 속성을 지정합니다.
- `transition-duration`: 트랜지션이 완료되는 데 걸리는 시간을 지정합니다.
- `transition-timing-function`: 트랜지션의 속도 곡선을 지정합니다. (예: `ease`, `linear`, `ease-in`, `ease-out`, `ease-in-out`)
- `transition-delay`: 트랜지션이 시작되기 전의 지연 시간을 지정합니다.
예제:
.box {
width: 100px;
height: 100px;
background-color: red;
transition-property: background-color, width;
transition-duration: 1s, 0.5s;
transition-timing-function: ease-in-out;
transition-delay: 0s, 0.5s;
}
.box:hover {
background-color: blue;
width: 200px;
}
### 6.2 애니메이션 (Animations)
애니메이션은 CSS 속성을 순차적으로 변경하여 복잡한 애니메이션 효과를 구현할 수 있습니다. `@keyframes` 규칙과 `animation` 속성을 사용합니다.
#### 6.2.1 기본 사용법
애니메이션을 정의하려면 `@keyframes` 규칙을 사용합니다.
예제:
@keyframes myAnimation {
from {
background-color: red;
}
to {
background-color: blue;
}
}
.box {
width: 100px;
height: 100px;
animation: myAnimation 2s infinite;
}
HTML 코드:
<div class="box"></div>
이 예제는 `box` 요소가 2초 동안 빨간색에서 파란색으로 애니메이션되며, 무한히 반복됩니다.
#### 6.2.2 키프레임 (Keyframes)
키프레임은 애니메이션의 중간 단계를 정의합니다. `from`과 `to` 키워드 대신, `0%`에서 `100%`까지의 값을 사용할 수 있습니다.
예제:
@keyframes myAnimation {
0% {
background-color: red;
transform: translateX(0);
}
50% {
background-color: yellow;
transform: translateX(100px);
}
100% {
background-color: blue;
transform: translateX(0);
}
}
.box {
width: 100px;
height: 100px;
animation: myAnimation 3s infinite;
}
이 예제는 `box` 요소가 3초 동안 빨간색에서 노란색, 다시 파란색으로 변경되며, X축 방향으로 100픽셀 이동한 후 돌아옵니다.
#### 6.2.3 애니메이션 속성
- `animation-name`: 애니메이션의 이름을 지정합니다.
- `animation-duration`: 애니메이션이 완료되는 데 걸리는 시간을 지정합니다.
- `animation-timing-function`: 애니메이션의 속도 곡선을 지정합니다.
- `animation-delay`: 애니메이션이 시작되기 전의 지연 시간을 지정합니다.
- `animation-iteration-count`: 애니메이션의 반복 횟수를 지정합니다.
- `animation-direction`: 애니메이션의 재생 방향을 지정합니다. (`normal`, `reverse`, `alternate`, `alternate-reverse`)
예제:
@keyframes myAnimation {
0% {
background-color: red;
transform: translateX(0);
}
100% {
background-color: blue;
transform: translateX(100px);
}
}
.box {
width: 100px;
height: 100px;
animation-name: myAnimation;
animation-duration: 2s;
animation-timing-function: ease-in-out;
animation-delay: 1s;
animation-iteration-count: infinite;
animation-direction: alternate;
}
### 6.3 애니메이션 활용 예제
#### 6.3.1 로딩 애니메이션
간단한 로딩 애니메이션을 구현해보겠습니다.
예제:
@keyframes loading {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
.loader {
width: 50px;
height: 50px;
border: 5px solid lightgray;
border-top: 5px solid blue;
border-radius: 50%;
animation: loading 1s infinite linear;
}
HTML 코드:
<div class="loader"></div>
#### 6.3.2 텍스트 애니메이션
텍스트 색상이 변경되는 애니메이션을 구현해보겠습니다.
예제:
@keyframes textAnimation {
0% {
color: red;
}
50% {
color: yellow;
}
100% {
color: green;
}
}
.text {
font-size: 24px;
animation: textAnimation 2s infinite;
}
HTML 코드:
<p class="text">애니메이션 텍스트</p>
### 연습 문제
1. 트랜지션을 사용하여 버튼에 마우스를 올렸을 때 배경색과 크기가 부드럽게 변경되도록 해 보세요.
2. `@keyframes`를 사용하여 요소의 색상과 위치가 변경되는 애니메이션을 만들어 보세요.
3. 애니메이션 속성을 사용하여 로딩 애니메이션을 구현해 보세요.
4. 텍스트 색상이 변경되는 애니메이션을 구현해 보세요.
댓글
댓글 쓰기