利用CSS3动画特性的小例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
| <!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> .wapper{ width: 300px; height: 300px; } .box{ position: absolute; width: 200px; height: 200px; top: 150px; left: 50%; animation: move 5s linear infinite; margin: 0 auto; transform-style: preserve-3d; backface-visibility: hidden; transform-origin: center; } .box div{ position: absolute; top: 100px; display: inline-block; width: 100px; height: 100px; font-size: 16px; text-align: center; line-height: 100px; opacity: 0.7; } .box div:nth-of-type(1){ background: red; left: 0px; transform: rotateY(90deg) translateZ(50px) translateX(50px); } .box div:nth-of-type(2){ background: yellow; left: 100px; } .box div:nth-of-type(3){ background: blue; left: 200px; transform: rotateY(-90deg) translateZ(50px) translateX(-50px); } .box div:nth-of-type(4){ background: green; left: 300px; transform: translateX(-200px) translateZ(-100px); } .box div:nth-of-type(5){ position: absolute; background: purple; top: 0px; left: 100px; transform: rotateX(90deg) translateZ(-50px) translateY(-50px) } .box div:nth-of-type(6){ top: 200px; left: 100px; background: darkkhaki; transform: rotateX(-90deg) translateZ(-50px) translateY(50px); } @keyframes move{ 0%{ transform: rotateX(0deg) rotateY(0deg); } 100%{ transform: rotateX(360deg) rotateY(360deg); } } </style> </head> <body> <div class="wapper"> <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>
|
通过折叠变换,3d操作,把6个正方形拼成魔方
总结一下在2d和3d中坐标轴的方向来判断translate和rotate的方向
坐标轴横X竖Y面朝自己是Z轴
在2d中translateZ和translateX方向是一样的