第 05 课 | 第五幕:历史与响应式
💡 进群学习加 wx: agentupdate
(申请发送: agentupdate)
(申请发送: agentupdate)
第五幕:历史与响应式(第11-12集)
最后的功能完善——让它像一个真正的产品
第11集:记住算过什么
场景:算完就没了?用户想回头看。
- 历史数据结构:FIFO 队列,最多 10 条,
addEntry自动淘汰最旧 - localStorage 持久化:JSON 序列化,页面刷新不丢,corrupt 数据静默忽略
- 历史面板:300ms 滑出动画(
width: 0→width: 240px+transition) - 移动端:
position: fixed全屏 overlay,避免挤压计算器 - XSS 安全:用
textContent不用innerHTML——为什么重要(用户输入可能包含 HTML) - 老年模式隐藏历史面板(ELDR-05:简化界面,老年人不需要历史记录)
- 核心概念:localStorage 让浏览器也能"记住"东西
产出文件:
index.html—<aside class="history-panel">+ 历史切换按钮style.css— 历史面板样式 + 滑出动画 + 移动端 overlayapp.js— 历史管理(saveHistory / loadHistory / renderHistory / clearHistoryUI)tests/history/history-fifo.test.js— FIFO 队列测试
对应命令:/gsd-plan-phase 4,/gsd-execute-phase 4
第12集:手机上也能用
场景:电脑上完美,打开手机一看——布局崩了。
- 响应式断点:desktop (>1024px) / tablet (640-1024px) / mobile (<640px)
- CSS Media Query:3 套布局,一个
style.css搞定 - 移动端适配:
grid-template-columns: repeat(4, 1fr)+width: 100%+border-radius: 0 - 老年模式手机:按钮 64px(比桌面 68px 略小但仍合规),字体 22px/32px
- 老年模式手机背景纯白
#ffffff,视觉无缝 - 历史面板移动端
position: fixed全屏覆盖,z-index: 10 - 测试在不同宽度下的表现:用浏览器 DevTools 模拟
- 核心概念:响应式不是缩放,是重新布局
产出文件:
style.css— 3 断点 media query + 老年模式移动端适配
对应命令:/gsd-execute-phase 4(续)