在学习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);
}
}