3D 立方体旋转特效(纯 CSS,速度/尺寸/旋转轴实时可调)

CSS 许可:自研原创

3D 立方体旋转特效:纯 CSS preserve-3d 实现六面彩色立方体,速度、尺寸、旋转轴实时可调,支持单轴/双轴旋转与暂停,零 JS 依赖零图片。

效果演示(真实可交互)

前
后
右
左
上
下

完整代码

<div class="scene">
  <div class="cube">
    <div class="face front">前</div>
    <div class="face back">后</div>
    <div class="face right">右</div>
    <div class="face left">左</div>
    <div class="face top">上</div>
    <div class="face bottom">下</div>
  </div>
</div>
.scene {
  width: 200px;
  height: 200px;
  perspective: 800px;          /* 视距越近 3D 感越强 */
}
.cube {
  position: relative;
  width: 100%;
  height: 100%;
  transform-style: preserve-3d;
  animation: spin 10s linear infinite;
}
.face {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 2px solid rgba(255,255,255,.35);
  color: #fff;
  backface-visibility: hidden;
}
.front  { background: #6c8cff; transform: rotateY(0deg)    translateZ(100px); }
.back   { background: #ff8ecf; transform: rotateY(180deg)  translateZ(100px); }
.right  { background: #4be3ac; transform: rotateY(90deg)   translateZ(100px); }
.left   { background: #ffc145; transform: rotateY(-90deg)  translateZ(100px); }
.top    { background: #a96cff; transform: rotateX(90deg)   translateZ(100px); }
.bottom { background: #ff5f6d; transform: rotateX(-90deg)  translateZ(100px); }

@keyframes spin {
  from { transform: rotateX(0deg)   rotateY(0deg); }
  to   { transform: rotateX(360deg) rotateY(360deg); }
}

关键三要素:perspective(视距)、transform-style: preserve-3d(子元素保持 3D 空间)、translateZ(边长/2)(把每个面推到立方体表面)。

参数说明

参数位置说明
旋转速度animation: spin 10s周期越短转得越快
尺寸width/height + translateZ边长与面偏移必须同步,偏移 = 边长一半
旋转轴@keyframes spin单轴只写 rotateX 或 rotateY,双轴组合写
视距perspective: 800px300-1200px,越小透视越夸张
暂停animation-play-state: paused无障碍/截图场景可暂停

兼容性与性能

常见问题

Q: 面与面之间有缝隙或重叠怎么办? 几乎都是 translateZ 与边长不匹配导致的。记住公式:translateZ = 边长 / 2,且所有面的 width/height 必须一致;改用 inset: 0 让面自动继承父级尺寸可避免手填尺寸出错。

Q: 想让立方体里面显示内容(如相册)怎么做? 去掉 backface-visibility: hidden,把图片放在各面即可实现「内窥」效果;如需半透明外壳,给面加 rgba() 背景与 opacity。

Q: 移动端卡顿怎么办? 降低旋转频率(如 20s 一圈),并避免在立方体外层叠加 filter/box-shadow 等触发重绘的属性;若仍卡顿,可缩小立方体尺寸减少像素覆盖。

Q: 可以商用吗? 可以。本组件为粤喵自研原创代码,免费商用无需署名,可自由改色改速。

许可与来源

  • 许可证:自研原创 —— 粤喵自研原创,可免费用于个人与商业项目,无需署名。查看来源公示与许可清单
  • 来源:粤喵团队原创自研(从效果思路到代码实现均为独立完成,未直接复制第三方代码)
  • 首次发布:2026-09-01 · 最近更新:2026-09-01
  • 修改日志:2026-09-01 首次发布;2026-09-13 补充许可证与来源标注、复制按钮说明与法务页入口
  • 纠错:联系页面 / min@cactus.asia,2 个工作日内核实处理

常见问题

这个组件可以商用吗?

可以。本组件为粤喵自研原创,可免费用于个人和商业项目,无需署名。

浏览器兼容性如何?

支持所有现代浏览器(Chrome / Firefox / Safari / Edge 最新版本)。旧版 IE 不支持 CSS 动画相关特性。

怎么修改动画参数?

直接调整 CSS 中的 animation-duration(时长)、animation-timing-function(缓动曲线)等属性即可,代码中有注释说明。

✍️ 作者与审核