vibe coding学习:如何vibe coding一个设计网站?

对于设计网站这类项目,vibe coding 尤其适合,因为它的核心功能通常非常简单——展示一组精选内容,顶多加个收藏或搜索。一旦你启动“严肃工程模式”,技术选型就会失控:React还是Vue?Webpack还是Vite?是否上SSR?等这些问题讨论完,灵感早飞走了。

所以,我给定下的技术底线是:纯 HTML + CSS + 原生 JS,单文件即可运行,浏览器直接打开,无需任何编译。这不是反智这是一种刻意保留的创作自由。


第一步:讲一个设计网站的故事

在设计网站之前,得先想清楚这个网站“长什么样、给谁看”,最好的方法其实就是借鉴,我的需求很简单:

  • 把我平时收集的灵感网站、配色工具、字体资源、设计博客集中到一个地方

  • 视觉上必须舒服,毕竟设计师对丑的容忍度为零

  • 支持分类和快速查找,别让我在一堆链接里大海捞针

  • 手机上看也不乱,偶尔在咖啡馆也能翻翻

于是,我在花猫导航(huamaodh.com)参考很多页面设计,于是信息架构就出来了:顶部一个轻量搜索栏,下方是按“灵感采集”“配色”“字体”“工具”“教程”分组的卡片网格,底部一行脚注。整个页面没有一个多余像素,存在的意义就是帮你快速触达那些真正优质的设计资源。

这里有一张我当时画在笔记本上的潦草手稿,那才是 vibe 的起点——一根线条歪着都没关系,重要的是你脑子里的画面已经具象化了。


第三步:用 CSS Grid 把灵感铺开

设计网站最怕布局死板。我没有采用任何 CSS 框架,因为CSS Grid原生的能力已经足够优雅地解决所有问题。

css

.card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 20px; padding: 20px; }

这一小段代码是整个布局的灵魂。auto-fill配合minmax,让卡片自动填充屏幕,宽屏电脑上显示 5~6 列,手机上自动缩成 2 列。无需任何媒体查询,就已经实现了堪称完美的响应式。

每一张链接卡片由缩略图、标题、一行描述组成,悬停时微微浮起,并带一圈暖橘色的光晕——那颜色来自我对橘猫的执念,也为冷冰冰的工具页面注入了一点温度。


第四步:数据驱动,让内容自己长出来

一个设计网站最忌讳的就是硬编码。每次新增一个灵感链接都要去改 HTML 结构,很快就懒得维护了。所以用了最轻量的“数据驱动”方式:所有链接都放在一个 JavaScript 对象数组里,页面加载时由脚本动态渲染。

javascript

const designResources = [ { category: '灵感采集', name: 'Awwwards', url: 'https://www.awwwards.com', desc: '全球顶尖网站设计', icon: '🌟' }, { category: '配色', name: 'Coolors', url: 'https://coolors.co', desc: '快速生成调色板', icon: '🎨' }, // ... 后面还有几十个 ]; function renderNav(data) { const grid = document.querySelector('.card-grid'); grid.innerHTML = ''; data.forEach(item => { const card = document.createElement('a'); card.className = 'card'; card.href = item.url; card.target = '_blank'; card.innerHTML = ` <span class="card-icon">${item.icon}</span> <h3>${item.name}</h3> <p>${item.desc}</p> `; grid.appendChild(card); }); } document.addEventListener('DOMContentLoaded', () => renderNav(designResources));

这样一来,内容维护成本为零:想加一个新网站,只需在数组里加一行对象,刷新页面即刻生效。如果哪天你想把它改成其他类型的资源站,换一套数据就行,代码完全不用动。这种“配置化”思维虽然朴素,却在实际使用中带来了巨大的灵活性。


第五步:那些让人会心一笑的小交互

vibe coding 的妙处就在于,你不用等产品经理提需求,觉得什么有趣就加上什么。我塞了几个程序员专属的彩蛋:

  • 猫爪光标:把鼠标指针换成一只肉垫猫爪,移动时仿佛有只猫在屏幕上踩来踩去。代码是一行cursor: url(paw.png), auto;

  • 双击空白处切换暗黑模式:心情好就双击,页面从清爽奶油色切换成深色主题,色值全部用 CSS 变量控制,切换时没有任何卡顿

  • 搜索框自动聚焦:页面打开就能直接输入关键词过滤卡片,过滤不是删掉不匹配的卡片,而是用 CSSopacitytransform: scale(0.95)弱化它们,保留视觉节奏

这些功能每个实现都不超过 10 行代码,但叠加在一起,从一个“链接列表”变成了一个你会时不时想点开玩一下的个人空间。


第六步:手机端?反而要更讲究

很多人以为响应式就是缩小字号,其实恰恰相反。设计网站在手机上更要注意触控体验:

  • 卡片最小宽度设为 140px,确保在任何屏幕上每个卡片都至少 44px × 44px(符合 iOS 触控热区标准)

  • 移除悬停动画,改为点击瞬间缩放反馈

  • 分类标签改为横向滚动,节省垂直空间

  • 搜索栏吸顶,并增大输入框高度到 48px

全部通过几行条件 CSS 完成,没有用任何设备检测脚本。当我在手机上测试时,那种顺手的感觉让我特别满足——毕竟这才是真正为自己而做的东西。