CSS3中3D转换实现立方体效果

CSS3中3D转换实现立方体效果

html:

<!-- 舞台元素,设置perspective,让其子元素获得透视效果 -->
    <div class="rect-wrap">
        <!-- 容器,设置transform-style:preserve-3d,让其子元素在3D空间呈现 -->
        <div class="container">
            <!-- 立方体的六个面 -->
            <div class="top slide"></div>
            <div class="bottom slide"></div>
            <div class="left slide"></div>
            <div class="right slide"></div>
            <div class="front slide"></div>
            <div class="back slide"></div>
        </div>
    </div>

CSS样式:

<title>CSS3中3D转换实现立方体效果</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .rect-wrap{
            position: relative;
            perspective: 1600px;
        }
        .container{
            width: 800px;
            height: 800px;
            margin: 0 auto ;
            transform-style: preserve-3d;
            /* 设置3D空间的原点在平面中心再向z轴移动200px的位置 */
            transform-origin: 50% 50% 200px;
            animation: myrotate 30s linear infinite;
        }
         /* 立方体的每个面 */
        .slide{
            width: 400px;
            height: 400px;
            position: absolute;
        }
        /* 立方体的顶面 */
        .top{
            background-color: rgba(101, 198, 92, 0.6);
            left: 200px;
            top: -200px;
            transform: rotateX(-90deg);
            transform-origin: bottom;
        }
          /* 立方体的底面 */
          .bottom{
            background-color: rgba(206, 146, 185, 0.6);
            left: 200px;
            bottom: -200px;
            transform: rotateX(90deg);
            transform-origin: top;
          }
           /* 立方体的左面 */
           .left{
            background-color: rgba(178, 178, 207, 0.6);
            left: -200px;
            top: 200px;
            transform: rotateY(90deg);
            transform-origin: right;
           }
           /* 立方体的右面 */
           .right{
            background-color: rgba(43, 47, 151, 0.6);
            left: 600px;
            top: 200px;
            transform: rotateY(-90deg);
            transform-origin: left;
           }
            /* 立方体的前面 */
            .front{
                background-color: rgba(246, 154, 33, 0.6);
                left: 200px;
                top: 200px;
                /* 立方体的前面对着屏幕,所以不用旋转,只需向z轴前移动距离 */
                transform: translateZ(400px);
            }
            /* 立方体的后面 */
            .back{
                background-color: rgba(0,255,0,0.6);
                left: 200px;
                top: 200px;
                /* 立方体后面正对着屏幕,所以不用旋转,只需向z轴后移动距离*/
                transform: translateZ(0);
            }
            @keyframes myrotate{
                    0%{
                        transform:rotateX(0deg) rotateY(0deg);
                    }
                    10%{
                        transform:rotateX(0deg) rotateY(180deg);
                    }
                    20%{
                        transform:rotateX(-180deg) rotateY(180deg);
                    }
                    30%{
                        transform:rotateX(-360deg) rotateY(180deg);
                    }
                    40%{
                        transform:rotateX(-360deg) rotateY(360deg);
                    }
                    50%{
                        transform:rotateX(-180deg) rotateY(360deg);
                    }
                    60%{
                        transform:rotateX(90deg) rotateY(180deg);
                    }
                    70%{
                        transform:rotateX(0) rotateY(180deg);
                    }
                    80%{
                        transform:rotateX(90deg) rotateY(90deg);
                    }
                    90%{
                        transform:rotateX(90deg) rotateX(0);
                    }
                    100%{
                        transform: rotateX(0) rotate(0);
                        }  
                }
    </style>

预览效果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值