css3 3d旋转图片立方体特效代码

一、什么是css3 3d旋转 ?

     形成一个3D空间: transform-style:preserve-3d    ( 让父元素形成3D,让其子元素在3D空间进行变化 )。

3d场景,在垂直于屏幕的方法,相对于3d多出个z轴,Z轴:靠近屏幕的方向是正向,远离屏幕的方向是反向,2d场景,在屏幕上水平和垂直的交叉线x轴和y轴。

                                   

二、关于css 3d旋转的相关属性及使用方法

变形属性:transform 
 
3D功能函数 ----3D的位移:transform:translate3d(x,y,z);                          3D缩放:transform:scale3d(x,y,z);
                                                            translateX()                                                                    scaleX()
                                                            translateY()                                                                    scaleY()
                                                            translateZ()                                                                    scaleZ()

3D的旋转:   ransform:rotate();
                                   rotateX()                                                         - x:是一个0到1之间的数值,主要用来描述元素围绕X轴旋转的矢量值;
                                   rotateY()                                                         - y:是一个0到1之间的数值,主要用来描述元素围绕Y轴旋转的矢量值;
                                   rotateZ()  //默认情况效果类似                         - z:是一个0到1之间的数值,主要用来描述元素围绕Z轴旋转的矢量值;
                                   rotate3D()
                                         rotate3D(x,y,z,a)   [ 0不旋转。1旋转 ]            - a:是一个角度值,主要用来指定元素在3D空间旋转的角度,如果其值为正值,元素顺时针旋转,反之元素逆时针旋转。
 
注意:在translate属性值中要是填写三个值,必须加上3d,即translate3d,rotate3d,scale3d
 
 
三、css3 3d旋转图片立方体特效代码
 
 
思路分析:先在一个盒子里面设置6个面,6个面都放在盒子内部,然后分别把6个面往6个不同的方向运动,形成立方体。
 
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin:0;
            padding:0;
        }
        .box{
            width:300px;
            height:300px;
            position:fixed;
            left:0;right:0;
            top:0;bottom:0;
            margin:auto;
            transform-style: preserve-3d;        //形成3d空间)
            transform:rotateX(20deg) rotateY(30deg);    //为了方便观察让3D舞台转动角度 
            transition:2s;   //为了过度看起来更舒服
        }
        .box div{
            width:300px;
            height:300px;
            text-align: center;
            line-height:300px;
            font-size: 100px;
            font-weight:bolder;
            color:#fff;
            position:absolute;    //让6个面全部定位在父元素里面 
            left:0;top:0;
            opacity:0.5;   //透明属性
            border:2px solid #000;
            backface-visibility:hidden;   //使背面不可见,方便自己看,也可以不设置
        }
 
        .con1{
            /* 第一个面往前走 */
            background:red;
            transform:translateZ(150px);
        }
        .con2{
            /* 第二个面往后走 */
            background:blue;
            transform:translateZ(-150px) rotateY(180deg); /*rotateY(180deg)  让正面朝外*/
        }
        .con3{
            /* 先往上位移150px  再绕着X轴转动90deg */
            background:pink;
            transform:translateY(-150px) rotateX(90deg);
        }
        .con4{
            /* 先往下位移150px,再绕着X轴转动90deg */
            background:green;
            transform:translateY(150px) rotateX(-90deg);
        }

        .con5{
            /* 先往左位移150px , 再绕着Y轴转动90deg */
            background:rosybrown;
            transform:translateX(-150px) rotateY(-90deg);
        }
        .con6{
            /* 先往右侧位移150px,再绕着Y轴转动90deg */
            background:#000;
            transform:translateX(150px) rotateY(90deg);
        }

    </style>
</head>
<body>
    <div class="box">
        <div class="con1">1</div>
        <div class="con2">2</div>
        <div class="con3">3</div>
        <div class="con4">4</div>
        <div class="con5">5</div>
        <div class="con6">6</div>
    </div>
</body>
</html>

猜你喜欢

转载自www.cnblogs.com/BUhuo/p/12386166.html