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

相关推荐
DEMO派11 小时前
前端javascript如何实现阅读位置记忆【可运行源码】
前端
苏打水com11 小时前
第十七篇:Day49-51 前端工程化进阶——从“手动”到“自动化”(对标职场“提效降本”需求)
前端·javascript·css·vue.js·html
文心快码BaiduComate11 小时前
Comate强力赋能:「趣绘像素岛」从体验泥潭到高性能可用的蜕变之路
前端·后端·程序员
『 时光荏苒 』11 小时前
使用Vue播放M3U8视频流的方法
前端·javascript·vue.js
Apifox11 小时前
Apifox + AI:接口自动化测试的智能化实践
前端·后端·测试
Tjohn911 小时前
前后端分离项目(Vue-SpringBoot)迁移记录
前端·vue.js·spring boot
CaoLv11 小时前
无需后端!用 React + WebLLM 把大模型装进浏览器,手撸一个“有脾气”的 AI 机器人 🤖
前端
消防大队VUE支队11 小时前
🗓️ 2262年将有两个春节!作为前端的你,日历控件真的写对了吗?
前端·javascript
鸭蛋超人不会飞11 小时前
axios简易封装,适配H5开发
前端·javascript·vue.js
风止何安啊11 小时前
从 “翻页书” 到 “魔术盒”:React 路由凭啥如此丝滑?
前端·react.js·面试