프로그래밍/CSS

CSS 애니메이션: 웹 디자인의 매력을 더하는 방법

shimdh 2025. 7. 1. 07:47
728x90

웹 디자인에서 사용자 경험을 향상시키기 위해 CSS 애니메이션은 필수적인 요소로 자리 잡고 있습니다. 애니메이션을 통해 웹페이지의 요소에 생명을 불어넣고, 더욱 상호작용적이며 시각적으로 매력적인 디자인을 구현할 수 있습니다. 이번 포스트에서는 CSS 애니메이션의 기본 개념과 활용 방법에 대해 자세히 알아보겠습니다.

CSS 애니메이션이란?

CSS 애니메이션은 시간에 따라 서로 다른 스타일 간의 전환을 가능하게 합니다. 애니메이션은 두 가지 주요 구성 요소로 이루어져 있습니다:

  1. 키프레임: 애니메이션의 시작점과 끝점, 그리고 중간 단계들을 정의합니다.
  2. 애니메이션 속성: 애니메이션의 동작 방식을 지정하며, 지속 시간, 타이밍 함수, 지연 시간, 반복 횟수, 방향, 채우기 모드 등을 포함합니다.

키프레임 정의

키프레임을 사용하여 애니메이션을 생성하려면 @keyframes 규칙을 사용하고, 원하는 애니메이션 이름을 뒤따라 적습니다. 이 규칙 안에서는 애니메이션의 다양한 단계를 백분율(0%에서 100%까지)로 정의합니다.

예제: 기본 키프레임 애니메이션

@keyframes slideIn {
    from {
        transform: translateX(-100%);
        opacity: 0;
    }
    to {
        transform: translateX(0);
        opacity: 1;
    }
}

이 예제에서:

  • 요소는 0%에서 화면 밖(왼쪽)에서 시작하며, 투명도는 0입니다.
  • 100%에서 원래 위치로 이동하며, 완전한 불투명도를 가집니다.

애니메이션 속성

키프레임을 정의한 후에는 특정 속성을 사용하여 대상 요소에 적용해야 합니다:

  1. animation-name: 적용할 키프레임 애니메이션을 지정합니다.
  2. animation-duration: 애니메이션이 지속되는 시간을 정의합니다.
  3. animation-timing-function: 애니메이션의 속도 곡선을 제어합니다(예: 선형 또는 ease-in).
  4. animation-delay: 애니메이션 시작 전의 지연 시간을 설정합니다.
  5. animation-iteration-count: 애니메이션이 반복되는 횟수를 결정합니다.
  6. animation-direction: 애니메이션이 앞으로 재생될지, 뒤로 재생될지를 지정합니다.
  7. animation-fill-mode: 실행 전후에 어떤 스타일이 적용될지를 결정합니다.
728x90

애니메이션 속성을 활용한 실용적인 예제

이제 모든 요소를 결합하여 마우스를 올렸을 때 버튼을 애니메이션화하는 실용적인 예제를 살펴보겠습니다:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>버튼 애니메이션</title>
<style>
    button {
        padding: 10px 20px;
        font-size: 16px;
        background-color: #3498db;
        color: white;
        border: none;
        cursor: pointer;
        outline: none; 
    }

    @keyframes pulse {
      0%, 100% { transform: scale(1); }
      50% { transform: scale(1.05); }
    }

    button:hover {
      background-color: #2980b9; 
      animation-name: pulse;  
      animation-duration: .5s; 
      animation-timing-function: ease-in-out; 
      animation-iteration-count: infinite;  
     }
</style>
</head>
<body>

<button>마우스를 올려보세요!</button>

</body>
</html>

이 예제에서:

  • 버튼에 마우스를 올리면:
    • 정의된 전환 규칙 덕분에 색상(background-color)이 부드럽게 변화합니다.
    • 약간 확대(transform)되어 우리의 pulse 키프레임 정의를 통해 맥동하는 효과를 생성합니다.

결론

애니메이션과 그 속성을 이해하는 것은 웹 디자인의 상호작용성과 미적 요소를 효과적으로 향상시키는 데 매우 중요합니다. 다양한 장치와 브라우저에서 성능이 최적화되도록 보장하는 데도 필수적입니다. 실제 프로젝트에서 이러한 속성과 키프레임의 다양한 조합을 실험함으로써, 마우스 오버 시 반응하는 버튼과 같은 요소를 통해 애니메이션이 사용자 경험을 어떻게 향상시킬 수 있는지에 대한 깊은 이해를 발전시킬 수 있습니다!

728x90