对于设计网站这类项目,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 变量控制,切换时没有任何卡顿
搜索框自动聚焦:页面打开就能直接输入关键词过滤卡片,过滤不是删掉不匹配的卡片,而是用 CSS
opacity和transform: scale(0.95)弱化它们,保留视觉节奏
这些功能每个实现都不超过 10 行代码,但叠加在一起,从一个“链接列表”变成了一个你会时不时想点开玩一下的个人空间。
第六步:手机端?反而要更讲究
很多人以为响应式就是缩小字号,其实恰恰相反。设计网站在手机上更要注意触控体验:
卡片最小宽度设为 140px,确保在任何屏幕上每个卡片都至少 44px × 44px(符合 iOS 触控热区标准)
移除悬停动画,改为点击瞬间缩放反馈
分类标签改为横向滚动,节省垂直空间
搜索栏吸顶,并增大输入框高度到 48px
全部通过几行条件 CSS 完成,没有用任何设备检测脚本。当我在手机上测试时,那种顺手的感觉让我特别满足——毕竟这才是真正为自己而做的东西。