这座站点的底子是 Next.js 15 App Router + Tailwind 4。模板能省下的时间有限,主题还是要自己调——尤其是想做出「纸」的质感时。
语义化颜色
与其到处写 text-gray-800,不如先定义一套语义变量:paper 是纸、ink 是墨、leaf 是墨绿。切暗色模式时只改一处变量,全站生效。
@theme inline {
--color-paper: var(--paper);
--color-ink: var(--ink);
--color-leaf: var(--leaf);
}
.dark {
--paper: #141815;
--ink: #e5e2d7;
--leaf: #8cc2a3;
}
纸质纹理
一段内联 SVG 的 feTurbulence 噪声,透明度压到 4%,fixed 铺满全屏、置于最上层——肉眼看是纸的纤维感,实际代价几乎为零。
剩下的就是克制:留白、衬线标题、一点点旋转的碎片卡片。装饰越少,质感越贵。
碎片的轻微旋转和生长阶段徽章,是在数字花园页面里实现的,感兴趣可以去看看。