Zoom in Zoom Out Animation (줌 인 줌 아웃 애니메이션)

Intermediate

This tutorial is from open-source community. Access the source code

소개

이 랩에서는 간단하지만 효과적인 확대/축소 효과를 생성하여 CSS 애니메이션을 탐구해 보겠습니다. CSS 애니메이션을 사용하면 JavaScript 를 사용하지 않고도 웹 페이지에 동적 시각 효과를 추가할 수 있습니다. 이 랩을 마치면 CSS keyframes (키프레임) 및 animation properties (애니메이션 속성) 를 사용하여 웹사이트의 사용자 경험을 향상시킬 수 있는 부드러운 전환을 만드는 방법을 이해하게 될 것입니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 중급 레벨의 실험이며 완료율은 75%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

HTML 구조 이해

애니메이션을 만들기 전에, 우리가 작업할 HTML 구조를 이해해야 합니다. 이 단계에서는 제공된 HTML 파일을 검토하고 필요한 수정 사항을 적용합니다.

  1. 편집기에서 index.html 파일을 엽니다.

  2. 파일이 비어 있거나 없는 경우, 다음 내용으로 파일을 생성합니다:

<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Zoom In Zoom Out Animation</title>
    <link rel="stylesheet" href="style.css" />
  </head>
  <body>
    <h1>CSS Animation Demo</h1>
    <p>This box demonstrates a zoom in zoom out animation:</p>

    <div class="zoom-in-out-box"></div>
  </body>
</html>
  1. 이 HTML 이 무엇을 하는지 이해해 봅시다:

    • 제목과 viewport (뷰포트) 설정을 갖춘 표준 HTML 문서 구조가 있습니다.
    • style.css라는 외부 CSS 파일에 연결합니다.
    • 데모를 설명하기 위해 제목과 단락을 포함합니다.
    • 가장 중요한 것은, 애니메이션될 클래스 zoom-in-out-box를 가진 <div> 요소가 있다는 것입니다.
  2. 변경 사항이 있는 경우 index.html 파일을 저장합니다.

이 div 요소는 애니메이션을 생성하기 위한 캔버스가 될 것입니다. 다음 단계에서는 CSS 를 사용하여 이 요소의 스타일을 지정합니다.

기본 CSS 스타일 지정

이제 HTML 구조가 준비되었으므로, 애니메이션 요소에 대한 기본 CSS 스타일을 만들어 보겠습니다.

  1. 편집기에서 style.css 파일을 엽니다.

  2. 파일이 비어 있거나 없는 경우, 다음 내용으로 파일을 생성합니다:

body {
  font-family: Arial, sans-serif;
  max-width: 800px;
  margin: 0 auto;
  padding: 20px;
}

h1 {
  color: #333;
}

.zoom-in-out-box {
  margin: 24px;
  width: 50px;
  height: 50px;
  background: #f50057;
}
  1. 이 CSS 가 무엇을 하는지 이해해 봅시다:

    • 페이지에 대한 몇 가지 기본 스타일 (글꼴, 너비 및 여백) 을 설정합니다.
    • 제목을 어두운 회색으로 스타일링합니다.
    • 애니메이션 요소 .zoom-in-out-box에 대해 다음을 수행합니다:
      • 주변에 24px 의 여백을 추가합니다.
      • 너비와 높이를 50px 로 설정합니다.
      • 생생한 분홍색 배경색을 지정합니다.
  2. 이러한 변경 사항을 적용한 후 style.css 파일을 저장합니다.

  3. 진행 상황을 확인하려면 VSCode 의 오른쪽 하단 모서리에 있는 "Go Live" 버튼을 클릭합니다. 이렇게 하면 포트 8080 에서 웹 서버가 시작됩니다. 그런 다음 Web 8080 탭을 새로 고쳐 스타일이 지정된 상자를 확인합니다.

이제 웹 페이지에 작은 분홍색 사각형이 표시됩니다. 이 사각형은 다음 단계에서 애니메이션을 적용할 요소입니다.

Keyframes (키프레임) 애니메이션 생성

CSS 애니메이션은 애니메이션 시퀀스 동안 요소가 가져야 하는 스타일을 지정하는 keyframes (키프레임) 을 정의하여 작동합니다. 줌 인 줌 아웃 애니메이션에 대한 keyframes (키프레임) 을 만들어 보겠습니다.

  1. style.css 파일을 다시 열고 다음 코드를 끝에 추가합니다:
@keyframes zoom-in-zoom-out {
  0% {
    transform: scale(1, 1);
  }
  50% {
    transform: scale(1.5, 1.5);
  }
  100% {
    transform: scale(1, 1);
  }
}
  1. 이 코드가 무엇을 하는지 이해해 봅시다:

    • @keyframes는 애니메이션의 단계와 스타일을 정의하는 CSS at-rule (규칙) 입니다.
    • zoom-in-zoom-out은 애니메이션에 부여한 이름입니다 (나중에 이 이름을 참조할 것입니다).
    • keyframes (키프레임) 내에서, 애니메이션의 다른 지점에서 어떤 일이 발생하는지 정의합니다:
      • 0% (시작) 에서 요소는 scale(1, 1)로 정상 크기입니다.
      • 50% (중간 지점) 에서 요소는 scale(1.5, 1.5)로 크기가 1.5 배로 커집니다.
      • 100% (끝) 에서 요소는 정상 크기로 돌아갑니다.
    • scale() 함수가 있는 transform 속성은 요소의 크기를 변경합니다.
  2. 이러한 keyframes (키프레임) 을 추가한 후 style.css 파일을 저장합니다.

