1.1 三维坐标系
三位坐标系-->立体空间,由3个轴共同组成
1.2 3D移动 translate3d
3D移动在2D移动的基础上多加了一个z轴的可移动方向,z轴正值越大,我们看到的物体就越大
合并写法xyz轴不能直接省略,如果没有就写0
1.3 透视perspective(越小效果越明显)
/* style里面的内容*/
body{
/* 透视写到被观察元素的父盒子上面 */
perspective: 200px;
/* 近大远小,数值越小离眼睛越近,成像越大 */
}
div {
width:200px;
height:200px;
background-color:pink;
}
/*body里面的内容写一个div即可验证*/
1.4 translateZ
物体距离眼睛越近,所成的像越大,透视用于父盒子,translateZ可以用于设置子盒子
父盒子整体用透视,里面的子盒子用translateZ来调
1.5 3D旋转 rotate3d 以下左手四指方向均为正值方向
rotateX旋转方向左手准则:
rotateY旋转方向左手准则:
rotateZ类似2D旋转
transfrom:rotate3d(1,0,0,45deg)表示沿X轴旋转45度(沿哪个轴旋转哪个数值为1)
transfrom:rotate3d(1,1,0,45deg)矢量表示,矢量合成方向旋转
1.6 3D呈现 transfrom-style
preserve保持3D
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<style>
body {
perspective: 500px;
}
.box {
position: relative;
width: 200px;
height: 200px;
margin: 100px auto;
translate: all 2s;
/* 让子元素保持3D立体空间 */
transform-style: preserve-3d;
}
.box:hover{
transform: rotateY(60deg);
}
.box div{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
background-color: pink;
}
.box div:last-child{
background-color: purple;
transform: rotateX(80deg);
}
</style>
</head>
<body>
<div class="box">
<div></div>
<div></div>
</div>
</body>
</html>
2. 浏览器私有前缀