1. CSS 애니메이션 만들기
CSS에서 기본 애니메이션을 만들려면 @keyframes 규칙을 사용하여 애니메이션을 정의한 다음
animation 속성을 사용하여 요소에 적용합니다.
다음은 box 요소를 왼쪽에서 오른쪽으로 이동시키는 간단한 애니메이션의 예입니다.
/* 애니메이션 정의하기 */
@keyframes move-right {
0% { left: 0; }
100% { left: calc(100% - 50px); }
}
@keyframes move-left {
0% { left: calc(100% - 50px); }
100% { left: 0; }
}
/* 애니메이션 적용하기 */
.box {
width: 50px;
height: 50px;
background-color: red;
position: absolute;
animation: move-right 2s ease-in-out infinite;
}
이 애니메이션은 요소를 왼쪽에서 오른쪽으로 이동하고 다시 2초 후에 뒤로 이동하며 무한 반복됩니다.
2. 가장자리에 부딪혔을 때 반대 방향으로 이동하기
위의 애니메이션은 한쪽 방향(여기에서는 right)으로만 계속해서 이동합니다.
여기에서 자바스크립트를 이용하면, .box 요소가 한쪽 방향으로 이동하다가 컨테이너의 한쪽 끝에 다다랐을 때 방향을 바꿔 반대 방향으로 이동하도록 할 수 있습니다.
1) 자바스크립트를 사용하여 컨테이너를 기준으로 요소의 위치를 확인합니다.
function moveElement() {
// .box 요소의 현재 위치 알아내기
const currentPosition = parseInt(window.getComputedStyle(element).getPropertyValue('left'));
}
2) if/else 문을 사용하여 요소가 컨테이너의 왼쪽 또는 오른쪽 가장자리에 도달했는지 확인한 후 요소가 컨테이너의 왼쪽 또는 오른쪽 가장자리에 도달하면 애니메이션의 방향이 반대가 되는 소스를 추가합니다.
// .box가 컨테이너의 왼쪽이나 오른쪽 가장자리에 닿았는지 체크하기
if (currentPosition <= 0) {
element.style.animation = "move-right 2s ease-in-out infinite";
direction = 1;
} else if (currentPosition + elementWidth >= containerWidth) {
element.style.animation = "move-left 2s ease-in-out infinite";
direction = -1;
}
// 반대 방향으로 이동
element.style.left = currentPosition + direction + 'px';
3) 이 애니메이션이 계속해서 일어날 수 있도록 setTimeout() 함수를 사용해서 moveElement() 함수를 반복 실행합니다.
// moveElement() 다시 실행
setTimeout(moveElement, 10);
'css' 카테고리의 다른 글
계산식을 사용하는 CSS 함수 - min(), max(), clamp() (0) | 2023.02.22 |
---|---|
계산식을 사용하는 CSS 함수 - calc() (0) | 2023.02.22 |
박스 모델 테두리에 이미지 넣기 (0) | 2022.11.20 |
텍스트 안에 배경 이미지 넣기 (0) | 2022.05.19 |
css 단위 - 길이 (0) | 2022.04.08 |