671 字
3 分钟
友链页面设计:二态卡片、粒子特效与死链坟场的三层玩法

卡片体系统一:先定语言再谈花样#

友链页最容易做乱——每个卡片一个样式,堆起来就是杂货铺。我的做法是先给所有卡片类页面定同一套视觉语言,友链、项目、技能、关于页共用:

.friend-card
border-radius: var(--shape-corner-l)
border: 1px solid var(--outline-variant)
background: var(--card-bg)

横向布局:56px 圆角头像 + 标题/描述/标签信息区,网格用 repeat(auto-fill, minmax(15rem, 1fr))——15rem 是实测门槛,保证 1024px 宽度下稳定三列。

hover 是整套语言的「呼吸」:边框、标题、底色一起转向主色(底色用 color-mix(in oklab, var(--primary) 5%, var(--card-bg))),阴影升到 --m3e-elevation-1,右上角一个 arrow-outward 箭头从 translate(-0.25rem, 0.25rem) 浮现,头像轻微 scale(1.05)。所有卡片同频呼吸,页面就「齐」了。

二态卡片:站长紫与推荐金#

70 个友链里总要有层级。设计了两种特殊状态:

状态配色装饰粒子
--owner 站长#8d7cff / #ebe8ff / #5c49c7小房子 mask SVG四角星芒 auroraFlow
--featured 推荐#f4bb2e / #fff0a2 / #956100大星星 mask SVG五角星流星 starFlow

两个色板刻意与评论系统(Waline)的站长标识同源,暗色模式另有独立色板。粒子的绘制是同一个工具函数换参数:

traceRoundedStar({ points: 5, innerScale: 0.48 }) // → 五角星
traceRoundedStar({ points: 4, innerScale: 0.36 }) // → 四角星芒

死链检测:暂存区与墓碑墙#

友链页最大的维护痛点是死链。方案是检测体系 + 分区降级:

  • 检测结果按 data-status="success | slow | warn | timeout" 点亮状态徽标;
  • 结果缓存进 localStorage(键 shirone:friend-check-result),先渲染缓存再后台刷新;
  • 失败 1-6 次进入暂存区pendingZone),可能只是对方临时抽风;
  • 失败 7 次以上进墓碑墙graveyardZone)——头像变灰排成一堵墙,既不冤枉也不装瞎。

悬浮预览与一个 transform 陷阱#

鼠标悬停卡片时弹出站点截图预览。截图地址存在 data-siteshot 上,预览浮层用 portalToBody 挂到 body 下。

小结#

友链页的三层结构:统一卡片语言保下限、二态卡片 + 粒子做出识别度、死链检测分区解决长期维护。数据结构与 Mizuki 同款,迁移友链数据零成本。

友链页面设计:二态卡片、粒子特效与死链坟场的三层玩法
https://blog.fqzlr.top/posts/tech/friends-page-design/
作者
fqzlr
发布于
2026-09-05
许可协议
CC BY-NC-SA 4.0

分享文章

生成精美分享图或复制链接,与更多人分享本文。

继续阅读

沿着主题读

基于共同的标签与分类

换条路线

从其他文章中稳定抽取