Computer >> 컴퓨터 >  >> 프로그래밍 >> CSS

CSS 바운스(Bounce) 애니메이션 효과 구현하기

바운스(Bounce) 애니메이션 효과는 요소가 표면에 닿은 후 빠르게 위로 튀어 오르거나 뒤로 밀려나는 듯한 움직임을 표현하는 CSS 애니메이션 기법입니다. 버튼, 아이콘, 로고 등 다양한 UI 요소에 활용하면 페이지에 생동감을 더할 수 있습니다.

바운스 애니메이션의 원리

CSS의 @keyframes 규칙을 사용하면 애니메이션의 시간 흐름에 따라 요소의 위치를 단계적으로 제어할 수 있습니다. 이 예제에서는 전체 구간 중 0%, 20%, 50%, 80%, 100% 지점에서는 요소가 원래 위치에 머무르고, 40% 지점에서는 위로 30px, 60% 지점에서는 위로 15px 이동시킵니다. 이렇게 하면 마치 공이 바닥에 부딪힌 뒤 점점 작게 튀어 오르는 것처럼 자연스러운 바운스 효과를 만들 수 있습니다.

구현 예제

아래 코드를 실행하여 바운스 애니메이션 효과를 직접 확인해 볼 수 있습니다.

<html>
   <head>
      <style>

         .animated {
            background-image: url(/css/images/logo.png);
            background-repeat: no-repeat;
            background-position: left top;
            padding-top:95px;
            margin-bottom:60px;
            -webkit-animation-duration: 1s;
            animation-duration: 1s;
            -webkit-animation-fill-mode: both;
            animation-fill-mode: both;
         }

         @-webkit-keyframes bounce {
            0%, 20%, 50%, 80%, 100% {-webkit-transform: translateY(0);}
            40% {-webkit-transform: translateY(-30px);}
            60% {-webkit-transform: translateY(-15px);}
         }

         @keyframes bounce {
            0%, 20%, 50%, 80%, 100% {transform: translateY(0);}
            40% {transform: translateY(-30px);}
            60% {transform: translateY(-15px);}
         }

         .bounce {
            -webkit-animation-name: bounce;
            animation-name: bounce;
         }
      </style>

   </head>
   <body>

      <div id="animated-example" class="animated bounce"></div>
      <button onclick="myFunction()">Reload page</button>

      <script>
         function myFunction() {
            location.reload();
         }
      </script>
   </body>
</html>

코드 핵심 요소 살펴보기

  • .animated 클래스: 배경 이미지 설정과 함께 애니메이션 지속 시간(1초)과 animation-fill-mode: both를 지정하여 애니메이션이 시작 전후에도 스타일이 유지되도록 합니다.
  • @keyframes bounce: 애니메이션 진행률(%)에 따라 translateY() 값을 조절해 요소를 위아래로 움직입니다.
  • -webkit- 접두사: Safari 등 구형 WebKit 기반 브라우저에서도 동일하게 작동하도록 호환성 코드를 함께 작성했습니다.

버튼을 클릭해 페이지를 새로고침하면 애니메이션을 반복해서 확인할 수 있습니다. 이동 거리나 지속 시간을 조정하면 원하는 느낌의 바운스 효과를 손쉽게 응용할 수 있습니다.