1.3d 和2d不同点是多了一个z轴,2d都是一些平移效果,3d可以让它按照轴为中心旋转2.为了增加空间想象多了一个左手法则解释:伸出左手,让拇指和食指成“L”形,大拇指向右,食指向上,中指指向前方。这样我们就建立了一个左手坐标系,拇指、食指和中指分别代表X、Y、Z轴的正方向。如下图
- 方向判断的口诀
x左边是负的,右边是正的y上面是负的, 下面是正的z里面是负的, 外面是正的

rotateX()
1.就是沿着 x 立体旋转.例如transform:rotateX(180deg);旋转时候也是图片中心为轴旋转
rotateY()
1.就是沿着 y 立体旋转.例如transform:rotateY(180deg);旋转时候也是图片中心为轴旋转
rotateZ()
1.就是沿着 z 立体旋转.例如transform:rotateZ(180deg);旋转时候也是图片中心为轴旋转
移动 translateX(x)/translateY(y)/translateZ(z)
1.3d比2d 移动多了一个 translateZ(z)2.[注意]其中,x和y可以是长度值,也可以是百分比,百分比是相对于其本身元素水平方向的宽度和垂直方向的高度和;z只能设置长度值3.简写:translate3d(x,y,z)
透视 — perspective
1.电脑显示屏是一个2D平面,图像之所以具有立体感(3D效果),其实只是一种视觉呈现,通过透视可以实现此目的。2.透视可以将一个2D平面,在转换的过程当中,呈现3D效果。- 透视原理: 近大远小 。- 浏览器透视:把近大远小的所有图像,透视在屏幕上。- perspective:视距,表示视点距离屏幕的长短。视点,用于模拟透视效果时人眼的位置3.并非任何情况下需要透视效果,根据开发需要进行设置。4.perspective 一般作为一个属性,设置给父元素,作用于所有3D转换的子元素
使用透视案例
<!doctype html><html lang="en"><head><meta charset="UTF-8"><title>Document</title><style>body {perspective: 1000px; /*视距 距离 眼睛到屏幕的距离 视距越大效果越不明显 视距越小,透视效果越明显*/}img {display: block;margin: 100px auto;transition: all 1s;}img:hover {transform: rotateX(360deg);}</style></head><body><img src="images/x.jpg" alt=""/></body></html>
元素不面向屏幕时是否可见 — backface-visibility
1.backface-visibility 属性定义当元素不面向屏幕时是否可见。
反转盒子案例
div {
width: 224px;
height: 224px;
margin: 100px auto;
position: relative;
}
div img {
position: absolute;
top: 0;
left: 0;
transition: all 1s;
}
div img:first-child {
z-index: 1;
backface-visibility: hidden; /* 不是正面对象屏幕,就隐藏 */
}
div:hover img {
transform: rotateY(180deg);
}
案例

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<style>
section{
width: 500px;
height: 500px;
margin: 0 auto;
background: url('http://pic22.nipic.com/20120725/9676681_001949824394_2.jpg') no-repeat;
background-size: cover;
position: relative;
perspective: 1000px; /*给父盒子添加透视效果 一定要加透视效果*/
}
.ldoor,.rdoor{
position: absolute;
background-color: red;
border:1px solid #000;
top:0;
width: 250px;
height: 500px;
}
.ldoor{
transform-origin: left;/*旋转轴*/
left: 0;
}
.rdoor{
transform-origin: right;/*旋转轴*/
right: 0;
}
/*鼠标经过section 盒子 两个门盒子 翻转 rotateY*/
section:hover .ldoor {
transform: rotateY(-130deg); /*因为往左边翻转,所以是负值*/
}
section:hover .rdoor {
transform: rotateY(130deg);
}
</style>
</head>
<body>
<section>
<div class="ldoor"></div>
<div class="rdoor"></div>
</section>
</body>
</html>
