方法一:(忽略左右两边,保证上下前后四面旋转到前面时都是正的)
步骤一:
一个大盒子包着6个小盒子;
步骤二:
大盒子的宽高和小盒子的一样;
步骤三:
子绝父相,让6个小盒子脱离文档流,叠在一起;
步骤四:
给6个小盒子设置不同背景颜色;
步骤五:
先做上下前后四个面,分别围绕X轴旋转90deg,180deg,270deg,360deg,再继续沿Z轴平移宽度的一半。
步骤六:
再做左右两个面,分别围绕X轴平移小盒子宽的一半(其中一个是反方向),再围绕Y轴旋转90deg.
步骤七:
给父元素加transform-style: preserve-3d;转成3d.
步骤八:
让父元素旋转,查看效果, transform:rotateY(30deg) rotateX(30deg);
步骤九:
给父元素加动画,animation: movie 5s linear infinite;
写规则;@keyframes movie{ form{ transform:rotateY(0deg) rotateX(0deg); } to{ transform:rotateY(360deg) rotateX(360deg); } }
HTML及CSS样式如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>立方体2</title> <style type="text/css"> *{ margin: 0; padding: 0; list-style: none; } ul{ width: 200px; height: 200px; /* border:1px solid black; */ /* box-sizing: border-box; */ margin:200px auto; position:relative; transform-style: preserve-3d; transform:rotateY(30deg) rotateX(30deg); animation: movie 5s linear infinite; } @keyframes movie{ form{ transform:rotateY(0deg) rotateX(0deg); } to{ transform:rotateY(360deg) rotateX(360deg); } } li{ width: 200px; height: 200px; text-align: center; line-height: 200px; position:absolute; left:0; top: 0; opacity:0.5; } ul li:nth-child(1){ background: red; transform: rotateX(90deg) translateZ(100px); } ul li:nth-child(2){ background: yellow; transform: rotateX(180deg) translateZ(100px); } ul li:nth-child(3){ background: green; transform: rotateX(270deg) translateZ(100px); } ul li:nth-child(4){ background: pink; transform: rotateX(360deg) translateZ(100px); } ul li:nth-child(5){ background: blue; transform: translateX(-100px) rotateY(90deg); } ul li:nth-child(6){ background: orange; transform: translateX(100px) rotateY(90deg); } </style> </head> <body> <ul> <li>1</li> <li>2</li> <li>3</li> <li>4</li> <li>5</li> <li>6</li> </ul> </body> </html>