视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
HTML5/CSS33D立方体旋转动画经典案例
2020-11-27 15:11:57 责编:小采
文档
 效果图:

知识点:

1、perspective ,transform 的复习

2、css3 backgroud实现格格背景,即面上的小格格

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


同样:stage作为舞台,cube设置子元素的效果为3d,然后每个面都进行旋转和设置translateZ然后形成立方体。

为每个面设置backgroud设置小格格的代码:

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


名字为spin,开始时 translateZ(-10em) rotateX(0) rotateY(0deg); 结束时 : translateZ(-10em) rotateX(360deg) rotateY(360deg); 即同时绕着x,y轴360度旋转。

最后给我们的立方体加上此animation属性:

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


设置时间为动画时间 6s , 动画 spin , 速度为匀速linear , 无限循环 infinite ;

关于更加细致的参数设置,可以参考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;
 }

下载本文
显示全文
专题