纯HTML+CSS实现3D空间正方体旋转

以下是一个使用纯HTML和CSS实现的3D空间正方体旋转效果。

一、效果

效果特点:

  1. 半透明发光正方体进行多轴旋转

  2. 核心光点脉冲效果

  3. 正方体边框的霓虹光效

  4. 多重阴影叠加的立体效果

实现原理:

  1. 使用CSS 3D变换实现正方体结构

  2. 通过preserve-3d保持三维空间关系

  3. 组合使用rotateX/Y/Z实现多轴旋转

  4. 使用box-shadow实现发光效果

可以通过调整以下参数自定义效果:

  • 修改cube的尺寸调整正方体大小

  • 调整animation-duration改变旋转速度

  • 修改border和background颜色改变主题色

  • 调整box-shadow参数改变发光强度


二、代码

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <style>
        body {
            margin: 0;
            height: 100vh;
            display: flex;
            justify-content: center;
            align-items: center;
            background: #000;
            overflow: hidden;
        }


        /* 旋转立方体容器 */
        .cube-container {
            position: relative;
            width: 300px;
            height: 300px;
            transform-style: preserve-3d;
            animation: cubeRotate 20s infinite linear;
            z-index: 2;
        }

        /* 立方体公共样式 */
        .cube {
            position: absolute;
            width: 200px;
            height: 200px;
            background: rgba(0, 255, 255, 0.1);
            border: 2px solid #0ff;
            transform-style: preserve-3d;
            box-shadow: 0 0 40px #0ff;
        }

        /* 立方体各面 */
        .front { transform: translateZ(100px); }
        .back { transform: translateZ(-100px); }
        .top { transform: rotateX(90deg) translateZ(100px); }
        .bottom { transform: rotateX(-90deg) translateZ(100px); }
        .left { transform: rotateY(-90deg) translateZ(100px); }
        .right { transform: rotateY(90deg) translateZ(100px); }

        /* 核心光点 */
        .core {
            position: absolute;
            width: 20px;
            height: 20px;
            background: #0ff;
            border-radius: 50%;
            filter: blur(15px);
            animation: pulse 2s infinite;
        }

        /* 动画定义 */
        @keyframes cubeRotate {
            0% { transform: rotateX(0) rotateY(0) rotateZ(0); }
            100% { transform: rotateX(360deg) rotateY(720deg) rotateZ(360deg); }
        }

        @keyframes pulse {
            0%, 100% { transform: scale(1); }
            50% { transform: scale(1.5); }
        }
    </style>
</head>
<body>
    <div class="cube-container">
        <div class="cube front"></div>
        <div class="cube back"></div>
        <div class="cube top"></div>
        <div class="cube bottom"></div>
        <div class="cube left"></div>
        <div class="cube right"></div>
        <div class="core"></div>
    </div>
</body>
</html>

一些重点css属性:

① transform-style: preserve-3d;

transform--style属性指定嵌套元素是怎样在三维空间中呈现。

描述
flat 表示所有子元素在2D平面呈现。
preserve-3d 表示所有子元素在3D空间中呈现。

②@keyframes cubeRotate {

0% { transform: rotateX(0) rotateY(0) rotateZ(0); }

100% { transform: rotateX(360deg) rotateY(720deg) rotateZ(360deg); }

}

动画围绕着X轴、Y轴、Z轴同时旋转实现更炫酷的旋转效果。

相关推荐
m0_6632340120 小时前
Python代码示例:数字求和实现
linux·服务器·前端
星幻元宇VR20 小时前
消防安全教育展厅设备|消防器材装备3D展示系统
安全·3d·虚拟现实
朝阳3920 小时前
react19【动态插槽】
前端
Marshmallowc20 小时前
为什么 Webpack 要打包?从 HTTP/1.1 限制到 HTTP/2 多路复用原理详解
前端·http·webpack
山楂树の20 小时前
3D渲染分层机制 Layers 的原理分析(Threejs)
数据结构·3d·相机
xkxnq20 小时前
第四阶段:Vue 进阶与生态整合(第 58 天)(Vue 项目部署:打包、上线与服务器配置)
服务器·前端·vue.js
雾削木21 小时前
使用 ESPHome 的核心指令
java·前端·javascript·单片机·嵌入式硬件
Kratzdisteln21 小时前
【MCM】mermaid
前端·javascript·html
应用市场21 小时前
【自动驾驶感知】基于3D部件引导的图像编辑:细粒度车辆状态理解技术详解
人工智能·3d·自动驾驶
冰暮流星21 小时前
javascript如何实现将一个整数倒过来输出
开发语言·前端·javascript