纯CSS3动画之旋转的立方体
2017-12-01 11:26
246 查看
如何绘制正方体或者长方体,正方体和长方体原理是相似的,此处我们以正方体为例。
html结构:
原理:
因为是正方体:宽度=长度=高度。
1、 从前后视角看,就是我们正方体的前面(before)和后面(after),width*height=长*高(此处必须按照这个顺序对应);
前后视角就和我们平时看到的一张纸,相当于和二维平面平行,然后将前后面在垂直与二维平面的线上拉开正方体的宽度的距离,这样前后面准备就绪。
2、接下来是左右视角,即正方体的左右面,width*height=宽*高(此处必须按照这个顺序对应);
左右视角相当于我们将与二维平面平行的正方形沿着Y轴旋转90度,然后将左右视角在的平面作为二维平面,同样在与其垂直的线上拉开正方体长度的距离,这样左右面准备就绪。
3、最后是上下视角,即正方体的上下面,width*height=长*宽(此处必须按照这个顺序对应);
上下视角相当于我们将与二维平面平行的正方形沿着X轴旋转90度,然后将上下视角在的平面作为二维平面,同样在与其垂直的线上拉开正方体高度的距离,这样一个简单的正方体完成。
注意:以上是针对正方体的六个面,即div中的六个span标签。
然后
注意:
然后加一些动画效果,正方体就可以转动起来啦。
下面我们直接上完整的代码(加了动画效果):
以上代码可以复制直接运行哟!
1、绘制正方体
绘制效果:html结构:
<div class="cubic"> <span class="before"></span> <span class="after"></span> <span class="top"></span> <span class="bottom"></span> <span class="left"></span> <span class="right"></span> </div>
原理:
因为是正方体:宽度=长度=高度。
1、 从前后视角看,就是我们正方体的前面(before)和后面(after),width*height=长*高(此处必须按照这个顺序对应);
前后视角就和我们平时看到的一张纸,相当于和二维平面平行,然后将前后面在垂直与二维平面的线上拉开正方体的宽度的距离,这样前后面准备就绪。
2、接下来是左右视角,即正方体的左右面,width*height=宽*高(此处必须按照这个顺序对应);
左右视角相当于我们将与二维平面平行的正方形沿着Y轴旋转90度,然后将左右视角在的平面作为二维平面,同样在与其垂直的线上拉开正方体长度的距离,这样左右面准备就绪。
3、最后是上下视角,即正方体的上下面,width*height=长*宽(此处必须按照这个顺序对应);
上下视角相当于我们将与二维平面平行的正方形沿着X轴旋转90度,然后将上下视角在的平面作为二维平面,同样在与其垂直的线上拉开正方体高度的距离,这样一个简单的正方体完成。
注意:以上是针对正方体的六个面,即div中的六个span标签。
然后
<div class="cubic">必须要设置以下属性:
transform: rotateX(-30deg) rotateY(30deg); transform-style: preserve-3d;
注意:
transform: rotateX(-30deg) rotateY(30deg)是设置正方体在空间中的角度,相当于你的眼睛定位在某一点,然后你旋转各个方向观看。
然后加一些动画效果,正方体就可以转动起来啦。
下面我们直接上完整的代码(加了动画效果):
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<style type="text/css">
.cubic{
position: absolute;
top: 50%;
left: 50%;
margin: -100px 0 0 -100px;
-webkit-transform: rotateX(-30deg) rotateY(30deg);
-moz-transform: rotateX(-30deg) rotateY(30deg);
-ms-transform: rotateX(-30deg) rotateY(30deg);
transform: rotateX(-30deg) rotateY(30deg);
-webkit-transform-origin: 100px 0px;
-moz-transform-origin: 100px 0px;
-ms-transform-origin: 100px 0px;
transform-origin: 100px 0px;
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
-ms-transform-style: preserve-3d;
transform-style: preserve-3d;
animation: cubicRotate 5s ease infinite;
}
.cubic > span{
position: absolute;
opacity: 0.6;
width: 200px;
height: 200px;
}
.cubic .before{
background: #ff5700;/*橙色*/
-webkit-transform: translateZ(100px);
-moz-transform: translateZ(100px);
-ms-transform: translateZ(100px);
transform: translateZ(100px);
}
.cubic .after{
background: #4359aa;/*蓝色*/
-webkit-transform: translateZ(-100px);
-moz-transform: translateZ(-100px);
-ms-transform: translateZ(-100px);
transform: translateZ(-100px);
}
.cubic .left{
background: #07A168;/*绿色*/
-webkit-transform: rotateY(90deg) translateZ(-100px);
-moz-transform: rotateY(90deg) translateZ(-100px);
-ms-transform: rotateY(90deg) translateZ(-100px);
transform: rotateY(90deg) translateZ(-100px);
}
.cubic .right{
background: #fcf308;/*黄色*/
-webkit-transform: rotateY(90deg) translateZ(-100px);
-moz-transform: rotateY(90deg) translateZ(-100px);
-ms-transform: rotateY(90deg) translateZ(-100px);
transform: rotateY(90deg) translateZ(100px);
}
.cubic .top{
background: #9e00f9;/*紫色*/
-webkit-transform: rotateY(90deg) translateZ(-100px);
-moz-transform: rotateY(90deg) translateZ(-100px);
-ms-transform: rotateY(90deg) translateZ(-100px);
transform: rotateX(90deg) translateZ(100px);
}
.cubic .bottom{
background: #016484;/*青色*/
-webkit-transform: rotateY(90deg) translateZ(-100px);
-moz-transform: rotateY(90deg) translateZ(-100px);
-ms-transform: rotateY(90deg) translateZ(-100px);
transform: rotateX(90deg) translateZ(-100px);
}
@-webkit-keyframes cubicRotate{
0%{-webkit-transform:rotateX(-30deg) rotateY(30deg);}
100%{-webkit-transform:rotateX(-30deg) rotateY(800deg);}
}
@-moz-keyframes cubicRotate{
0%{-moz-transform:rotateX(-30deg) rotateY(30deg);}
100%{-moz-transform:rotateX(-30deg) rotateY(800deg);}
}
@-ms-keyframes cubicRotate{
0%{-ms-transform:rotateX(-30deg) rotateY(30deg);}
100%{-ms-transform:rotateX(-30deg) rotateY(800deg);}
}
@keyframes cubicRotate{
0%{transform:rotateX(-30deg) rotateY(30deg);}
100%{transform:rotateX(-30deg) rotateY(800deg);}
}
</style>
</head>
<body>
<div class="cubic"> <span class="before"></span> <span class="after"></span> <span class="top"></span> <span class="bottom"></span> <span class="left"></span> <span class="right"></span> </div>
<body>
</html>
以上代码可以复制直接运行哟!
相关文章推荐
- 纯css3 3D图片立方体旋转动画特效
- css3-立方体3d旋转动画
- ios立方体旋转动画
- 模仿百度首页“元宵节汤圆”动图,并实现360°不停旋转(CSS3的animation动画效果)
- CSS3动画之旋转魔方盒
- CSS3 常用四个动画(旋转、放大、旋转放大、移动)
- 用css3制作旋转加载动画的几种方法
- 用css3制作旋转加载动画的几种方法
- CSS3实现3D木块旋转动画
- css3制作旋转立方体相册
- CSS3景深、三维变换属性及旋转三维立方体的实现
- CSS3 3D旋转动画代码实例
- CSS3 3D旋转立方体
- css3实现3d旋转动画特效
- css3平移、旋转、倾斜、缩放、动画效果的实现
- animate旋转动画练习,css3形变练习
- css3 - 透视、旋转、曲线运动等3d动画
- css3实现旋转小三角动画
- CSS3笔记:滚动、扭曲、旋转、翻转、动画练习整理
- 纯CSS3悬停图标旋转导航动画代码