css3立方体
想要实现一个带数字1-6的CSS3立方体,用纯CSS3(transform + transition)来完成,包含立体效果、数字排版和基础的旋转交互,让立方体更直观。
一、实现思路
- 容器结构:外层父容器作为立方体的“舞台”,内层
.cube是立方体本体,6个面(.face1-.face6)作为子元素。 - 3D变换:通过
transform-style: preserve-3d开启3D空间,给每个面设置不同的translateZ(位移)+rotateX/rotateY(旋转),拼接成立方体。 - 数字排版:每个面居中显示数字1-6,通过字体样式和定位保证视觉居中。
- 交互效果:添加鼠标悬浮旋转动画,方便查看所有面。
二、完整代码
1 | |
三、关键代码解释
3D 核心属性
perspective:给父容器(.cube-container)设置,模拟人眼的透视效果,数值越大立方体看起来越“远”,立体感越弱;数值越小越“近”,立体感越强。transform-style: preserve-3d:给立方体本体(.cube)设置,确保子元素(6个面)在3D空间中渲染,而不是扁平化。translateZ:每个面沿Z轴位移的距离是立方体边长的一半(300px/2=150px),这样6个面能刚好拼接成立方体的6个面。
旋转角度说明
- 前面/后面:仅Z轴位移,后面额外旋转180deg避免数字颠倒。
- 左面/右面:X轴位移 + Y轴旋转90/-90deg。
- 上面/下面:Y轴位移 + X轴旋转90/-90deg。
交互效果
鼠标悬浮在立方体容器上时,立方体沿Y轴旋转360deg(405deg=45deg+360deg),配合1秒的过渡动画,能清晰看到所有6个面的数字。
四、扩展优化(可选)
- 自定义样式:可修改每个面的背景色(如给不同数字设置不同颜色):
1
2
3
4
5
6.face1 { background-color: rgba(255, 99, 71, 0.8); color: white; }
.face2 { background-color: rgba(255, 165, 0, 0.8); color: white; }
.face3 { background-color: rgba(255, 215, 0, 0.8); color: #333; }
.face4 { background-color: rgba(144, 238, 144, 0.8); color: #333; }
.face5 { background-color: rgba(135, 206, 235, 0.8); color: #333; }
.face6 { background-color: rgba(123, 104, 238, 0.8); color: white; } - 控制旋转速度:修改
.cube的transition时长(如0.5s更快,2s更慢)。 - 固定视角:若不需要悬浮旋转,删除
.cube-container:hover .cube样式即可。
总结
- 实现CSS3立方体的核心是
perspective(透视)+transform-style: preserve-3d(3D空间)+ 6个面的精准translate/rotate变换。 - 每个面的Z轴位移距离必须是立方体边长的一半,才能拼接成完整的立方体。
- 数字居中通过
flex布局实现,简单且兼容性好,是CSS居中的最优方案。
css3立方体
https://cszy.top/2015-02-06 css3立方体/