Vibe Coding实战:用HTML复原2006年新浪娱乐复古视频播放页
如果你在 2025 年去寻找 2006 年的新浪娱乐页面大概率只能搜到一些新闻截图链接原页面早就淹没在互联网迭代里。但恰恰是这种消失让“复原老网页”这件事有了吸引力它不再是一个单纯的技术炫耀而是一种用代码保存互联网记忆的方式。这篇文章想聊的主角就是这样一个很“渣技术”的实验——用 HTML 复原新浪娱乐 2006 年的视频播放界面同时把它作为 Vibe Coding 的完整练习场景。先说我的判断这类复古页面项目真正值钱的地方不在于“还原得像不像”而在于它是一个很低成本的完整练手场景。你不需要后端、不需要数据库、不需要构建工具只要一个 HTML 文件就能把页面布局、交互逻辑、视觉细节全部过一遍。如果再叠加最近流行的 Vibe Coding 工作流这件事又会变成一次“用自然语言指挥 AI 写代码”的实战演练从提需求、生成初版、到反馈修改、最终落地整个链路非常清晰。读完这篇文章你会得到一个可以直接双击运行的 2006 风格视频播放页源码也会知道怎么给 AI 工具写提示词让它帮你生成类似的复古页面。更重要的是我会把过程中最常见的问题和排查思路一起整理出来包括为什么播放器区域是黑的、为什么进度条拖不动、为什么 AI 生成的页面看着“不够复古”等。这是一篇偏实战的文章核心代码都能直接复制建议收藏备用。1. 今天为什么还有人在“复原”老网页先说一个现象在个人博客和灵感社区里复古网页项目这两年并不少见。有人做 Windows 98 桌面模拟器有人还原 QQ 早期聊天窗口还有人用 CSS 模仿 CRT 显示器的扫描线效果。这些项目被统一归到一个很休闲的品类里叫“复古 Web 项目”。它们通常没有任何商业价值但开发者做得很开心围观群众也看得津津有味。为什么大家愿意做这种“没有用”的东西我觉得有三个原因。第一它有情绪价值。2006 年是门户网站的黄金年代新浪娱乐、搜狐娱乐、网易娱乐几乎是大部分网民获取明星新闻的第一入口。当时的视频播放界面和今天完全两个物种播放器通常是嵌入式的深色 Flash 区域周围围绕着密密麻麻的资讯列表文字很小、链接很蓝、页面结构很满。这种“信息密度爆炸”的版面放到今天反而有一种独特的怀旧美感。第二它有技术练习价值。做一个 2006 年的页面意味着你要主动放弃现代框架和组件库老老实实回到 HTML CSS JavaScript 本身。没有 Vue 的响应式系统、没有 React 的组件抽象、也没有 Tailwind 的工具类你只能手动控制浮动布局、处理内联元素、用最原始的方式管理播放进度。这个过程会逼你重新理解浏览器底层到底是怎么工作的。第三它有学习实验价值。复古页面边界清晰、需求明确、反馈直接非常适合尝试新的开发方式。现在把“新的开发方式”这个词换成 Vibe Coding这个项目立刻就变成了一场实验一边还原老界面一边检验 AI 编程工具在“风格模仿 交互实现”这类任务上的真实水平。所以这篇文章并不是在教你做一个“给用户用的产品”而是在教你用一个有限的、可完成的小项目同时练习三件事前端基本功、AI 协作能力以及“从一个模糊想法到一段能跑代码”的完整过程。2. Vibe Coding 是什么以及它适合做什么Vibe Coding 是 2025 年快速火起来的一个概念。它描述的是一种编程体验开发者不逐行手写代码而是用自然语言描述想法让 AI 编程工具生成代码自己负责运行、观察、反馈、修改像在和 AI 对话一样把项目“聊”出来。这个叫法最早来自 Andrej Karpathy 的社交媒体分享。他提到自己现在写代码的状态是“完全沉浸在氛围里不太纠结细枝末节”看到报错就复制给 AI让它继续改。这种工作流迅速成为 AI 编程领域的热门话题也让很多人意识到编程的门槛正在被重新定义。2.1 典型 Vibe Coding 工作流一次完整的 Vibe Coding 流程大致包含五个步骤描述需求用自然语言说明你要做什么、有什么约束、希望长什么样。生成初版AI 根据描述生成代码或工程文件。运行验证本地启动项目观察是否报错、是否符合预期。反馈修正把截图、报错信息或具体问题反馈给 AI要求修改。迭代收敛重复“运行—反馈—修改”直到结果满意。这个流程非常像是“产品经理 程序员的组合”被压缩到了一个人身上。开发者的角色从“写代码的人”变成了“提需求、看效果、做决策的人”。2.2 为什么复古页面很适合 Vibe Coding不是所有项目都适合 Vibe Coding。核心系统、高并发服务、安全敏感模块都不适合让 AI 自由发挥。但复古页面几乎是一个理想场景原因有三个需求边界清晰。页面结构、交互逻辑、视觉风格都比较容易描述。技术栈极简。纯 HTML/CSS/JS没有复杂依赖AI 生成的代码不容易跑偏。反馈极其直观。浏览器打开就能看效果改没改对有肉眼可见的判断标准。所以拿“复原新浪娱乐 2006 年视频播放界面”来练 Vibe Coding是很自然的选择。它既不会因为需求模糊让 AI 无从下手也不会因为技术复杂让 AI 生成一堆难以维护的代码。2.3 Vibe Coding 的适用边界当然Vibe Coding 也有明显的能力边界。它适合原型验证、简单工具、学习项目、UI 还原但不适合对性能、安全、架构要求很高的生产系统。我的建议是你可以用 Vibe Coding 快速搭出 80% 的页面但剩下的 20%——尤其是细节打磨、异常处理、安全性检查——仍然需要人工介入。在后面的第 5 章和第 9 章里我会用实际项目展示这个过程中的“人机分工”。3. 复原目标2006 年视频播放页有哪些特征在动手写代码之前先要搞清楚一件事我们到底在复原什么如果只是随便做一个“有点旧的网页”那根本不需要单独写一篇文章。真正有挑战的是抓住 2006 年门户网站视频页面的核心视觉特征。3.1 布局结构特征2006 年的新浪娱乐视频播放页常见布局可以概括为“顶部导航 两栏内容”。顶部是新浪网统一的频道导航条颜色偏深文字链接密密麻麻。往下是娱乐频道自己的栏目导航然后进入主要内容区域左侧通常是视频播放器主体右侧是资讯列表、视频排行榜等。整个页面的宽度通常不大因为当时主流显示器分辨率还停留在 1024×768 甚至更低页面居中、固定宽度是主流做法。这和今天响应式布局满天飞的情况完全不同。3.2 视觉风格特征2006 年的页面视觉风格如果用一个字概括就是“满”。信息密度高、边框细密、配色直接几乎没有留白设计。我从视觉元素上拆出了四个关键点视觉元素2006 年风格特征现代页面通常做法字体宋体为主字号普遍 12px 左右无衬线字体字号 14-16px链接蓝色加下划线悬停变橙红常无下划线靠颜色区分播放器大面积深色区域控件集中在底部简洁播放控件支持全屏和倍速列表密集文字列表点状分隔线卡片化、图文混排、留白大3.3 功能清单作为“页面复原”我们不需要把当年 Flash 播放器的所有能力做出来但核心交互应当保留。我给这个项目定的最小功能清单是播放和暂停切换。播放进度条随视频播放自动更新。点击或拖动进度条跳转播放位置。时间显示当前播放时间 / 总时长。静音切换。页面右侧资讯列表、底部相关推荐区域。这些功能全部用原生 JavaScript 实现不依赖任何库。确定好功能清单后后面的代码就有明确目标了。4. 环境准备与开发方式选择这个项目的环境要求非常低这也是它适合新手的原因之一。你不需要安装 Node.js、不需要配置构建工具、不需要申请任何 API 密钥。只要有一台能打开网页的电脑就行。4.1 推荐开发环境操作系统Windows / macOS / Linux 都可以无差别。浏览器建议 Chrome 或 Edge方便使用开发者工具。文本编辑器VS Code、Sublime、Notepad、记事本都可以。视频素材准备一个本地 MP4 文件或者暂时不管它先用黑色播放区域做界面效果。4.2 两种开发组织方式第一单文件方式。把 HTML、CSS、JavaScript 全部写在一个 index.html 里。优点是简单直接双击就能打开适合原型演示也适合 Vibe Coding 让 AI 一次性输出。第二多文件方式。拆成 index.html、style.css、script.js。结构更清晰方便后续维护但需要在 HTML 中手动引入 CSS 和 JS 文件。这篇文章的示例采用单文件方式因为它的目标本身就是“最快速跑通一个复古页面”。如果未来你想把它扩展成一个完整的个人项目再拆成多文件不迟。4.3 本地运行方式运行方式非常简单。把 HTML 文件保存到本地目录后双击直接用浏览器打开即可地址栏会显示file:///开头的路径。由于这个项目没有调用浏览器 API、没有跨域请求直接用 file 协议访问就能正常工作。另一种更舒服的方式是在 VS Code 里安装 Live Server 插件右键选择 Open with Live Server可以在http://127.0.0.1:5500上实时预览。修改代码后浏览器自动刷新体验会好很多。4.4 目录结构建议如果按单文件加视频素材组织目录可以这样retro-sina-player/ ├── index.html └── video/ └── sample.mp4如果你的电脑上暂时没有 sample.mp4页面依然能打开。播放器区域会显示黑色背景点击“播放”按钮会报一个视频加载错误但界面布局和交互逻辑仍然可以演示。5. 用 Vibe Coding 生成页面提示词模板与迭代技巧现在进入正题。这一章我会演示怎么用 Vibe Coding 的方式把这个复古页面“聊”出来。你需要准备的是一个支持 AI 编程的助手工具例如 Cursor、GitHub Copilot、通义灵码等。如果你身边没有这类工具也可以直接把提示词复制给任意大语言模型让它生成代码再保存到本地运行。5.1 第一轮写一个完整提示词Vibe Coding 的关键是提示词写得到位。提示词越具体AI 生成的结果越接近预期。我给读者准备了一个可以直接复制的初版提示词模板请用纯 HTML/CSS/JavaScript 生成一个 2006 年新浪娱乐视频播放页的复古风格界面。 要求 1. 页面布局采用左侧视频播放器、右侧资讯列表的两栏结构整体固定宽度 920px 居中。 2. 播放器区域底色为黑色底部有一排控制按钮播放/暂停、进度条、时间显示、静音。 3. 配色参考 2000 年代门户网站背景浅灰、链接蓝色、悬停橙红色、标题使用橙色。 4. 字体使用宋体正文 12px页面信息密度要高不要留太多空白。 5. 顶部有新浪网全站导航条下面有娱乐频道导航。 6. 右侧资讯列表使用点状分隔线至少包含 6 条娱乐快讯。 7. 底部有一个“相关视频”区域用 4 个并排小卡片展示。 8. JavaScript 实现播放/暂停、进度条更新、拖动跳转、静音切换。 9. 不使用任何现代框架不引用外部 CDN所有代码放在一个 HTML 文件中。这个提示词覆盖了布局、风格、字体、交互、约束五个维度。你会发现把“2006 年”翻译成“信息密度高、不要留白、字体小、链接蓝底白字”这些具体描述比单纯说“要复古”有效得多。5.2 第二轮人工检查与反馈AI 生成初版之后不要急着欢呼。先双击 HTML 文件在浏览器里打开然后对照三点检查布局是否正确播放器在左列表在右底部推荐区是否换行。交互是否生效点击播放按钮按钮文字是否有变化。风格是否到位是否真的像 2006 年的页面还是更像一个现代页面套了一层旧皮。如果发现问题把问题直接反馈给 AI。比如页面总体可以但有两个问题 1. 右侧资讯列表被挤压得太窄宽度不够请调整两栏比例为 6:4。 2. 播放器控制条里的进度条太短了请把进度条加宽到 220px 左右。 3. 整体也太现代请去掉圆角把按钮改成直角、加粗边框、渐变背景。这种具体的反馈方式是 Vibe Coding 迭代的核心。不要只说“不好看”要说“哪里不好看、期望是什么”。AI 对具体指令的理解能力远强于模糊指令。5.3 第三轮人工微调AI 迭代两三轮后通常能到达一个“能看但不够好”的状态。这时候我会建议停下来开始人工微调。原因很简单AI 对“怀旧氛围”的理解是有天花板的它很难自动生成那种“有点土、有点满、又有点亲切”的早期门户网站气质。人工微调一般集中在这几个位置页面顶部导航真实 2006 年的新浪导航条通常包含非常多的文字链接我可以手动补一些频道名。右侧资讯标题写几条看起来像是那个年代的娱乐新闻标题。播放器标题区域加一行视频标题说明。页脚版权声明注明这是技术演示与真实历史页面无关。从这一轮开始我们的身份切换回“工程师”而不是“提示词作者”。这也说明了一个关键观点Vibe Coding 不是让 AI 完全替代人而是把大量机械劳动交给 AI把判断力和审美留给人。6. 完整示例代码单文件复古播放页下面是一个可以直接复制运行的完整示例。保存为 index.html双击打开即可看到效果。如果你的机器上有本地 MP4 视频把 src 换成自己的文件路径即可。!DOCTYPE html html langzh-CN head meta charsetUTF-8 title新浪娱乐 - 2006 复古视频播放界面/title style /* 全局 */ body { margin: 0; padding: 0; background: #e8e8e8; font-family: SimSun, 宋体, serif; font-size: 12px; color: #333; } a { color: #0000cc; text-decoration: underline; } a:hover { color: #ff6600; } /* 顶部新浪导航 */ .sina-topnav { background: #333; color: #fff; font-size: 12px; line-height: 28px; padding: 0 20px; } .sina-topnav a { color: #fff; text-decoration: none; margin-right: 15px; } .sina-topnav .logo { color: #ffff00; font-weight: bold; font-size: 16px; margin-right: 20px; } /* 娱乐频道导航 */ .channel-nav { background: #fff; border-bottom: 2px solid #ffd900; padding: 8px 20px; } .channel-nav strong { margin-right: 12px; } .channel-nav a { margin-right: 18px; font-size: 14px; font-weight: bold; color: #000; text-decoration: none; } .channel-nav a:hover { color: #ff6600; } /* 页面主体两栏 */ .page { width: 920px; margin: 12px auto; background: #fff; border: 1px solid #ccc; padding: 10px; overflow: hidden; } .player-area { float: left; width: 610px; } .news-area { float: right; width: 280px; border-left: 1px solid #e0e0e0; padding-left: 12px; } /* 播放器区域 */ .player-frame { background: #000; width: 610px; height: 450px; display: flex; align-items: center; justify-content: center; } .player-frame video { max-width: 100%; max-height: 100%; } .player-controls { background: #f0f0f0; border: 1px solid #aaa; padding: 6px; margin-top: 4px; } .player-controls button { font-family: SimSun, 宋体, serif; font-size: 12px; background: linear-gradient(180deg, #f5f5f5, #dcdcdc); border: 1px solid #999; padding: 3px 12px; cursor: pointer; } .player-controls button:hover { background: #ffffcc; } .progress-wrap { display: inline-block; width: 220px; margin-left: 8px; vertical-align: middle; } .progress-wrap input[typerange] { width: 100%; vertical-align: middle; cursor: pointer; } .time-display { margin-left: 8px; color: #333; } .video-title { padding: 6px 0; color: #666; font-size: 12px; } /* 右侧资讯列表 */ .news-area h3 { font-size: 14px; color: #ff6600; border-bottom: 1px solid #ffd900; padding-bottom: 4px; } .news-list { list-style: none; margin: 0; padding: 0; } .news-list li { padding: 4px 0; border-bottom: 1px dotted #e0e0e0; } .news-list .hot { color: #ff0000; font-weight: bold; } /* 底部相关推荐 */ .related { width: 920px; margin: 12px auto; background: #fff; border: 1px solid #ccc; padding: 10px; overflow: hidden; } .related h3 { font-size: 14px; color: #ff6600; border-bottom: 1px solid #ffd900; padding-bottom: 4px; } .related-item { float: left; width: 140px; margin: 8px 10px 0 0; text-align: center; } .related-item .thumb { height: 80px; background: #efefef; border: 1px solid #ccc; display: flex; align-items: center; justify-content: center; color: #999; font-size: 12px; margin-bottom: 4px; } /* 页脚 */ .footer { text-align: center; color: #666; padding: 20px 0 30px; font-size: 12px; line-height: 22px; } /style /head body !-- 顶部新浪导航 -- div classsina-topnav span classlogo新浪网/span a href#新闻/a a href#娱乐/a a href#体育/a a href#财经/a a href#科技/a a href#博客/a a href#论坛/a /div !-- 娱乐频道导航 -- div classchannel-nav strong娱乐频道/strong a href#明星/a a href#电影/a a href#电视/a a href#音乐/a a href#戏剧/a a href#排行榜/a a href#视频/a /div !-- 主体两栏 -- div classpage div classplayer-area div classplayer-frame video idvideoPlayer width600 height450 source srcvideo/sample.mp4 typevideo/mp4 您的浏览器不支持 video 标签。 /video /div div classplayer-controls button idplayBtn onclicktogglePlay()播放/button span classprogress-wrap input typerange idprogressBar value0 max100 onchangeseekVideo() /span span classtime-display idtimeDisplay00:00 / 00:00/span button onclicktoggleMute()静音/button /div div classvideo-title 视频标题《2006 年复古视频播放界面演示》 /div /div div classnews-area h3娱乐快讯/h3 ul classnews-list lispan classhot[热点]/span a href#某影片首映礼现场图集曝光/a/li lia href#歌手新专辑发布会视频完整版/a/li lispan classhot[热点]/span a href#收视率榜单电视剧收视再创新高/a/li lia href#电影节红毯明星造型点评/a/li lia href#娱乐周刊专访演员谈新片拍摄幕后/a/li lia href#音乐排行榜周冠军揭晓/a/li /ul h3视频推荐/h3 ul classnews-list lia href#1. 电影预告片独家首播/a/li lia href#2. 演唱会后台花絮/a/li lia href#3. 电视节目精彩片段/a/li lia href#4. 明星访谈实况录像/a/li /ul /div /div !-- 相关推荐 -- div classrelated h3相关视频/h3 div classrelated-item div classthumb视频截图/div a href#娱乐现场/a /div div classrelated-item div classthumb视频截图/div a href#音乐榜/a /div div classrelated-item div classthumb视频截图/div a href#电影报道/a /div div classrelated-item div classthumb视频截图/div a href#明星访谈/a /div /div !-- 页脚 -- div classfooter Copyright copy; 2006 SINA Corporation, All Rights Reservedbr 本页面为技术演示用复古界面与真实历史页面无关。 /div script var video document.getElementById(videoPlayer); var playBtn document.getElementById(playBtn); var progressBar document.getElementById(progressBar); var timeDisplay document.getElementById(timeDisplay); function formatTime(seconds) { if (isNaN(seconds)) { return 00:00; } var m Math.floor(seconds / 60); var s Math.floor(seconds % 60); if (m 10) { m 0 m; } if (s 10) { s 0 s; } return m : s; } function togglePlay() { if (video.paused) { video.play(); playBtn.innerHTML 暂停; } else { video.pause(); playBtn.innerHTML 播放; } } function seekVideo() { var pct progressBar.value / 100; if (video.duration) { video.currentTime pct * video.duration; } } function toggleMute() { video.muted !video.muted; } video.addEventListener(timeupdate, function () { if (video.duration) { var pct (video.currentTime / video.duration) * 100; progressBar.value pct; } timeDisplay.innerHTML formatTime(video.currentTime) / formatTime(video.duration); }); video.addEventListener(play, function () { playBtn.innerHTML 暂停; }); video.addEventListener(pause, function () { playBtn.innerHTML 播放; }); /script /body /html这段代码分几个关键部分说清楚。CSS 部分要点是复古视觉。body 使用宋体、12px 字号页面背景选浅灰色这正是 2006 年门户网站的常见底色调。链接保持蓝色下划线悬停变成橙红色是那个年代最典型的链接反馈。两栏布局采用 float 方案比 flex 更贴合老页面的实现方式也在视觉上增加了“年代感”。HTML 结构部分左边播放器、右边资讯列表、底部相关推荐整体是一个典型的门户页面骨架。资讯列表里用了实心圆点和点状分隔线这是老页面高频出现的视觉元素。JavaScript 部分只依赖 video 元素的原生事件。timeupdate 事件会持续触发用来更新进度条和时间显示。进度条用 range input 实现拖动或点击后通过 onchange 触发跳转。这里有一个小细节视频播放过程中如果用户手动拖动进度条滑块会跳动但不会影响播放因为 seekVideo 只在用户松开时执行。这个行为比较简单但对于一个复古演示页面已经足够。运行前注意如果你的项目目录里没有 video/sample.mp4播放按钮点击后视频不会真的播放。这时控制台会提示资源加载失败但页面布局和交互逻辑不受影响仍然可以正常演示。7. 运行效果验证与调试代码写完后验证是一个不能跳过的步骤。下面是一条快速验证路径。7.1 打开页面把上面的代码保存为 index.html。如果你还没有视频素材可以先保留source srcvideo/sample.mp4不动然后直接用浏览器打开文件。预期效果顶部出现深色新浪导航条右侧黄色“新浪网”标志明显。下面是娱乐频道导航。中间主体区左侧是黑色播放器区域底部有播放按钮、进度条、时间显示、静音按钮。右侧是娱乐快讯和视频推荐列表。底部显示相关视频卡片和页脚版权信息。7.2 验证交互如果没有视频文件播放按钮点击后按钮文字会短暂变“暂停”再弹回“播放”同时控制台报错。这其实是预期行为因为视频源不存在。如果有本地视频验证流程是点击播放按钮视频开始播放按钮文字变为“暂停”。观察进度条滑块是否随时间向右移动。点击进度条某个位置视频应该跳转到对应播放位置。点击静音视频声音消失。视频播放到结束后再次点击播放按钮会从头开始播放。7.3 使用浏览器开发者工具调试建议保持浏览器开发者工具打开F12切到 Console 和 Network 两个面板。Console 面板能看到 JavaScript 运行时错误。如果页面没有任何交互反应第一时间看这里。Network 面板能确认视频文件是否成功加载。如果 sample.mp4 显示红色失败状态说明路径不对或者文件不存在。解决方案是检查项目目录结构确保 video 文件夹和文件存在并确认文件名完全一致。7.4 一个常见误导很多人把“页面打开后整个区域都是黑的”当成播放器 bug。其实不是。播放器区域本身就是深色的如果视频没有加载成功浏览器会在视频区域显示黑色背景这恰好和 2006 年 Flash 播放器的外观很像。所以在没有视频素材的情况下页面看起来像一块黑屏但这不代表代码写错了。这是这个复古项目里最有意思的“意外复古效果”。8. 常见问题与排查思路实际运行中最常遇到的问题集中在视频加载、布局错位和交互失效三方面。下面整理成一张排查表方便直接对照。问题现象可能原因排查方式解决方案页面打开后一片空白HTML 标签闭合错误或者 CSS 中 body 背景色设置异常查看浏览器 Console 报错检查代码文件是否保存完整把代码重新复制确认 闭合两栏布局上下堆叠没有左右排列浮动元素父容器没有清除浮动检查 .page 是否设置 overflow: hidden在 .page 样式里补上 overflow: hidden播放器区域是黑屏点击按钮无反应video 文件不存在路径不对或格式不被浏览器支持打开 Network 面板看视频请求状态换成实际存在的 mp4 文件或调整 src 路径进度条不随播放移动没有绑定 timeupdate 事件或事件绑定代码在 script 中位置错误查看 Console 是否有错误确认 script 放在 video 元素之后或在 DOM 加载后绑定事件点击进度条跳转位置不准只监听了 onchange鼠标拖动过程中未实时更新检查进度条事件绑定可以同时监听 oninput让拖动过程中实时预览页面看起来“不够复古”像现代页面使用了圆角、阴影、无衬线字体等现代特征观察页面外观去掉圆角阴影改用宋体、直角边框、增加信息密度修改代码后浏览器看不到变化浏览器缓存了旧文件强制刷新CtrlF5使用无痕窗口或开启 Live Server 自动刷新以上问题里布局错位是新手最容易踩的坑。原因在于 float 布局要求父容器必须正确处理子元素的高度。示例代码里给 .page 和 .related 都设置了 overflow: hidden这是最简单的清除浮动方式。如果你删掉了这行属性两栏布局立刻就会塌陷。9. Vibe Coding 复古项目的最佳实践最后这一章把 Vibe Coding 的工作方式和做复古页面的经验合并到一起整理成几条可以直接用在日常项目里的建议。9.1 提示词要写“边界”而不是只写“愿望”很多人让 AI 写代码时只会说“帮我做一个老式页面”结果生成出来的是一个带 Tailwind 的现代页面。真正有效的做法是把边界写在提示词里不用框架、不引 CDN、单文件、字体用宋体、不要圆角。约束越明确AI 越不容易跑偏。9.2 分阶段验证不要等最后一刻再运行Vibe Coding 初学者最容易犯的错是让 AI 一次性生成全部代码生成完才打开浏览器结果面对一整屏错误不知道从哪下手。更好的做法是先让 AI 生成纯静态的布局结构打开页面确认骨架没问题再让它加 CSS 样式最后再加 JavaScript 交互。每一轮都有明确的验证目标问题会被限制在很小的范围内。9.3 复古项目的“氛围感”大于“精确还原”做复古页面不需要盯着当年的页面逐像素还原。Web 技术变了、浏览器渲染规则变了我们也没有必要真的去复刻当年 Flash 播放器的所有细节。只要抓住几个核心特征——小字号、满布局、蓝色链接、深色播放器——氛围感就有了。这个原则同样适用于其他复古项目抓特征不要抓像素。9.4 让 AI 负责重复劳动让人负责判断用 AI 生成一个静态页面非常快真正决定页面好坏的是人的品味和判断。哪些信息要放在右侧列表第一位、哪些链接配上热点标、字体颜色如何微调这些判断 AI 做不好。把这类工作留给自己把重复的样式编写和结构搭建交给 AI才是 Vibe Coding 的正确姿势。9.5 注意版权和标识使用边界复原带有品牌标志的页面只能用于学习、练习、个人演示不能冒充官方网站也不能用于商业运营。示例代码页脚的“技术演示”声明就是一种常见做法。在练习这类项目时尽量在页面显著位置加上类似声明既是对原品牌的基本尊重也避免不必要的纠纷。9.6 扩展方向如果你觉得这个项目做完还不过瘾以下方向都可以继续延伸把单页面扩展成多页面加入频道页、列表页。用 CSS 实现 CRT 扫描线效果增加屏幕年代感。增加视频播放列表支持切集。加一个“2006 年今日娱乐新闻”的时间轴。让 AI 生成一个 Windows XP 风格的播放器皮肤。这些扩展项目的技术难度都不高但每一步都能加深对旧 Web 时代设计语言的理解。如果你正在学习前端我强烈建议你亲手完成其中至少一个。10. 总结这篇文章用一个“HTML 复原新浪娱乐 2006 年视频播放界面”的小项目同时讲了两件事复古网页怎么做以及 Vibe Coding 怎么用。复古网页的核心不是复刻某个历史站点而是抓住那个时代的视觉特征小字号、蓝色链接、深色播放器、高信息密度、方形按钮。这些特征用纯 HTML/CSS/JS 就能实现不需要任何框架。Vibe Coding 的核心也不是让 AI 取代程序员而是把“描述需求—生成代码—运行反馈—迭代修改”变成一条高效的工作链。提示词要具体要写边界要分阶段验证最终的效果判断权必须留给人。全文示例代码可以直接复制保存为 index.html配合一个本地视频文件即可体验完整的播放控制流程。如果你是第一次接触 Vibe Coding建议从这样的小型单文件项目开始练手如果你是刚学前端的新手这个项目也是一个很好的综合练习布局、样式、事件、调试全都有。老网页早就不在了但用代码把它复原出来的过程比看老截图有意思得多。