>  기사  >  웹 프론트엔드  >  HTML5/CSS3 3D 큐브 회전 애니메이션의 전형적인 사례

HTML5/CSS3 3D 큐브 회전 애니메이션의 전형적인 사례

黄舟
黄舟원래의
2017-03-10 16:13:212080검색

렌더링:

HTML5/CSS3 3D 큐브 회전 애니메이션의 전형적인 사례

지식 포인트:

1. 관점, 변환 검토

2. 그리드 배경, 즉 표면의 작은 그리드

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으로 설정하고 배경을 반복하면 효과는 다음과 같습니다(테두리를 추가했습니다):



이제 완전한 효과:


큐브가 형성된 것을 볼 수 있습니다. 애니메이션을 추가하면 됩니다. 결국 애니메이션이 복잡하다고 생각할 필요는 없지만 실제로는 매우 간단합니다~

애니메이션 프레임 정의:


 @-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);
            }
        }


이름 회전이고, 처음에는translateZ(-10em)rotateX(0)rotateY(0deg);끝에서:translateZ(-10em)rotateX(360deg)rotateY(360deg); 즉, x를 중심으로 360도 회전합니다. 동시에 y축도 가능합니다.

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

  .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;
        }

를 추가합니다.

위 내용은 HTML5/CSS3 3D 큐브 회전 애니메이션의 전형적인 사례의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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