CSS3 3D立方体多边形动画特效
关于css3 3D动画呢有三个效果
一、
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>CSS3 3D立方体多边形动画特效</title>
<style type="text/css">
* {
margin: 0 auto;
padding: 0;
}
@keyframes rotate {
0% {
transform: rotateX(0deg) rotateY(0deg);
}
100% {
transform: rotateX(360deg) rotateY(360deg);
}
}
html {
background: linear-gradient(#ff0 0%, #000 80%);
height: 100%;
}
.wrap {
margin-top: 200px;
perspective: 1000px;
/* 视图距元素的距离 相当于摄像机 */
}
.cube {
width: 200px;
height: 200px;
position: relative;
color: #fff;
font-size: 36px;
font-weight: bold;
text-align: center;
line-height: 200px;
transform-style: preserve-3d;
/* 默认flat 2D */
transform: rotateX(-30deg) rotateY(-70deg);
animation: rotate 20s infinite linear;
/*播放时间 播放次数为循环 缓动效果为匀速 */
}
.cube>div {
width: 100%;
height: 100%;
border: 1px solid #fff;
position: absolute;
background-color: #333;
opacity: .6;
transition: transform 0.4s ease-in;
}
.cube .out-front {
transform: translateZ(100px);
}
.cube .out-back {
transform: translateZ(-100px) rotateY(180deg);
}
.cube .out-left {
transform: translateX(-100px) rotateY(-90deg);
}
.cube .out-right {
transform: translateX(100px) rotateY(90deg);
}
.cube .out-top {
transform: translateY(-100px) rotateX(90deg);
}
.cube .out-bottom {
transform: translateY(100px) rotateX(-90deg);
}
.cube>span {
display: block;
width: 100px;
height: 100px;
border: 1px solid black;
background-color: #999;
position: absolute;
top: 50px;
left: 50px;
}
.cube .in-front {
transform: translateZ(50px);
}
.cube .in-back {
transform: translateZ(-50px) rotateY(180deg);
}
.cube .in-left {
transform: translateX(-50px) rotateY(-90deg);
}
.cube .in-right {
transform: translateX(50px) rotateY(90deg);
}
.cube .in-top {
transform: translateY(-50px) rotateX(90deg);
}
.cube .in-bottom {
transform: translateY(50px) rotateX(-90deg);
}
.wrap:hover .out-front {
transform: translateZ(200px);
}
.wrap:hover .out-back {
transform: translateZ(-200px) rotateY(180deg);
}
.wrap:hover .out-left {
transform: translateX(-200px) rotateY(-90deg);
}
.wrap:hover .out-right {
transform: translateX(200px) rotateY(90deg);
}
.wrap:hover .out-top {
transform: translateY(-200px) rotateX(90deg);
}
.wrap:hover .out-bottom {
transform: translateY(200px) rotateX(-90deg);
}
</style>
</head>
<body>
<div class="wrap">
<div class="cube">
<div class="out-front">前面</div>
<div class="out-back">后面</div>
<div class="out-left">左面</div>
<div class="out-right">右面</div>
<div class="out-top">上面</div>
<div class="out-bottom">下面</div>
<span class="in-front"></span>
<span class="in-back"></span>
<span class="in-left"></span>
<span class="in-right"></span>
<span class="in-top"></span>
<span class="in-bottom"></span>
</div>
</div>
</body>
</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">
<title>Document</title>
<style>
@keyframes rotate{
0%{
transform:rotateX(0deg) rotateY(0deg);
}
100%{
transform:rotateX(360deg) rotateY(360deg)
}
}
*{
margin:0 auto;
}
html{
height:100%;
}
.container{
/* perspective: 1000px; */
margin-top:200px;
}
.box{
width:200px;
height:200px;
position: relative;
transform-style: preserve-3d;
/* transform:rotateX(-30deg) rotateY(-70deg); */
animation:rotate 15s infinite ;
text-align: center;
line-height:200px;
font-family: 微软雅黑;
font-size: 80px;
}
.box>div{
width:200px;
height:200px;
border:1px solid black;
position: absolute;
}
.box>div:nth-child(1){
background:cadetblue;
transform: translateZ(100px);
}
.box>div:nth-child(6){
background:blue;
transform: translateZ(-100px) rotateY(180deg)
}
.box>div:nth-child(2){
background:chartreuse;
transform: translateX(-100px) rotateY(-90deg);
}
.box>div:nth-child(3){
background:fuchsia;
transform: translateX(100px) rotateY(90deg);
}
.box>div:nth-child(4){
background:yellow;
transform:translateY(-100px) rotateX(90deg) ;
}
.box>div:nth-child(5){
background:red;
transform:translateY(100px) rotateX(-90deg) ;
}
</style>
</head>
<body>
<div class="container">
<div class="box">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
</div>
</div>
</body>
</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">
<title>Document</title>
<style>
*{
margin:0 auto;
padding:0;
}
@keyframes rotate{
0%{
transform:rotateX(0deg) rotateY(0deg);
}
100%{
transform:rotateX(360deg) rotateY(360deg);
}
}
html{
background:linear-gradient(#ff0 0%,#000 80%);
height:100%;
}
.wrap{
perspective: 1000px;
margin-top:200px;
}
.cube{
width:200px;
height:200px;
position: relative;
color:#fff;
font-size: 36px;
font-weight: bold;
text-align: center;
line-height: 200px;
transform-style: preserve-3d;
animation: rotate 20s infinite;
}
.cube>div{
width:100%;
height:100%;
border:1px solid #fff;
position: absolute;
background:#333;
opacity: .6;
/* transform: transform 0.4s ease-in; */
}
.out-front{
transform: translateZ(100px);
}
.out-back{
transform: translateZ(-100px) rotateY(180deg);
}
.out-left{
transform: translateX(-100px) rotateY(-90deg);
}
.out-right{
transform: translateX(100px) rotateY(90deg);
}
.out-top{
transform: translateY(-100px) rotateX(90deg);
}
.out-bottom{
transform: translateY(100px) rotateX(-90deg);
}
</style>
</head>
<body>
<div class="wrap">
<div class="cube">
<div class="out-front">前面</div>
<div class="out-back">后面</div>
<div class="out-left">左面</div>
<div class="out-right">右面</div>
<div class="out-top">上面</div>
<div class="out-bottom">下面</div>
<span class="in-front"></span>
<span class="in-back"></span>
<span class="in-left"></span>
<span class="in-right"></span>
<span class="in-top"></span>
<span class="in-bottom"></span>
</div>
</div>
</body>
</html>