CSS动画实例3D立方体.docx
《CSS动画实例3D立方体.docx》由会员分享,可在线阅读,更多相关《CSS动画实例3D立方体.docx(23页珍藏版)》请在冰豆网上搜索。
CSS动画实例3D立方体
CSS动画实例:
3D立方体
CSS3支持3D转换,与3D转换有关的属性有:
transform:
向元素应用2D或3D转换。
transform-origin:
改变被转换元素的位置。
transform-style:
规定被嵌套元素如何在3D空间中显示。
perspective:
规定3D元素的透视效果。
perspective-origin:
规定3D元素的底部位置。
backface-visibility定义元素在不面对屏幕时是否可见。
在transform属性设置中,可使用的3D转换函数主要有:
matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n):
定义3D转换,使用16个值的4x4矩阵。
translate3d(x,y,z):
定义3D平移动转换。
translateX(x):
定义3D沿X轴平移转换。
translateY(y):
定义3D沿Y轴平移转换。
translateZ(z):
定义3D沿Z轴平移转换。
scale3d(x,y,z):
定义3D缩放转换。
rotate3d(x,y,z,angle):
定义3D旋转。
rotateX(angle):
定义沿X轴的3D旋转。
rotateY(angle):
定义沿Y轴的3D旋转。
rotateZ(angle):
定义沿Z轴的3D旋转。
perspective(n)定义3D转换元素的透视视图。
学习和利用3D转换,可以绘制立体化的图形。
1.一个简单的立方体
一个立方体有前、后、左、右、上、下共六个面,可在页面中定义立方体如下:
front
back
top
bottom
left
right
为立方体cube及六个面定义样式规则,每个面进行适当的平移和旋转,可以绘制出一个3D立方体。
编写的HTML文件如下。
DOCTYPEhtml>
.container
{
margin:
0auto;
width:
400px;
height:
background:
#d8d8d8;
border:
4pxsolidrgba(255,0,0,0.9);
border-radius:
10%;
}
.cube
position:
relative;
200px;
top:
80px;
left:
transform-style:
preserve-3d;
perspective:
800px;
perspective-origin:
-50%-100px;
.cubediv
absolute;
rgba(255,255,255,0.1);
box-shadow:
inset0030pxrgba(125,125,125,0.8);
text-align:
center;
line-height:
font-weight:
bold;
text-shadow:
-1px1px5px#f60;
color:
#fff;
font-family:
sans-serif;
text-transform:
uppercase;
font-size:
30px;
.front
transform:
translateZ(100px);
.back
translateZ(-100px)rotateY(180deg);
.left
rotateY(270deg)translateX(-100px);
transform-origin:
centerleft;
.right
rotateY(-270deg)translateX(100px);
topright;
.top
rotateX(-90deg)translateY(-100px);
topcenter;
.bottom
rotateX(90deg)translateY(100px);
bottomcenter;
在浏览器中打开包含这段HTML代码的html文件,可以显示如图1所示的立方体。
图1一个简单的3D立方体
去掉图1中立方体各面上的文字,分别以红色、橙色、黄色、绿色、青色和蓝色表示六个面,并且定义关键帧,使得立方体旋转起来。
100pxauto;
animation:
anim8slinearinfinite;
100%;
rgba(255,0,0,0.3);
rgba(255,0,255,0.3);
translateZ(-100px);
background-color:
rgba(255,255,0,0.3);
left;
rotateY(90deg)translateX(-100px);
rgba(0,255,0,0.3);
right;
rotateY(90deg)translateX(100px);
rotateX(90deg)translateZ(100px);
rgba(0,0,255,0.3);
rotateX(-90deg)translateZ(100px);
@keyframesanim
0%{transform:
rotateX(0deg)rotateY(0deg);}
100%{transform:
rotateX(360deg)rotateY(360deg);}
在浏览器中打开包含这段HTML代码的html文件,可以呈现出如图2所示的动画效果。
图2旋转的立方体
2.3D魔方
在立方体的每个面上用线性渐变(LinearGradients)给背景加上3*3的方格图形,构成一个3D魔方。
一个对象背景用线性渐变填充的调用格式为:
linear-gradient(direction,color-stop1,color-stop2,...);
设页面中有,若为.box定义样式规则如下:
.box
linear-gradient(toright,red,blue);
可在页面中显示如图3所示的图形。
图3红蓝色线性渐变
若修改background属性的设置为:
linear-gradient(toright,red,orange,yellow,green,blue,indigo,violet);
可在页面中显示如图4所示的图形。
图4七彩渐变图
若定义.box定义样式规则如下:
repeating-linear-gradient(toright,
#BC8F8F0,#BC8F8F2px,
#FF14932px,#FF149366px,
#BC8F8F66px);
.box:
before
content:
"";
rotate(90deg);
transparent2px,transparent66px,
可在页面中显示如图5所示的图形。
图53*3方格图
将图5所示的方格绘制到立方体的六个面上,形成一个魔方。
定义关键帧,使得魔方旋转起来。
rotateCube8slinearinfinite;
@keyframesrotateCube
rotateX(0)rotateY(0);}
.side
.side:
#8B008B2px,#8B008B66px,
#6495ED2px,#6495ED66px,
translateX(-100px)rotateY(90deg);
#FFD7002px,#FFD70066px,
translateX(100px)rotateY(90deg);
translateY(-100px)rotateX(90deg);
#00FF7F2px,#00FF7F66px,
translateY(100px)rotateX(90deg);
#FFFAFA2px,#FFFAFA66px,
在浏览器中打开包含这段HTML代码的html文件,可以呈现出如图6所示的动画效果。
图6旋转的魔方
3.3D小木箱
有了从简单立方体到3D魔方的制作经验,下面我们再来制作一个3D木箱。
主要是制作出形象的木箱面板。
设页面中有,为.side定义样式规则如下:
160px;
padding:
16px;
#d07f2c;
outline:
1pxsolid#a66523;
box-sizing:
border-box;
before,.side:
after
'';
display:
block;
0;
right:
可在页面中显示如图7所示的图形。
图7面板
(1)
若修改.side的样式规则为:
overflow:
hidden;
150%;
20%;
50%;
0%0%;
#c87a2a;
rotate(45deg)translate(-50%,-50%);
rotate(-45deg)translate(-50%,-50%);
可在页面中显示如图8所示的图形。
图8面板
(2)
把图8的图形放入图7中,二者组合起来可以得到如图9所示的面板。
图9木箱面板
制作好了面板,我们就可以制作出3D木箱,并让它旋转起来。
.crate
crate-spin10slinearinfinite;
.side-inner
.side-inner:
before,.side-inner:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1