>  기사  >  웹 프론트엔드  >  3D 큐브 회전 애니메이션

3D 큐브 회전 애니메이션

高洛峰
高洛峰원래의
2017-02-28 13:59:432398검색

이 기사에서는 HTML5+CSS3의 매력적인 예를 소개합니다: 3D 큐브 회전 애니메이션 예를 다음과 같이

렌더링:

3D 큐브 회전 애니메이션

지식 포인트:

1. 원근감 및 변형 검토

2. CSS3 배경화면은 그리드 배경, 즉 표면의 작은 그리드를 구현합니다.

3. @-webkit-keyframes 애니메이션 구현

HTML:

<body>  
 <p class="stage">  
    <p class="cube">  
        <p class="font"></p>  
        <p class="back"></p>  
        <p class="left"></p>  
        <p class="right"></p>  
        <p class="top"></p>  
        <p class="bottom"></p>  
    </p>  
  </p>   
</body>

만드는 방법은 이미 언급했습니다. 이전 3D 제품 디스플레이에서는 큐브인데 그 위에 숫자가 있습니다. 이론적으로는 이것보다 더 복잡하지만 그다지 멋지지는 않습니다~ 여기서는 자세히 설명하지 않겠습니다.

CSS:

html  
       {  
           background: -webkit-radial-gradient(center, ellipse, #430d6d 0%, #000000 100%);  
           background: radial-gradient(ellipse at center, #430d6d 0%, #000000 100%);  
           height: 100%;  
       }  
  
       .stage  
       {  
           -webkit-perspective: 1000px;  
           width: 20em;  
           height: 20em;  
           left: 50%;  
           top: 50%;  
           margin-left: -10em;  
           margin-top: -10em;  
           position: absolute;  
       }  
  
       .cube  
       {  
           position: absolute;  
           width: 100%;  
           height: 100%;  
           -webkit-transform-style: preserve-3d;  
           -webkit-transform: rotateX(-20deg) rotateY(-20deg);  
       }  
  
       .cube *  
       {  
           background: -webkit-linear-gradient(left, rgba(54, 226, 248, 0.5) 0px, rgba(54, 226, 248, 0.5) 3px, rgba(0, 0, 0, 0) 0px), -webkit-linear-gradient(top, rgba(54, 226, 248, 0.5) 0px, rgba(54, 226, 248, 0.5) 3px, rgba(0, 0, 0, 0) 0px);  
           -webkit-background-size: 2.5em 2.5em;  
  
           background-color: rgba(0, 0, 0, 0.5);  
           position: absolute;  
           width: 100%;  
           height: 100%;  
           border: 2px solid rgba(54, 226, 248, 0.5);  
           -webkit-box-shadow: 0 0 5em rgba(0, 128, 0, 0.4);  
  
       }  
  
       .font  
       {  
           -webkit-transform: translateZ(10em);  
       }  
  
       .back  
       {  
           -webkit-transform: rotateX(180deg) translateZ(10em);  
       }  
  
       .left  
       {  
           -webkit-transform: rotateY(-90deg) translateZ(10em);  
       }  
  
       .right  
       {  
           -webkit-transform: rotateY(90deg) translateZ(10em);  
       }  
  
       .top  
       {  
           -webkit-transform: rotateX(90deg) translateZ(10em);  
       }  
  
       .bottom  
       {  
           -webkit-transform: rotateX(-90deg) translateZ(10em);  
       }

비슷하게: 무대는 무대 역할을 하고, 큐브는 하위 요소의 효과를 3D로 설정한 다음 각 얼굴을 설정합니다. 회전하고 TranslateZ를 설정하고 큐브를 형성합니다.

각 얼굴의 배경을 설정하는 코드:

background: -webkit-linear-gradient(  
           left,  
           rgba(54, 226, 248, 0.5) 0px,  
           rgba(54, 226, 248, 0.5) 3px,  
           rgba(0, 0, 0, 0) 0px),  
                   -webkit-linear-gradient(  
           top,  
           rgba(54, 226, 248, 0.5) 0px,  
           rgba(54, 226, 248, 0.5) 3px,  
           rgba(0, 0, 0, 0) 0px);  
  
       -webkit-background-size: 2.5em 2.5em;

배경 설정, 왼쪽에서 오른쪽으로 3픽셀 스트립, 왼쪽에서 오른쪽으로 3픽셀 스트립 위에서 아래로 배경 크기를 2.5em 2.5em으로 설정한 다음 배경을 반복하면 효과는 다음과 같습니다(테두리를 추가했습니다):

3D 큐브 회전 애니메이션

완료 이제 효과:

3D 큐브 회전 애니메이션

큐브가 형성된 것을 볼 수 있고, 마지막으로 애니메이션을 추가하면 애니메이션이 복잡하다고 생각하지 말고 실제로는 매우 간단합니다~

애니메이션 프레임 정의:

@-webkit-keyframes spin  
       {  
           from  
           {  
               -webkit-transform: translateZ(-10em) rotateX(0) rotateY(0deg);  
               transform: translateZ(-10em) rotateX(0) rotateY(0deg);  
           }  
  
           to  
           {  
               -webkit-transform: translateZ(-10em) rotateX(360deg) rotateY(360deg);  
               transform: translateZ(-10em) rotateX(360deg) rotateY(360deg);  
           }  
       }

이름은 spin이며 처음에는translateZ(-10em)rotateX(0)rotateY(0deg); 마지막에:translateZ(-10em)rotateX(360deg)rotateY(360deg); 즉, x축과 y축을 중심으로 동시에 360도 회전합니다.

마지막으로 다음 애니메이션 속성을 큐브에 추가합니다.

.cube  
      {  
          -webkit-animation: 6s spin linear infinite;  
          position: absolute;  
          width: 100%;  
          height: 100%;  
          -webkit-transform-style: preserve-3d;  
          -webkit-transform: rotateX(-20deg) rotateY(-20deg);  
      }

시간을 애니메이션 시간 6초, 애니메이션 스핀, 속도를 균일로 설정합니다. 선형 , 무한 루프 무한

자세한 매개 변수 설정은 w3cSchool을 참조하세요~ 앞으로는 CSS3의 속성을 소개하는 블로그도 따로 쓸 예정입니다~

그렇습니다. 최종 효과가 완성되었습니다~

원래 웹사이트의 모습에 약간의 차이가 있습니다:

각 면에 방사형 그라데이션을 추가하기 때문에 다음을 추가합니다:

.cube *:before  
    {  
        display: block;  
        background: -webkit-radial-gradient(center, ellipse, rgba(0, 0, 0, 0) 30%, rgba(0, 128, 0, 0.2) 100%);  
        background: radial-gradient(ellipse at center, rgba(0, 0, 0, 0) 30%, rgba(0, 128, 0, 0.2) 100%);  
        content: &#39;&#39;;  
        height: 100%;  
        width: 100%;  
        position: absolute;  
    }

이전 의사 요소를 사용한 다음 방사형 그래디언트를 설정합니다~~이제 드디어 일관성이 생겼습니다~

소스 코드 다운로드를 클릭하세요: 데모

그렇습니다. 이 기사의 전체 내용이 모든 사람의 학습에 도움이 되기를 바라며, 또한 모든 사람이 PHP 중국어 웹사이트를 지지해 주기를 바랍니다.

3D 큐브 회전 애니메이션과 관련된 더 많은 글은 PHP 중국어 홈페이지를 주목해주세요!


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