3dBackgroundBoxes(3D背景盒子组件)项目及文章思路
一、项目概述
- 项目挑战:50天50个小项目挑战中的"3dBackgroundBoxes"组件
- 项目核心:使用Vue 3的
<script setup>语法结合Tailwind CSS创建交互式动画组件"魔法盒子" - 交互效果:点击"Magic"按钮时,盒子阵列放大并旋转,带来神奇视觉体验
- 项目资源:仓库地址与项目预览地址
二、应用目标
- 运用Vue 3 Composition API管理响应式状态
- 动态生成4×4的盒子网格
- 实现点击按钮触发整体缩放与旋转动画
- 利用背景定位实现Gif动画的分块显示
- 添加3D边框效果增强立体感
- 使用Tailwind CSS快速构建布局与过渡效果
三、技术实现点
| 技术点 | 描述 |
|---|---|
Vue 3 <script setup> |
使用ref和onMounted管理状态与生命周期 |
响应式数据isBig和boxes |
控制动画状态与盒子位置 |
v-for循环生成 |
创建16个盒子元素 |
@click事件绑定 |
触发尺寸切换 |
动态类名绑定:class |
根据状态切换样式 |
内联样式:style |
精确控制每个盒子的背景位置 |
| Tailwind过渡动画 | 实现平滑的尺寸与旋转变化 |
四、组件实现
-
模板结构
- 魔法按钮:固定在顶部,点击后切换
isBig状态 - 盒子容器:包含16个盒子,每个盒子显示Gif图片的不同区域,并带有3D边框
- 魔法按钮:固定在顶部,点击后切换
-
脚本逻辑
- 响应式状态管理:定义
isBig响应式变量控制动画状态,定义boxes数组存储每个盒子的背景偏移位置 - 创建盒子数据:通过
createBoxes()函数生成4×4的盒子数据 - 生命周期管理:在
onMounted钩子中调用createBoxes()生成盒子
- 响应式状态管理:定义
-
Tailwind CSS样式重点
类名 作用 h-screen设置高度为视口高度 flex-col垂直方向Flex布局 items-center/justify-center居中对齐 overflow-hidden隐藏溢出内容 bg-gray-100设置背景色 fixed top-5按钮固定在顶部 z-50提升按钮层级 transform启用变换 rounded圆角按钮 bg-yellow-400/text-white按钮颜色 shadow-md/hover:shadow-lg阴影效果 active:translate-y-1按下时向下移动 active:shadow-none按下时隐藏阴影 relative/flex-wrap容器布局 transition-all duration-4000.4s平滑过渡 h-[125px] w-[125px]固定盒子尺寸 rotate-360/rotate-0控制旋转状态 absolute top-2 right-[-15px]创建右侧斜面 skew-y-12Y轴倾斜12度 bg-yellow-200/bg-yellow-4003D边框颜色
五、关键功能解析
- 背景分块显示技术:设置
backgroundSize: '500px 500px'并为每个盒子设置不同的backgroundPosition,实现大图(或Gif)切割成16块分别显示 - 动画同步控制:使用
isBig变量统一控制容器尺寸和所有盒子的旋转状态,确保动画同步 - 3D边框模拟:利用两个倾斜的
div(.skew-y-12和.skew-x-12)模拟立体边框效果,增强视觉层次感
六、常量定义与组件路由
- 常量定义:在
constants/index.js中添加组件预览常量 - 组件路由:在
router/index.js中添加路由选项
七、总结与扩展
- 项目总结
- 扩展建议
- 添加音效:点击时播放魔法音效
- 随机旋转角度:每个盒子旋转角度不同
- 颜色主题切换:支持多种配色方案
- 手势控制:支持触摸滑动触发动画
- 粒子特效:点击时释放小星星或火花动画
- 下一篇预告:完成
VerifyAccountUi组件,实现验证码UI组件