Files
book/web/micro-projects.md
yuetsh f9723ed2bb
Some checks failed
Deploy / build-and-deploy (push) Has been cancelled
update
2026-03-10 13:03:35 +08:00

334 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Web 前端微项目
## 项目总览
|#|项目名称|核心知识域|难度|平台支持|
|---|---|---|---|---|
|1|🌦️ 天气卡片|CSS 布局与样式|⭐⭐|✅ 完全支持|
|2|🍕 点餐菜单|DOM 交互与数据渲染|⭐⭐⭐|✅ 完全支持|
|3|🎵 音乐播放器|CSS 动画与状态管理|⭐⭐⭐|✅ 完全支持|
|4|🎨 渐变配色生成器|CSS 实时交互|⭐⭐|✅ 完全支持|
|5|🃏 个人作品集名片|响应式与高级动效|⭐⭐⭐|✅ 完全支持|
|6|🛒 商品详情页|组件交互与动画|⭐⭐⭐⭐|✅ 完全支持|
|7|🎰 抽奖转盘|Canvas 绘图与动画|⭐⭐⭐⭐|✅ 完全支持|
|8|🗓️ 倒计时活动页|定时器与 CSS 动画|⭐⭐⭐|✅ 完全支持|
|9|⌨️ 打字速度测试|字符逻辑与计时|⭐⭐⭐|✅ 完全支持|
|10|🎮 贪吃蛇|Canvas 与游戏逻辑|⭐⭐⭐⭐⭐|✅ 完全支持|
---
## Prompt Chain 三阶进化说明
|阶段|特征|学生认知状态|
|---|---|---|
|🟡 初级|描述结果,无细节|只知道想要什么,不知道怎么描述。生成结果往往布局混乱、样式单一。|
|🔵 中级|描述视觉元素与结构|能列出页面的主要模块,开始关注布局和配色,但缺乏交互细节。|
|🟢 高级|描述实现细节与联动逻辑|能精确描述动画参数、交互行为、数据联动和边界情况,生成结果接近生产级页面。|
---
## 项目 01 · 🌦️ 天气卡片
**难度:** ⭐⭐ 入门级
**📌 教学重点:** 纯 CSS 样式驱动,零 JS 逻辑压力,适合作为第一个项目。学生在配色、布局、图标引入上快速获得成就感。
### Prompt Chain 三阶进化
|阶段|提示词关键词|Prompt 示例|
|---|---|---|
|🟡 初级|描述结果,无细节|帮我生成一个天气页面|
|🔵 中级|描述视觉元素|帮我生成一个天气卡片,显示温度、湿度和天气图标,用渐变蓝色背景|
|🟢 高级|描述具体实现细节|在上一版基础上把温度字体改大到72px加一个5天预报横向滚动条夜间模式切换按钮放右上角动画用 fade-in 0.3s|
### 知识与技能点
|知识点类别|具体内容|
|---|---|
|CSS 渐变|`linear-gradient``radial-gradient` 背景设置|
|Flexbox 布局|居中对齐、横纵排列、间距控制|
|CSS 变量|`--color-primary` 等统一管理配色方案|
|过渡动画|`transition` 实现 fade-in、hover 效果|
|图标引入|Font Awesome 等图标字体的 CDN 引入与使用|
|滚动容器|`overflow-x: scroll` 实现横向滚动预报栏|
---
## 项目 02 · 🍕 点餐菜单
**难度:** ⭐⭐⭐ 初中级
**📌 教学重点:** 数据驱动视图的基础思维训练。学生需要将菜品数据数组渲染为列表,并处理购物车的实时计算逻辑。
### Prompt Chain 三阶进化
|阶段|提示词关键词|Prompt 示例|
|---|---|---|
|🟡 初级|描述结果,无细节|做一个餐厅点餐页面|
|🔵 中级|描述视觉与结构|做一个中餐外卖菜单页面,有图片、菜名、价格,底部有购物车栏|
|🟢 高级|描述交互逻辑细节|在菜品卡片上加+/-数量按钮,购物车栏实时显示总价,点击结算弹出确认弹窗,菜品按热菜/凉菜/主食分类 Tab 切换|
### 知识与技能点
|知识点类别|具体内容|
|---|---|
|DOM 动态渲染|数组数据 → `innerHTML` / `createElement` 动态生成列表|
|事件委托|父元素统一监听子元素点击,提升性能|
|classList 操作|Tab 切换时添加/移除 active 类名|
|数量逻辑|变量计算与 DOM 更新联动(加减按钮)|
|实时计算|购物车总价的动态汇总与显示|
|弹窗交互|结算确认弹窗的显示与隐藏控制|
---
## 项目 03 · 🎵 音乐播放器
**难度:** ⭐⭐⭐ 初中级
**📌 教学重点:** 状态变化驱动多处 UI 同步更新。一个播放状态变量需要同步影响按钮图标、封面旋转、进度条等多个元素。
### Prompt Chain 三阶进化
|阶段|提示词关键词|Prompt 示例|
|---|---|---|
|🟡 初级|描述功能结果|帮我做一个音乐播放器界面|
|🔵 中级|描述视觉组件|做一个音乐播放器,有专辑封面、歌名、进度条、上一首/播放/下一首按钮,深色背景|
|🟢 高级|描述动态联动细节|专辑封面旋转动画在播放时启动,进度条可拖拽,背景颜色根据专辑封面主色调自动变化,歌词区域逐行高亮滚动|
### 知识与技能点
|知识点类别|具体内容|
|---|---|
|@keyframes 动画|封面旋转、淡入等关键帧动画定义|
|animation-play-state|通过 JS 控制动画暂停与继续|
|状态管理|JS 维护播放状态变量,驱动多个 UI 元素联动|
|input[type=range]|自定义进度条样式与拖拽交互|
|Audio API|`HTMLAudioElement` 的播放、暂停、进度控制|
|歌词滚动|定时器驱动歌词数组逐行高亮与滚动定位|
---
## 项目 04 · 🎨 渐变配色生成器
**难度:** ⭐⭐ 入门级
**📌 教学重点:** CSS 属性与 JS 实时联动的直观训练。用户操作 → JS 读取值 → 更新 CSS 属性,反馈即时,学生成就感强。
### Prompt Chain 三阶进化
|阶段|提示词关键词|Prompt 示例|
|---|---|---|
|🟡 初级|描述功能结果|做一个渐变色背景的页面|
|🔵 中级|描述核心交互|做一个渐变配色生成器,有两个颜色选择器,实时预览渐变效果,可以切换线性/径向渐变|
|🟢 高级|描述功能细节|加角度滑块控制渐变方向支持添加多个颜色节点一键复制CSS代码随机生成按钮带过渡动画|
### 知识与技能点
|知识点类别|具体内容|
|---|---|
|input[type=color]|颜色选择器的值读取与实时监听|
|CSS 渐变动态生成|用 JS 拼接 `linear-gradient` / `radial-gradient` 字符串|
|DOM 实时更新|`input` 事件监听 → 实时修改元素 `style` 属性|
|input[type=range]|角度滑块控制渐变方向参数|
|剪贴板 API|`navigator.clipboard.writeText()` 复制 CSS 代码|
|Math.random()|随机生成颜色值的算法实现|
---
## 项目 05 · 🃏 个人作品集名片
**难度:** ⭐⭐⭐ 初中级
**📌 教学重点:** 现代 CSS 高级特性综合运用。最贴近真实需求,学生可以直接做出自己的作品集页面,实用价值高。
### Prompt Chain 三阶进化
|阶段|提示词关键词|Prompt 示例|
|---|---|---|
|🟡 初级|描述页面类型|帮我做一个个人介绍页面|
|🔵 中级|描述布局与风格|做一个程序员作品集主页,有头像、姓名、技能标签、项目卡片三列布局,整体科技感配色|
|🟢 高级|描述交互与动效细节|鼠标悬停项目卡片时有3D翻转效果技能标签用动态进度条页面滚动时导航栏背景从透明变毛玻璃加打字机动画显示职位|
### 知识与技能点
|知识点类别|具体内容|
|---|---|
|CSS Grid 响应式|`auto-fill` + `minmax` 实现自适应多列布局|
|媒体查询|`@media` 断点适配移动端|
|CSS 3D 变换|`perspective` + `rotateY` 实现卡片翻转效果|
|position: sticky|导航栏吸顶效果实现|
|backdrop-filter|`blur()` 实现毛玻璃背景效果|
|打字机动画|JS 逐字输出职位文字的定时器实现|
---
## 项目 06 · 🛒 商品详情页
**难度:** ⭐⭐⭐⭐ 中高级
**📌 教学重点:** 复杂交互状态的拆解与管理。涉及多个组件之间的状态联动,是电商类业务最典型的前端场景。
### Prompt Chain 三阶进化
|阶段|提示词关键词|Prompt 示例|
|---|---|---|
|🟡 初级|描述页面类型|做一个商品页面|
|🔵 中级|描述主要模块|做一个运动鞋商品详情页,有图片轮播、价格、颜色选择、尺码选择、加购按钮|
|🟢 高级|描述联动与动效|颜色选中后主图自动切换对应配色,尺码缺货时显示为灰色不可点击,加购按钮点击有抛物线飞入购物车动画,右侧价格区域吸顶|
### 知识与技能点
|知识点类别|具体内容|
|---|---|
|图片轮播|索引变量控制当前图片,缩略图点击联动主图|
|规格选择状态|选中态、禁用态的 CSS 类名切换管理|
|SKU 数据结构|颜色/尺码组合对应不同库存的对象设计|
|动画轨迹计算|JS 计算抛物线路径实现飞入购物车动画|
|position: sticky|右侧价格区域在滚动时保持可见|
|DOM 禁用控制|`disabled` 属性与对应样式的联动|
---
## 项目 07 · 🎰 抽奖转盘
**难度:** ⭐⭐⭐⭐ 中高级
**📌 教学重点:** Canvas 原生绘图与动画。与贪吃蛇形成差异,重点考察弧度数学计算和 `requestAnimationFrame` 缓动控制。
### Prompt Chain 三阶进化
|阶段|提示词关键词|Prompt 示例|
|---|---|---|
|🟡 初级|描述功能结果|做一个抽奖转盘页面|
|🔵 中级|描述视觉与交互|做一个可以自定义选项的抽奖转盘点击按钮旋转转完后弹出中奖结果6个扇形用不同颜色|
|🟢 高级|描述动效与交互细节|转盘旋转用缓动函数(先快后慢),中奖扇形高亮放大,支持编辑奖项名称,加音效反馈,转动过程中禁止重复点击|
### 知识与技能点
|知识点类别|具体内容|
|---|---|
|Canvas 弧度绘图|`arc()``fillStyle``strokeStyle` 绘制扇形|
|数学计算|`Math.PI` 弧度换算,扇形角度均分计算|
|requestAnimationFrame|逐帧旋转动画的主循环实现|
|缓动函数|Ease-out 效果(先快后慢)的数学实现|
|数据驱动绘图|奖项数组 → Canvas 动态重绘转盘|
|交互状态锁|转动期间禁止重复点击的 `isSpinning` 标志位|
---
## 项目 08 · 🗓️ 倒计时活动页
**难度:** ⭐⭐⭐ 初中级
**📌 教学重点:** 定时器控制与时间计算逻辑。翻牌动画是 CSS 3D 变换的经典应用场景,粒子效果训练学生对数组的操作能力。
### Prompt Chain 三阶进化
|阶段|提示词关键词|Prompt 示例|
|---|---|---|
|🟡 初级|描述功能结果|做一个倒计时页面|
|🔵 中级|描述场景与视觉|做一个高考倒计时页面,显示距离高考还有多少天时分秒,蓝色激励风格|
|🟢 高级|描述动效与功能|数字用翻牌动画flip clock背景加粒子飘落效果加一句每天随机更换的励志名言倒计时归零时触发撒花庆祝动画|
### 知识与技能点
|知识点类别|具体内容|
|---|---|
|setInterval 定时器|每秒触发时间计算与 DOM 更新|
|时间计算|目标日期与当前日期的差值换算(天/时/分/秒)|
|CSS 翻牌动画|`rotateX` + 前后两个面的 3D 翻转效果|
|粒子系统|数组管理粒子对象的生成、运动、消亡循环|
|Math.random()|粒子位置/速度随机化,名言随机取值|
|事件触发|倒计时归零时执行庆祝动画的条件判断|
---
## 项目 09 · ⌨️ 打字速度测试
**难度:** ⭐⭐⭐ 初中级
**📌 教学重点:** 字符串逐字比对逻辑与计时系统。交互完整,结果可量化,学生有强烈的想要挑战自己成绩的动力。
### Prompt Chain 三阶进化
|阶段|提示词关键词|Prompt 示例|
|---|---|---|
|🟡 初级|描述功能类型|做一个打字练习页面|
|🔵 中级|描述核心功能|做一个打字测速页面显示一段文字让用户跟着输入计时并统计WPM每分钟字数和正确率|
|🟢 高级|描述细节与体验|正在输入的字符高亮显示打错的字母变红倒计时60秒自动结束结束后展示速度/准确率/错误数三项成绩,加重试按钮和难度切换|
### 知识与技能点
|知识点类别|具体内容|
|---|---|
|字符串比对|逐字符对比用户输入与目标文本的算法|
|键盘事件|`input` / `keydown` 事件捕获用户输入|
|动态样式渲染|正确/错误/当前字符的不同颜色类名切换|
|Date 计时|`Date.now()` 记录开始时间,计算已用秒数|
|WPM 计算|(正确字符数 / 5 / 分钟数)的公式实现|
|倒计时控制|`setInterval` 60秒倒计时与自动结算逻辑|
---
## 项目 10 · 🎮 贪吃蛇
**难度:** ⭐⭐⭐⭐⭐ 高级
**📌 教学重点:** 逻辑拆解能力的综合考验,最能区分学生的思维层次。涉及游戏主循环、碰撞检测、数据结构等核心编程概念。
### Prompt Chain 三阶进化
|阶段|提示词关键词|Prompt 示例|
|---|---|---|
|🟡 初级|描述游戏类型|帮我用网页做一个贪吃蛇游戏|
|🔵 中级|描述游戏要素|做一个贪吃蛇游戏20×20格子有分数显示游戏结束弹出重新开始按钮像素风格配色|
|🟢 高级|描述功能扩展细节|加三档难度(速度不同),食物随机出现时有闪烁动画,蛇身用渐变色,撞墙/咬自己有震动屏幕效果,历史最高分存到 localStorage支持手机触屏滑动控制|
### 知识与技能点
|知识点类别|具体内容|
|---|---|
|Canvas 绘图 API|`fillRect``clearRect` 绘制格子、蛇身、食物|
|游戏主循环|`setInterval` 控制帧率,每帧清屏 → 更新 → 绘制|
|二维数组网格|用坐标对象数组表示蛇身的数据结构|
|碰撞检测|边界碰撞和蛇身自碰的坐标比对算法|
|方向控制|键盘/触屏事件 → 方向变量 → 蛇头坐标更新|
|Canvas 渐变色|`createLinearGradient` 绘制渐变蛇身|
|localStorage|历史最高分的存取与比较|
|触屏事件|`touchstart` / `touchend` 计算滑动方向|
---
## 知识点覆盖总览
|知识点|涉及项目|
|---|---|
|CSS 布局Flex/Grid|项目 01、02、05、07|
|CSS 动画与过渡|项目 01、03、06、08|
|JS DOM 操作|项目 02、03、04、09|
|事件处理|项目 02、06、09、10|
|数组/对象数据处理|项目 02、04、07、08|
|定时器setInterval|项目 03、08、09、10|
|Canvas 绘图|项目 07、10|
|Math 数学计算|项目 07、08、09、10|
|CSS 3D 变换|项目 05、06、08|
|localStorage|项目 10|
|响应式设计|项目 05、06|
|剪贴板 / 原生 API|项目 04|
---
## 教学建议
### 按难度分组使用
|分组|项目|适用场景|
|---|---|---|
|视觉类(入门)|天气卡片、渐变配色生成器、倒计时页|纯样式驱动为主,零 JS 逻辑压力,适合第一单元|
|交互类(初中级)|点餐菜单、音乐播放器、商品详情页|DOM 操作与事件处理,数据驱动视图的关键过渡|
|逻辑类(中高级)|打字速度测试、个人作品集|复杂状态管理和响应式布局,体现编程思维|
|综合类(挑战)|抽奖转盘、贪吃蛇|Canvas 绘图与游戏逻辑,最能区分学生能力层次|
### Prompt Chain 课堂演示建议
每个项目的三阶提示词可直接作为课堂演示素材:让学生分别用初级、中级、高级提示词在平台上生成页面,对比三个版本的差异,亲身感受「提示词精度」对最终页面质量的直接影响。建议引导学生在课后自行从初级提示词出发,尝试升级为高级提示词,作为作业提交。