css3 3D转换

css3 3D转换

1、3D转换基础

1、三维变换呢是基于二维变换的相同属性,主要包括以下几种功能函数:3D位移、3D旋转、3D缩放、3D矩阵
2、3D就是物体在2D平面呈现的例子
3、3D的特点:近大远小,物体后面遮挡后不可见
4、三维坐标系:就是指立体空间,立体空间是由三个轴共同组成的。
5、x轴:水平向右
   y轴:垂直向下
   z轴:垂直屏幕,外面是正值,里面是负值
6、透视,也叫作景深,景深属性,表现为远小近大 100px~1200px(在其中参数选择整百的进行调整,建议为1200px,效果比较的好)。1.可以在父级元素上添加 perspective:1200px(会为旋转的属性提供一部分远大近小的效果)
        2.可以在子级元素上添加transform:perspective(1200px) (因为一般都是需要旋转属性的,所以如果添加在子级元素的上的话会造成属性覆盖 所以推荐在父级添加)
 div{
            width: 200px;
            height: 200px;
            border: 1px solid black;
            perspective:200px;
        }
img{
            width: 200px;
            height: 200px;
            border: 1px solid black;
            /* 绕着x轴旋转 */
            transform: rotateZ(45deg)
        


        }

2、3D位移

1、旋转:
   写法:设置景深,数值越小,透视效果越好
        /* 绕着x轴旋转 */
     transform: rotateX(45deg)
       /* 绕着y轴旋转 */
     transform: rotateY(45deg)
        /* 绕着y轴旋转 */
     transform: rotateZ(45deg)
       /* rotate3d:绕着3个轴线旋转 */
      transform: rotate3d(1,2,3,45deg);
      
       /* 对角线旋转 */
        transform: rotate3d(1,1,0,45deg);
2、Z轴是指出屏幕,指向我们的一个轴,所以绕Z轴旋转和rotate没有区别。都是屏幕旋转
3、移动:
            /* 绕X轴位移 */
            transform: translateX(100px);
            
             /* 绕Y轴位移 */
            transform: translateY(100px);
             
             /* 绕Z轴位移 */
            transform: translateZ(100px);
          注意:位移不是沿着水平面在移动,而是沿着当前的轴线移动
           /* 改变轴线的位置 */
            transform: rotateY(45deg) translateX(50px);
            
            /* 3D移动,表示分别要移动的轴的方向的距离 */
            transform: translate3d(x,y,z);
             transform: translate3d(100px,100px,100px);
            
4、3D移动:3D移动在2D移动的基础上多加了一个可以移动的方向,就是z轴方向
          
          /* 3D移动,表示分别要移动的轴的方向的距离 */
          /*  x,y,z不能进行省略,可以设置为0  */    
            /* transform: translate3d(x,y,z); */
            transform: translate3d(100px,100px,100px);
            
5、注意:transform会进行覆盖,

6、透视:perspective:在2D平面产生近大远小视觉立体,但是只是效果是2维的,如果想要在网页上面产生        3D效果需要透视,模拟人类的视觉位置,可以理解为视距,就是人的眼睛到屏幕的距离,距离视觉点        越近的在电脑平面成像越大,越远成像越小。透视写在被观察元素的父盒子上面,单位是px

7、transform-style:控制子元素是否开启三维立体环境,flat默认是不开启3d立体空间。preserve-3d
                   子元素开启立体空间,在父盒子设置
                     /* 让子元素保持3d立体环境,父盒子设置,重要 */
                    transform-style: preserve-3d;
8、 backface-visibility:
        /* 决定元素旋转背面是否可见 */
            backface-visibility: hidden;

3、翻转图片代码.html

<!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>
        div {
            position: relative;
            width: 200px;
            height: 200px;
            margin: 0 auto;
            transition: all 0.3s;
            perspective: 200px;

            border-radius: 50%;
            transform-style: preserve-3d;



        }

        img {

            width: 200px;
            height: 200px;
            position: absolute;
            top: 0;
            left: 0;
            /* 决定元素旋转背面是否课件 */
            backface-visibility: hidden;


        }

        img:first-child {
            z-index: 1;
        }

        img:last-child {
            transform: rotateY(180deg);
        }

        div:hover {
            transform: rotateY(180deg);

        }
    </style>
</head>

<body>
    <div>
        <img src="../img/dog.jpg" alt="">
        <img src="../img/爱心2.png" alt="">
    </div>
</body>

</html>

4、transform-style立体代码

<!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>transform-style</title>
    <style>
        nav {
            position: relative;
            width: 200px;
            height: 200px;
            margin: 0 auto;
            perspective: 300px;
            transition: all 2s;
            transform-style: preserve-3d;
        }

        div {
            position: absolute;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background-color: red;
        }

        nav div:last-child {
            background-color: blue;
            transform: rotateX(80deg);
            
        }
        nav:hover{
            transform: rotateY(60deg);
        }
    </style>
</head>

<body>
    <nav>
        <div></div>
        <div></div>
    </nav>
</body>

</html>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值