3D 金字塔组件(CSS 四棱锥旋转特效,线框/尺寸/轴向可调)

CSSJS 许可:自研原创

3D 金字塔组件:纯 CSS preserve-3d 构建四棱锥,SVG 三角面 + 底面 + 发光顶点,支持线框模式、尺寸缩放、单轴/双轴旋转与速度调节,零 JS 依赖零图片。

效果演示(真实可交互)

完整代码

构建四棱锥的关键:四个等腰三角面分别 rotateY(0°/90°/180°/270°) 展开到四个方向,再 translateZ(110px) 推到底面边缘,最后绕底边 rotateX(-35.4°) 向内倾斜——倾斜角由 sinθ = 半底边 ÷ 三角高 算出,使四个顶点恰好汇聚于中心正上方。底面用 rotateX(90deg) 平放补齐,顶点加发光圆点收尾。

<div class="scene">
  <div class="pyr">
    <div class="base"></div>
    <div class="face" style="--i:0"><svg viewBox="0 0 200 190"><polygon points="100,0 0,190 200,190"/></svg></div>
    <div class="face" style="--i:1"><svg viewBox="0 0 200 190"><polygon points="100,0 0,190 200,190"/></svg></div>
    <div class="face" style="--i:2"><svg viewBox="0 0 200 190"><polygon points="100,0 0,190 200,190"/></svg></div>
    <div class="face" style="--i:3"><svg viewBox="0 0 200 190"><polygon points="100,0 0,190 200,190"/></svg></div>
    <div class="apex"></div>
  </div>
</div>
.scene { height: 400px; perspective: 900px; display: flex; align-items: center; justify-content: center; }
.pyr {
  position: relative; width: 0; height: 0;
  transform-style: preserve-3d;
  animation: spin 12s linear infinite;
}
.base {
  position: absolute; left: -110px; top: -110px;
  width: 220px; height: 220px; border-radius: 8px;
  border: 2px solid rgba(160, 180, 255, .55);
  transform: rotateX(90deg);               /* 平放成底面 */
}
.face {
  position: absolute; left: 50%; top: 50%;
  width: 200px; height: 190px;
  margin-left: -100px; margin-top: -190px; /* 底边中点对齐圆心 */
  transform-origin: 50% 100%;              /* 绕底边旋转 */
  transform: rotateY(calc(var(--i) * 90deg)) translateZ(110px) rotateX(-35.4deg);
  backface-visibility: hidden;
}
.face polygon { fill: rgba(108, 140, 255, .62); stroke: rgba(255, 255, 255, .45); stroke-width: 2; }
@keyframes spin { to { transform: rotateY(360deg); } }

线框模式只需把 polygon 的 fill 改为透明、stroke 改为霓虹色,即可呈现科技感线框金字塔(演示组件已内置该开关)。

参数说明

参数位置说明
倾斜角rotateX(-35.4deg)由 asin(110/190) 算出,改尺寸需同步重算
旋转速度animation: spin 12s演示中 4-30s 可调
旋转轴@keyframes仅 Y 为环绕,X+Y 为翻滚
尺寸scale 包裹层演示中 60-140% 可调
线框模式.pyr--wire 类fill 透明 + 霓虹描边

兼容性与性能

常见问题

Q: 四个三角面没有汇聚成一个顶点? 倾斜角必须满足 sinθ = 半底边 ÷ 三角面高。改动了底边或三角面尺寸后,务必按公式重算 rotateX 角度,否则顶点会散开或交叉。

Q: 为什么面之间有缝隙? 半透明面的边缘在透视下会有轻微透光缝隙,属正常现象。可略微加大三角面尺寸(如宽度 204px)让面轻微交叠,缝隙即消失。

Q: 想做成三棱锥(四面体)怎么改? 把底面去掉,四个三角面改用 rotateY(0°/120°/240°) 配合各自的空间倾斜角即可;四面体每个面都是等边三角形,数学上更对称。

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(缓动曲线)等属性即可,代码中有注释说明。

✍️ 作者与审核