一个周末能做出什么?有人刷完了整季剧,有人躺平了两天。但这个参赛者用挑战窗口期肝出了三个完整体验的狗狗主题小项目——全部是单个HTML文件,零依赖、零构建、零CDN。换句话说:下载下来双击打开,就能用。这才是"面向狗的软件"该有的样子。
这个提交是Weekend Challenge: Dog Days Edition的参赛作品,主题就是跟狗相关的一切:记忆力游戏、训练日志、生成艺术,三件套齐活。
![]()
项目一:Paw Match——狗品种配对记忆游戏
翻牌配对玩法,配对了会弹出一条真实的品种冷知识。比如你知道大丹犬刚出生时是纯白的,3-4周后才开始长斑吗?游戏内置三档难度(6/8/10对)、步数计数器、计时器、星级评分,还有CSS 3D翻牌动画和庆祝彩纸效果。
翻开一张卡,再翻开一张,配对成功,冷知识弹出,撒花。整个交互闭环很完整,不是那种"做完就扔"的demo。
项目二:Paw Log——狗子训练与护理日志
这个的实用性拉满:记录遛狗、喂食、训练、看兽医、洗澡、玩耍。所有数据存在localStorage里,有今日统计(今天遛了几次、训练几分钟、连续打卡天数)、每项活动的进度条,还支持JSON导出/导入备份。
挑战简报里明确建议过做训练日志,这个项目就是冲这个来的。一个完整CRUD应用,只用约130行原生JavaScript就搞定了。
项目三:Dog-o-matic——生成式狗狗艺术
一个程序化"狗狗工厂":每次点击生成一张独一无二的狗脸——头型、耳朵类型(垂耳/立耳/圆耳/折耳)、毛色、胸部白斑、大丹犬斑点、舌头、雀斑,全部随机。
系统还会"识别"品种,然后永远得出同一个结论:这是一只非常好的狗狗。纯Canvas 2D绘制,可以保存为PNG,也可以一键自动连生成一打。
三个Demo在线可玩,代码就是Demo本身
三个项目都可以直接在浏览器里运行,不用安装、不用登录。而整个代码库就是这三个HTML文件本身——右键查看源代码,你看到的既是运行中的产品,也是全部源码。没有框架、没有lockfile、没有需要解释的node_modules。
GitHub仓库(含全套代码和README)正在发布,会在提交截止前补上链接。
单文件约束才是真正的乐趣
作者给自己定的规则是:每个项目必须是一个能在file://协议下双击就运行的HTML文件,断网也能玩。这个约束反而逼出了一些相当扎实的工程细节:
- Paw Match用CSS 3D变换实现翻牌动画(perspective + rotateY),用一个小型状态机管理翻牌/锁定/匹配流程,配了一张人工挑选的10条真实品种冷知识表。
- Paw Log用约130行原生JS实现完整CRUD:单个localStorage JSON文档、按天聚合的"今日视图"、跨日历日回推的连续打卡计算、JSON备份导出/导入,兑现了"数据只留在你设备上"的承诺。
- Dog-o-matic在canvas上程序化绘制每只狗:一个参数对象(毛色、耳朵、头型、口鼻、斑块、斑点、舌头、雀斑)驱动有序绘制流程——耳朵在头后面、口鼻叠加、白色额线、最后是面部细节。"品种猜测"是基于这些参数的小型规则引擎(耳朵==='round' → "柯基(全是面包没有腿)")。
全站响应式,手机上也能玩
整个三个项目都做了响应式适配,手机浏览器打开也能正常玩耍。从记忆游戏到训练日志再到生成艺术,每个项目都展示了同一个道理:不依赖框架,照样能把产品做完整。
所有代码就是Demo本身,零框架、零构建、零CDN。想要代码?右键查看源代码就够了。
这个提交证明了:有时候最强的技术约束,反而是做出好东西的最短路径。一个HTML文件,一整个周末,三个能用的狗狗项目。下次周末挑战,你打算做什么?
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.