一、效果如下:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/731a2c5b32eaa35f4a741494cdebe09b.png)
二、代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>CSS3D实现webpack-Logo</title>
<style type="text/css">
@keyframes inner {
0% {
transform: rotateX(-33.5deg) rotateY(45deg);
}
40%,
to {
transform: rotateX(-33.5deg) rotateY(-315deg);
}
}
@keyframes outer {
0% {
transform: rotateX(-33.5deg) rotateY(45deg);
}
40%,
to {
transform: rotateX(-33.5deg) rotateY(315deg);
}
}
body,
html {
margin:0;
padding:0;
width: 100%;
height: 100%;
background: white;
display: flex;
}
ul {
padding: 0;
list-style: none;
}
.container {
position: relative;
margin: auto;
border: 1px solid #8d8d8d;
width: 700px;
height: 450px;
background-color: #48616d;
}
.perspective {
perspective: 200px;
transform: rotateX(10deg);
}
.cube-inner, .cube {
display: block;
position: absolute;
top: 50%;
left: 50%;
width:auto;
height:auto;
transform: translate(-50%,-50%) rotateX(-33.5deg) rotateY(45deg);;
transform-style: preserve-3d;
}
.cube {
margin: -50px 0 0 -50px;
transform-origin: 50px 50px;
-webkit-animation: outer 6s ease-in-out infinite 2s;
animation: outer 6s ease-in-out infinite 2s;
}
.cube-inner {
margin: -25px 0 0 -25px;
transform-origin: 25px 25px;
-webkit-animation: inner 6s ease-in-out infinite 2s;
animation: inner 6s ease-in-out infinite 2s;
}
.cube-inner li {
display: block;
position: absolute;
width: 50px;
height: 50px;
border: 1px solid #fff;
}
.cube-inner .top {
background: #92ddf1;
transform: rotateX(90deg) translateZ(25px);
}
.cube-inner .bottom {
background: #8dbef5;
transform: rotateX(-90deg) translateZ(25px);
}
.cube-inner .front {
background: #f5c493;
transform: translateZ(25px);
}
.cube-inner .back {
background: #95f3b8;
transform: translateZ(-25px);
}
.cube-inner .right {
background: #9bc5f8;
transform: rotateY(90deg) translateZ(25px);
}
.cube-inner .left {
background: #a2abfa;
transform: rotateY(-90deg) translateZ(25px);
}
.cube li {
display: block;
position: absolute;
width: 100px;
height: 100px;
border: 1px solid #fff;
opacity: 0.5;
}
.cube .top {
background: #92ddf1;
transform: rotateX(90deg) translateZ(50px);
}
.cube .bottom {
background: #8dbef5;
transform: rotateX(-90deg) translateZ(50px);
}
.cube .front {
background: #f5c493;
transform: translateZ(50px);
}
.cube .back {
background: #95f3b8;
transform: translateZ(-50px);
}
.cube .right {
background: #9bc5f8;
transform: rotateY(90deg) translateZ(50px);
}
.cube .left {
background: #a2abfa;
transform: rotateY(-90deg) translateZ(50px);
}
</style>
</head>
<body>
<div class="container">
<ul class="cube-inner">
<li class="top"></li>
<li class="bottom"></li>
<li class="front"></li>
<li class="back"></li>
<li class="right"></li>
<li class="left"></li>
</ul>
<ul class="cube">
<li class="top"></li>
<li class="bottom"></li>
<li class="front"></li>
<li class="back"></li>
<li class="right"></li>
<li class="left"></li>
</ul>
</div>
<div class="container perspective">
<ul class="cube-inner">
<li class="top"></li>
<li class="bottom"></li>
<li class="front"></li>
<li class="back"></li>
<li class="right"></li>
<li class="left"></li>
</ul>
<ul class="cube">
<li class="top"></li>
<li class="bottom"></li>
<li class="front"></li>
<li class="back"></li>
<li class="right"></li>
<li class="left"></li>
</ul>
</div>
</body>
</html>