CSS3实现旋转的魔法盒子

在学习CSS3的强大动画效果的时候被深深震撼,在B站观看学习视频并且仿照着写了一个页面,效果和代码如下:

代码如下html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <link href="../css/magicBox.css" rel="stylesheet" type="text/css" />
    <title>to your girl friend</title>
</head>
<body>
    <div class="container">
        <div class="outer-box">
            <div class="front"></div>
            <div class="back"></div>
            <div class="up"></div>
            <div class="down"></div>
            <div class="left"></div>
            <div class="right"></div>
        </div>
        

        <div class="inner-box">
            <div class="front"></div>
            <div class="back"></div>
            <div class="up"></div>
            <div class="down"></div>
            <div class="left"></div>
            <div class="right"></div>
        </div>


    </div>
</body>
</html>

css代码如下:

*{
    margin: 0;
    padding: 0;
}

html,body{
    width: 100%;
    height: 100%;
    background-color: pink;
}

.container{
    width: 400px;
    height: 440px;
    margin: 200px auto;
    /* flat	表示所有子元素在2D平面呈现;  preserve-3d 表示所有子元素在3D空间呈现*/
    transform-style: preserve-3d;       
    animation: rotate 8s linear infinite;
}

.container>.inner-box, .container>.outer-box{
    transform-style: preserve-3d;
}

.container div{
    position: absolute;
    transition: all .4s;
}

.outer-box div{
    position: absolute;
    width: 300px;
    height: 300px;
    opacity: 0.9;
    top: 200px;
    left: 0px;

}

.inner-box div{
    width: 200px;
    height: 200px;
    opacity: 0.9;
    top: 250px;
    left: 50px;
}

/* outer box*/
.outer-box>.front{
    background-image: url("../images/img1.jpg");
    background-size: 100%;
    background-repeat: no-repeat;
    transform: translateZ(150px);
}

.outer-box>.back{
    background-image: url("../images/img1.jpg");
    background-size: 100%;
    background-repeat: no-repeat;
    transform: translateZ(-150px);
}

.outer-box>.left{
    background-image: url("../images/img1.jpg");
    background-size: 100%;
    background-repeat: no-repeat;
    transform: rotateY(90deg) translateZ(150px);
}

.outer-box>.right{
    background-image: url("../images/img1.jpg");
    background-size: 100%;
    background-repeat: no-repeat;
    transform: rotateY(-90deg) translateZ(150px);
}

.outer-box>.up{
    background-image: url("../images/img1.jpg");
    background-size: 100%;
    background-repeat: no-repeat;
    transform: rotateX(-90deg) translateZ(-150px);
}

.outer-box>.down{
    background-image: url("../images/img1.jpg");
    background-size: 100%;
    background-repeat: no-repeat;
    transform: rotateX(-90deg) translateZ(150px);
}

/*inner box*/
.inner-box>.front{
    background-image: url("../images/img1.jpg");
    background-size: 100%;
    background-repeat: no-repeat;
    transform: translateZ(100px);
}

.inner-box>.back{
    background-image: url("../images/img1.jpg");
    background-size: 100%;
    background-repeat: no-repeat;
    transform: translateZ(-100px);
}

.inner-box>.left{
    background-image: url("../images/img1.jpg");
    background-size: 100%;
    background-repeat: no-repeat;
    transform: rotateY(90deg) translateZ(100px);
}

.inner-box>.right{
    background-image: url("../images/img1.jpg");
    background-size: 100%;
    background-repeat: no-repeat;
    transform: rotateY(-90deg) translateZ(100px);
}

.inner-box>.up{
    background-image: url("../images/img1.jpg");
    background-size: 100%;
    background-repeat: no-repeat;
    transform: rotateX(-90deg) translateZ(-100px);
}

.inner-box>.down{
    background-image: url("../images/img1.jpg");
    background-size: 100%;
    background-repeat: no-repeat;
    transform: rotateX(-90deg) translateZ(100px);
}

/* when you put the cursor on*/
.container:hover{
    cursor: pointer;
}

.container:hover .outer-box>.front{
    background-image: url("../images/img1.jpg");
    background-size: 100%;
    background-repeat: no-repeat;
    transform: translateZ(200px);
}

.container:hover .outer-box>.back{
    background-image: url("../images/img1.jpg");
    background-size: 100%;
    background-repeat: no-repeat;
    transform: translateZ(-200px);
}

.container:hover .outer-box>.left{
    background-image: url("../images/img1.jpg");
    background-size: 100%;
    background-repeat: no-repeat;
    transform: rotateY(90deg) translateZ(200px);
}

.container:hover .outer-box>.right{
    background-image: url("../images/img1.jpg");
    background-size: 100%;
    background-repeat: no-repeat;
    transform: rotateY(-90deg) translateZ(200px);
}

.container:hover .outer-box>.up{
    background-image: url("../images/img1.jpg");
    background-size: 100%;
    background-repeat: no-repeat;
    transform: rotateX(-90deg) translateZ(-200px);
}

.container:hover .outer-box>.down{
    background-image: url("../images/img1.jpg");
    background-size: 100%;
    background-repeat: no-repeat;
    transform: rotateX(-90deg) translateZ(200px);
}



@keyframes rotate{
    from{
        transform-origin:center center;
        transform: rotateX(0deg) rotateY(0deg);
    }
    to {
        transform-origin:center center;
        transform: rotateX(360deg) rotateY(360deg);
    }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值