用纯HTML+CSS实现语义清晰、响应式宠物日记页,以包裹每条记录,含、等标准标签,CSS Grid布局适配移动端单列与桌面多列,图片路径统一相对化,避免内联样式与localStorage陷阱,专注降低每日录入门槛。

用纯 HTML + CSS 实现宠物日记页,不需要框架也能结构清晰
直接上手就能用,不用学 Vue 或 React。核心是把「日期 + 照片 + 行为记录 + 体重/饮食备注」这四类信息组织成可读性强、易添加的块状结构。关键不是炫效果,而是让主人第二天打开网页就能快速填一条——否则再好看也坚持不下去。
-
包裹每条日记,语义正确,方便后期加 JS 排序或搜索 - 日期用
,既对人友好,也利于爬虫和屏幕阅读器识别 - 照片统一用
,避免用饭后打滚 堆砌,语义和可访问性都更稳- 别在 HTML 里写内联样式(比如
style="margin-top: 12px;"),所有样式抽到块或外部 CSS 文件里,否则改十张图的圆角要手动点十次CSS 控制卡片式布局和响应式折叠
手机上看日记,图片和文字挤在一起会很难读;桌面端又希望横向空间利用充分。用 CSS Grid +
@media最直接:.diary-list { display: grid; grid-template-columns: 1fr; gap: 1.2rem; } @media (min-width: 768px) { .diary-list { grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); } }- 移动端默认单列,避免左右滑动看全文
-
minmax(320px, 1fr)确保每张卡片至少宽 320px(适配老款 iPhone),但能随窗口变大自动铺开 - 给
加max-width: 100%; height: auto;,防止图片撑破卡片 - 别用
float或inline-block做多列——它们对响应式支持差,且容易因空白符产生意外间隙
本地存储数据?别硬上 localStorage,先用 JSON 文件模拟
很多人一上来就想“怎么让日记存到浏览器里”,但实际需求只是“关掉页面再打开,昨天写的还在”。这时候直接用
localStorage反而埋坑:容量上限约 5MB 没问题,但手动序列化/反序列化JSON.parse()/JSON.stringify()容易出错;更麻烦的是,用户清缓存就全丢了,还没法备份。- 初期建议把每条日记存成独立的
diary-20240520.json文件,用静态服务器(如 Python 的python -m http.server)跑起来,后期再对接真实后端 - 如果真要用
localStorage,务必包裹 try/catch:try { localStorage.setItem('diary', JSON.stringify(data)); } catch (e) { console.error('存日记失败:', e); } - 注意
localStorage只存字符串,new Date()、undefined这类值存进去会变成"Invalid Date"或"undefined",必须提前处理
图片路径别写死,用相对路径 + 统一文件夹结构
常见错误是把照片路径写成
C:\Users\Me\Pictures\cat-0520.jpg或http://localhost:8000/images/cat-0520.jpg,结果换电脑或部署到 GitHub Pages 就全挂了。- 约定好根目录下建
/images/diary/文件夹,所有日记图放里面 - HTML 中统一用
,路径简洁、可移植
- 上传前用工具批量重命名照片(比如
20240520-1.jpg、20240520-2.jpg),比靠记忆找“IMG_1294.HEIC”靠谱得多 - GitHub Pages 默认不支持 WebP 格式,用
做兼容很麻烦,初期直接用 JPG/PNG 更省心
真正卡住人的从来不是“怎么画个圆角卡片”,而是“第三天不想写了,因为上次改错了一个
src路径,五张图全变红叉”。先保证新增一条日记的操作控制在 3 次点击以内——其余优化,等你真写满 30 天再说。 - 别在 HTML 里写内联样式(比如
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











