有六塊重疊在一塊兒的材料板子(div),經過3D變換粘貼成一個立方體魔方,有六個面,而後把魔方釘在另一個板子(div)上。當對這個板子進行3D變換的時候,釘在其上面的魔方也隨之3D變換。html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>3D魔方</title> <style> /*定義魔方運動的舞臺*/ #stage{ width: 1200px; height: 600px; margin: auto; background-color: black; perspective: 1000px; } /*定義魔方的托盤*/ #cube{ background-color: rgba(255,91,196,0.2); position: absolute; width: 104px; height: 124px; left: 550px; top: 180px; transform:rotateY(40deg); transform-style: preserve-3d; color: white; text-align: center; } /*定義魔方的六個面 1*/ #cube div{ background-color: rgba(53,165,14,0.2); position: absolute; width: 100px; height: 100px; line-height: 100px; text-align: center; transform-style: preserve-3d; border: 2px solid rgba(255, 255, 255, 0.5); color: white; box-shadow: 0 0 3em rgba(255, 255, 255, 0.4); } /*定義魔方的六個面 2*/ #front{ transform: translateZ(100px); } #left{ transform: rotateY(-90deg) translateX(50px) translateZ(50px) ; } #right{ transform: rotateY(90deg) translateX(-50px) translateZ(50px) ; } #top{ transform: rotateX(90deg) translateY(50px) translateZ(50px) ; } #bottom{ transform: rotateX(-90deg) translateY(-50px) translateZ(50px) ; } #back{ transform: rotateY(180deg); } /*定義動畫幀 E*/ @keyframes spin { 0% { transform:rotateX(0deg) rotateY(0deg) rotateZ(0deg); } 50% { transform:rotateX(-360deg) rotateY(0deg) rotateZ(180deg); } 100% { transform:rotateX(-360deg) rotateY(360deg) rotateZ(360deg); } } /*啓動魔方動畫 S*/ #cube { animation: 4s spin ease-in-out infinite; } </style> </head> <body> <div id="stage"> <div id="cube">魔方託板 <div id="front">前</div> <div id="back">後</div> <div id="left">左</div> <div id="right">右</div> <div id="top">上</div> <div id="bottom">底</div> </div> </div> </body> </html>