CSS立方体基础篇之一

花了点时间把CSS3D变形研究了下,做了个立方体的实例。

1. 基础

1.1 理解坐标和旋转

参考资料:http://www.zhangxinxu.com/wordpress/2012/09/css3-3d-transform-perspective-animate-transition/

rotateX(angle):定义沿X轴的3D旋转

rotateY(angle):定义沿Y轴的3D旋转

rotateZ(angle):定义沿Z轴的3D旋转

以上三个函数,angle为旋转角度,值为正时表示:从轴延伸方向向圆心看顺时针旋转(或者反过来理解,从圆心向轴的延伸方向看逆时针旋转),值为负值时表示:从轴延伸方向向圆心看逆时针旋转(或者反过来理解,从圆心向轴的延伸方向看顺时针旋转)。



举例来说,如上图所示,rotateX(30deg),表示绕着X轴旋转30度,那么具体是如何旋转,向哪个方向旋转呢?有个简单的方法就是:从+X向圆心看,顺时针方向旋转30度即可。

1.2 理解translateZ(z)

translateZ(z)定义3D转换,只用Z轴的值,它的功能就是让元素在自己的眼前或近或远。z值越大则子元素离的越远,z值越小则子元素离的越近。

2. 立方体实例

代码:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
</head>
<style>
.cube{
width: 200px;
height: 200px;
margin: 200px;
perspective: 250px;//透视深度
-webkit-perspective: 250px;
-webkit-transform-style: preserve-3d;
-webkit-perspective-origin: -100% -50%;//可以修改此处的值,理解透视点
}
.cube > div{
width: 100px;
height: 100px;
position: absolute;
border:solid 2px red;
line-height: 100px;
font-size: 70px;
text-align: center;
background-color: gold;
}
.front{
-webkit-transform: rotateX(0deg) translateZ(50px);
}
.back{
-webkit-transform: rotateX(0) translateZ(-50px);
}
.right{
-webkit-transform: rotateY(90deg) translateZ(50px);
}
.left{
-webkit-transform: rotateY(-90deg) translateZ(50px);
}
.top{
-webkit-transform: rotateX(90deg) translateZ(50px);
}
.bottom{
-webkit-transform: rotateX(-90deg) translateZ(50px);
}
</style>
<body>
<div class="cube">
<div class="front">前</div>
<div class="back">后</div>
<div class="right">右</div>
<div class="left">左</div>
<div class="top">上</div>
<div class="bottom">下</div>
</div>
</body>
</html>

为了查看完整的变换过程,可以将CSS里面的 translateZ()都给去掉,然后一个一个调试,就可以理解 translateZ具体是如何调整元素位置的。translateZ(z),z为正值表示向正前方移动,z为负值表示向后方移动。以上面代码为例,我们看下right,首先围绕Y轴顺时针旋转90度,效果如下:


可以看到旋转90度后的效果,此时没有向正前方移动50px。注意,此处我加了背景色gold,以便清晰看的变换后的元素位置,然后我们再加上tanslateZ(50px),效果如下:


可以看到向正前方移动50px后,正好成为了立方体的右面。left是围绕Y轴逆时针旋转90度,然后再向正前方移动50px。具体效果可自行调试。

3. 运行效果

  第2节的代码运行效果如下:


至此,简单的立方体即完成了。理解坐标,旋转方向后再用代码进行一步步调试,即可理解3D变换,为进一步学习打下基础。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值