纯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轴同时旋转实现更炫酷的旋转效果。

相关推荐
一小条咸鱼1 分钟前
CSS预处理器:Sass与Less的语法和特性(含实际案例)
css·less·sass
muyouking114 分钟前
用 n8n 提取静态网页内容:从 HTTP Request 到 HTML 节点全解析
网络协议·http·html
周不凢22 分钟前
vue3+ts实现百度地图鼠标绘制多边形
前端·vue.js
遗憾随她而去.1 小时前
CSS 定位:原理 + 场景 + 示例全解析
前端·css·html
爱编程的鱼1 小时前
如何用 HTML 展示计算机代码
前端·html
又又呢3 小时前
前端面试题总结——webpack篇
前端·webpack·node.js
dog shit4 小时前
web第十次课后作业--Mybatis的增删改查
android·前端·mybatis
我有一只臭臭4 小时前
el-tabs 切换时数据不更新的问题
前端·vue.js
七灵微4 小时前
【前端】工具链一本通
前端
Nueuis5 小时前
微信小程序前端面经
前端·微信小程序·小程序