렌더링:
지식 포인트:
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: ''; height: 100%; width: 100%; position: absolute; }
를 추가합니다.
위 내용은 HTML5/CSS3 3D 큐브 회전 애니메이션의 전형적인 사례의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!