keyframes (키프레임) 은 애니메이션이 수행할 작업을 정의하지만, 아직 요소를 적용하지 않았습니다. 다음 단계에서는 애니메이션을 상자에 연결합니다.

애니메이션 적용

이제 keyframes (키프레임) 을 정의했으므로, 애니메이션을 상자 요소에 적용해야 합니다.

  1. style.css 파일을 다시 열고 .zoom-in-out-box 선택자를 다음과 같이 수정합니다:
.zoom-in-out-box {
  margin: 24px;
  width: 50px;
  height: 50px;
  background: #f50057;
  animation: zoom-in-zoom-out 1s ease infinite;
}
  1. 추가한 animation (애니메이션) 속성을 이해해 봅시다:

    • animation은 여러 animation (애니메이션) 속성을 한 번에 설정하는 shorthand property (단축 속성) 입니다.
    • zoom-in-zoom-out은 keyframes (키프레임) 애니메이션의 이름입니다.
    • 1s는 애니메이션의 한 주기가 1 초 동안 지속되도록 지정합니다.
    • ease는 애니메이션이 천천히 시작하여 속도가 빨라진 다음 다시 느려지도록 하는 timing function (타이밍 함수) 입니다.
    • infinite는 애니메이션이 영원히 반복됨을 의미합니다.
  2. 이러한 변경 사항을 적용한 후 style.css 파일을 저장합니다.

  3. 웹 서버가 이미 실행 중인 경우, Web 8080 탭을 새로 고치기만 하면 됩니다. 그렇지 않은 경우, 오른쪽 하단 모서리에 있는 "Go Live"를 클릭하여 서버를 시작한 다음 Web 8080 탭을 엽니다.

이제 분홍색 사각형이 부드럽게 줌 인 및 줌 아웃되는 연속적인 애니메이션을 볼 수 있습니다. 사각형은 원래 크기의 1.5 배에 도달할 때까지 커진 다음 정상 크기로 다시 축소됩니다. 이 주기는 무한히 반복됩니다.

애니메이션 속성 실험

다양한 animation (애니메이션) 속성을 실험하여 애니메이션을 사용자 정의해 보겠습니다. 이를 통해 이러한 속성이 애니메이션 동작에 어떤 영향을 미치는지 이해할 수 있습니다.

  1. style.css 파일을 열고 .zoom-in-out-box 선택자를 수정하여 다양한 animation (애니메이션) 속성을 시도해 봅니다:
.zoom-in-out-box {
  margin: 24px;
  width: 50px;
  height: 50px;
  background: #f50057;
  animation: zoom-in-zoom-out 2s ease-in-out infinite;
  /* Add a slight rotation during the animation */
  border-radius: 10px;
}
  1. 변경한 내용을 이해해 봅시다:

    • animation duration (애니메이션 지속 시간) 을 2s (2 초) 로 연장했습니다.
    • timing function (타이밍 함수) 을 ease-in-out으로 변경하여 애니메이션의 시작과 끝을 모두 부드럽게 만들었습니다.
    • 상자의 모서리를 둥글게 만들기 위해 border-radius를 10px 로 추가했습니다.
  2. 회전 효과를 추가하기 위해 keyframes (키프레임) 도 수정해 보겠습니다:

@keyframes zoom-in-zoom-out {
  0% {
    transform: scale(1, 1) rotate(0deg);
  }
  50% {
    transform: scale(1.5, 1.5) rotate(45deg);
    background-color: #2196f3;
  }
  100% {
    transform: scale(1, 1) rotate(0deg);
  }
}
  1. 이 업데이트된 keyframes (키프레임) 정의에서:

    • transform 속성에 rotate() 함수를 추가했습니다.
    • 50% 지점에서 요소는 확대되면서 45 도 회전합니다.
    • 또한 50% 지점에서 배경색을 파란색으로 변경합니다.
  2. 이러한 변경 사항을 적용한 후 style.css 파일을 저장합니다.

  3. 향상된 애니메이션을 보려면 Web 8080 탭을 새로 고칩니다.

이제 애니메이션은 더 느리고 (주기당 2 초), 둥근 모서리를 가지며, 줌하는 동안 회전하고, 애니메이션 중간에 색상이 변경되어야 합니다. 이는 CSS 애니메이션이 풍부한 시각적 효과를 위해 여러 속성 변경을 결합할 수 있음을 보여줍니다.

다양한 속성과 값을 더 실험하여 애니메이션에 어떤 영향을 미치는지 자유롭게 확인해 보세요.

요약

Zoom in Zoom Out Animation (줌 인 줌 아웃 애니메이션) 랩을 완료하신 것을 축하드립니다! 이 랩에서는 다음을 배웠습니다:

  1. CSS 애니메이션을 위한 HTML 구조화 방법
  2. 기본 CSS 속성을 사용하여 요소 스타일링 방법
  3. 애니메이션 단계를 정의하는 keyframes (키프레임) 애니메이션 생성 방법
  4. animation (애니메이션) 속성을 사용하여 요소에 애니메이션 적용 방법
  5. 타이밍, easing (easing), 여러 속성 변경을 결합하여 애니메이션 사용자 정의 방법

이러한 CSS 애니메이션 기술은 사용자 상호 작용에 반응하거나 웹 페이지의 중요한 요소에 주의를 끌 수 있는 매력적인 사용자 인터페이스를 만드는 데 적용할 수 있습니다.

학습 여정을 계속하려면 animation-delay, animation-direction, animation-fill-mode와 같은 다른 animation (애니메이션) 속성을 탐색해 보세요. 또한 transform (변환) 외에 opacity (불투명도), position (위치), size (크기) 와 같은 다양한 CSS 속성을 애니메이션화하는 실험을 할 수 있습니다.