>  기사  >  웹 프론트엔드  >  CSS로 공이 튀는 애니메이션 효과를 얻는 방법은 무엇입니까? 공이 튀는 애니메이션 구현 예

CSS로 공이 튀는 애니메이션 효과를 얻는 방법은 무엇입니까? 공이 튀는 애니메이션 구현 예

青灯夜游
青灯夜游원래의
2018-11-03 18:03:143739검색

CSS로 공이 튀는 애니메이션 효과를 얻는 방법은 무엇입니까? 이 기사에서는 CSS에서 공이 튀는 애니메이션 효과를 얻는 방법을 코드 예제를 통해 소개합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

1. 애니메이션 키프레임 정의

이 애니메이션에서는 두 개의 키프레임을 사용합니다. 하나는 공을 일정한 속도로 수평으로 이동하고 다른 하나는 대략 포물선 모양의 수직 바운싱 모션을 적용합니다. 수평 및 수직 이동을 단일 키프레임으로 결합하는 것이 가능하지만 이는 우리가 원하는 효과에는 작동하지 않습니다.

수평 이동은 다음 키프레임을 사용하여 쉽게 달성할 수 있습니다.

 @-webkit-keyframes travel {
    from {              }
    to   { left: 640px; }
  }
  @keyframes travel {
    from {              }
    to   { left: 640px; }
  }

이 키프레임은 나중에 할당된 이름 "travel"을 사용하여 참조되고 각 반복 변경 방향에 따라 변경되는 선형(변환 타이밍 기능)을 사용하여 적용됩니다.

수직 바운스 애니메이션의 경우 손쉬운 인 및 페이드 아웃 타이밍 기능을 활용하여 중력장의 효과를 시뮬레이션할 것입니다.

 @-webkit-keyframes bounce {
    from, to  {
      bottom: 0;
      -webkit-animation-timing-function: ease-out;
    }
    50% {
      bottom: 220px;
      -webkit-animation-timing-function: ease-in;
    }
  }
  @keyframes bounce {
    from, to  {
      botttom: 0;
      animation-timing-function: ease-out;
    }
    50% {
      bottom: 220px;
      animation-timing-function: ease-in;
    }
  }

이 키프레임은 나중에 참조할 수 있도록 "바운스"로 이름이 지정되었습니다.

이 두 키프레임을 결합하면 '공'이 수평으로 640픽셀, 수직으로 220픽셀 이동합니다. 물론, 이 값들은 "스테이지"의 크기에 맞게 조정되어야 합니다.

2. 애니메이션을 위한 무대 설정

늘 그렇듯이 먼저 애니메이션을 실행할 '무대'를 설정합니다. 이 경우 크기가 660 x 240픽셀인 간단한 DIV입니다. 너비를 100%로 설정하면 좋겠지만 정확한 픽셀 너비를 알지 못한 채 일부 요소를 배치하는 것은 어렵습니다.

#stage {
    position: relative;
    margin: 1em auto;
    width: 660px;
    height: 240px;
    border: 2px solid #666;
    background: #cff;
  }

이 단계에서는 수평으로 앞뒤로 움직이는 DIV 요소를 설정하고 그 안에 위아래로 튀는 '공'을 나타내는 DIV를 설정합니다.

#traveler {
    position: absolute;
    width: 20px;
    height: 240px;
    -webkit-animation-name: travel;
    -webkit-animation-timing-function: linear;
    -webkit-animation-iteration-count: infinite;
    -webkit-animation-direction: alternate;
    -webkit-animation-duration: 4.8s;
    animation-name: travel;
    animation-timing-function: linear;
    animation-iteration-count: infinite;
    animation-direction: alternate;
    animation-duration: 4.8s;
  }
  #bouncer {
    position: absolute;
    width: 20px;
    height: 20px;
    background: red;
    border-radius: 10px;
    -webkit-animation-name: bounce;
    -webkit-animation-iteration-count: infinite;
    -webkit-animation-duration: 4.2s;
    animation-name: bounce;
    animation-iteration-count: infinite;
    animation-duration: 4.2s;
  }

그래서 '공'의 크기는 20x입니다. 모서리가 둥근 20픽셀입니다.

3. 공 움직임 설정

간단한 HTML 마크업으로 마무리했습니다.

<div id="stage">
   <div id="traveler">
       <div id="bouncer"><!-- --></div>
   </div>
</div>

브라우저가 지원하는 경우 애니메이션이 자동으로 시작되어 아래 상자(또는 #stage)에서 무한정 계속됩니다.

CSS로 공이 튀는 애니메이션 효과를 얻는 방법은 무엇입니까? 공이 튀는 애니메이션 구현 예

CSS로 공이 튀는 애니메이션 효과를 얻는 방법은 무엇입니까? 공이 튀는 애니메이션 구현 예

CSS로 공이 튀는 애니메이션 효과를 얻는 방법은 무엇입니까? 공이 튀는 애니메이션 구현 예

애니메이션의 x 및 y 구성 요소를 강조하기 위해 추가 요소와 일부 스타일을 추가했습니다. JavaScript는 필요하지 않으며 나머지 코드는 표시된 것과 똑같습니다.

CSS:ounce-animation.css (https://www.the-art-of-web.com/bounce-animation.css)

완료되었습니다!

요약: 위 내용이 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.

위 내용은 CSS로 공이 튀는 애니메이션 효과를 얻는 방법은 무엇입니까? 공이 튀는 애니메이션 구현 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.