1、3D的特点
- 进大远小
- 物体后面遮挡不可见
  
 x:右为正
 y:下为正
 z:屏幕外是正,往里是负
3D移动之translate
transform:translateX(100px);//仅仅是x轴移动。px或百分比
transform:translateY(100px);//仅仅是y轴移动,px或百分比
transform:translateZ(100px);//仅仅是z轴移动,一般用px单位
transform:translate3D(x,y,z);//x,y,z移动,均不可省略,可以写0
透视 perspactive
- 想要在网页产生3D效果需要透视(理解成3D物体投影在2D平面内)
- 透视也叫视距:人的眼睛到屏幕的距离
- 距离视觉点越近在电脑屏面成像越大,透视值越小,物体看着越大
- 透视的单位是像素
注意:
透视是写在被观察元素的父盒子里的
transtlateZ
1、要搭配perspactive使用,只写translateZ的话,看不出3d在z轴的移动效果
 2、透视是写在被观察元素的父盒子里的
 3、透视值越大,表示视距越大,代表眼睛离物体越远,视觉效果越小
 4、translateZ值越大,表示物体离屏幕外越近,视觉效果看着越大
<!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;
        }
        div{
            width: 100px;
            height: 100px;
            margin: 100px auto;
            background-color: orange;
            transform: translate3d(0,0,100px);
        }
    </style>
</head>
<body>
    <div></div>
</body>
</html>
3d移动和透视
3D旋转rotate3d
可以让元素在三维平面内沿着x轴、y轴、z轴或者自定义轴进行旋转
transform:rotateX(45deg);//沿着x轴正方向旋转45度
transform:rotateY(45deg);//沿着y轴正方向旋转45度
transform:rotateZ(45deg);//沿着z轴正方向旋转45度
transform:rotate3d(x,y,z,deg);//沿着自定义轴(矢量)旋转deg度

 左手弯曲,拇指指向x、y正方向,四指弯曲方向就是该元素沿x轴\y轴旋转的正方向
<!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;
        }
        img {
            width: 200px;
            height: 200px;
            margin: 50px;
            transition: all 3s ;
        }
        .dog1:hover{
            transform: rotateX(360deg);
        }
        .dog2:hover{
            transform: rotateY(360deg);
        }
        .dog3:hover{
            transform: rotateZ(360deg);
        }
        .dog4:hover{
            transform: rotate3d(100,100,100,360deg);
        }
    </style>
</head>
<body>
    <img class="dog1" src="../images/猛男.jpg" alt="">
    <img class="dog2" src="../images/猛男.jpg" alt="">
    <img src="../images/media/pic.jpg" alt="" class="dog3">
    <img class="dog4" src="../images/猛男.jpg" alt="">
    <!-- mmss -->
</body>
</html>
3d旋转
3D呈现transform-style**
- 控制子元素是否开启三维立体环境
- transform-style:flat;子元素不开启3d立体空间(默认/不写)
- transform-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;
            background-color: purple;
            margin: 100px auto;
            transform-style: preserve-3d;
            transition: all 2s;
        }
        .box:hover{
            transform: rotateY(70deg);
        }
        .box div{
            position: absolute;
            top: 0;
            left:0;
            width: 100%;
            height: 100%;
            background-color: orange;
        }
        .box div:last-child{
            background-color: olivedrab;
            transform: rotate3d(1,0,0,70deg);
        }
        
    </style>
</head>
<body>
    <div class="box">
        <div>1</div>
        <div>2</div>
    </div>
</body>
</html>



















