CSS 3 旋转的魔方

html
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="utf-8"> 5 <title></title> 6 <style> 7 </style> 8 <link rel="stylesheet" type="text/css" href="style.css"> 9 </head> 10 <body> 11 <div class="container"> 12 <div class="box"> 13 <div class="kuang"></div> 14 <div class="kuang"></div> 15 <div class="kuang"></div> 16 <div class="front"><img src="img/1.jpg" class="pic"></div> 17 <div class="back"><img src="img/2.jpg" class="pic"></div> 18 <div class="top"><img src="img/3.jpg" class="pic"></div> 19 <div class="bottom"><img src="img/4.jpg" class="pic"></div> 20 <div class="left"><img src="img/5.jpg" class="pic"></div> 21 <div class="right"><img src="img/6.jpg" class="pic"></div> 22 </div> 23 </div> 24 </body> 25 </html>
css
1 body{ 2 background-color: aquamarine; 3 } 4 .container{ 5 margin: 200px auto; 6 position: relative; 7 8 } 9 .box{ 10 width: 100px; 11 height: 100px; 12 margin: 0 auto; 13 transform-style: preserve-3d; 14 transform: rotateX(-31deg) rotateY(-20deg); 15 animation-name: xuan; 16 animation-timing-function: linear; 17 animation-duration: 3s; 18 animation-iteration-count: infinite; 19 } 20 .box div{ 21 position: absolute; 22 width: 100px; 23 height: 100px; 24 opacity: 0.85; 25 } 26 .pic{width: 100%;height: 100%;} 27 .front{transform: rotateY(0deg) translateZ(50px);} 28 .back{transform: rotateY(0deg) translateZ(-50px);} 29 .left{transform: rotateY(90deg) translateZ(50px);} 30 .right{transform: rotateY(-90deg) translateZ(50px);} 31 .top{transform: rotateX(90deg) translateZ(50px);} 32 .bottom{transform: rotateX(-90deg) translateZ(50px);} 33 .kuang{ 34 padding:50px; 35 left: -50px; 36 top: -50px; 37 border: 5px solid greenyellow; 38 border-radius: 50%; 39 } 40 .box:hover .kuang{ 41 padding: 100px; 42 left: -100px; 43 top: -100px; 44 } 45 .box:hover{animation-play-state: paused;} 46 .box:hover .front{transform: rotateY(0deg) translateZ(100px);} 47 .box:hover .back{transform: rotateY(0deg) translateZ(-100px);} 48 .box:hover .left{transform: rotateY(90deg) translateZ(100px);} 49 .box:hover .right{transform: rotateY(-90deg) translateZ(100px);} 50 .box:hover .top{transform: rotateX(90deg) translateZ(100px);} 51 .box:hover .bottom{transform: rotateX(-90deg) translateZ(100px);} 52 .box div:first-child{transform: rotateY(90deg);} 53 .box div:nth-child(2){transform: rotateX(90deg);} 54 @keyframes xuan{ 55 0%{transform: rotateX(0) rotateY(0);} 56 100%{transform: rotateX(360deg) rotateY(360deg);} 57 }
大概的思路是:
设置三维立体视角
transform-style: preserve-3d;
然后每一张图片都给出不同的位置
.front{transform: rotateY(0deg) translateZ(50px);}
开启动画效果如图形旋转起来
@keyframes xuan{
0%{transform: rotateX(0) rotateY(0);}
100%{transform: rotateX(360deg) rotateY(360deg);}
}

浙公网安备 33010602011771号