主题开发

FlatPaper(v0.4.0) 新特性:沉浸式手帐风留言板,把评论变成贴纸盲盒

2026-07-05 #Hexo#FlatPaper#Guestbook

在博客与论坛中,留言板总是不可获取的功能,借助 Artalk 与 Twikoo, Flatpaper 自定义了留言板的界面。

为了让 FlatPaper 的 “纸张与手帐” 理念贯彻到底,我们在最新的 feat/guestbook 版本中,彻底重构了留言墙的 UI 与交互,带来了一个充满“手工凌乱感”的沉浸式手帐留言板。

在尝试了信封、模拟纸张等单一或是交替效果后,最终选择了带有随机倾角的多色便签的样式。

“盲盒式”手帐排版

当你打开留言板时,你会发现所有的留言不再是死板的从上到下排列,而是被随意“贴”在了墙上:

  1. 原生的 CSS 瀑布流:我们使用了纯 CSS 的 column-width 特性,让不同长度的留言像拼图一样错落有致地咬合在一起,完全没有引入任何笨重的 JS 布局库。
  2. 随机样式生成:基于评论内容的 Hash 散列算法,每条留言在渲染时都会被自动赋予一个随机背景色(米色、淡粉、薄荷绿等)和一段 ±3度之内的随机倾斜角
  3. 随机手绘涂鸦:大概有 50% 的卡片上,会被随机加上手工画线、爱心、星星等手绘涂鸦背景,模拟真实手帐本上的即兴创作。
  4. 纸胶带防撕裂:留言的顶部会随机出现半透明的“和纸胶带”。我们专门对 DOM 结构做了 card-wrap 嵌套优化,彻底解决了瀑布流截断导致胶带被“撕破”在不同列的渲染 Bug。

最巧妙的是:由于采用了内容 Hash 算法,同一条留言无论你怎么刷新,它的倾斜角、颜色和涂鸦都是绝对固定的。这种物理贴纸转移的视觉连续性,让你感觉这就不是网页,而是一面真实的实体照片墙。

在“混沌”与“秩序”间切换

瀑布流排版最大的痛点就是不方便按时间顺序阅读。因此,我们在右上角加入了一个魔法按钮:

  • 默认 - 🔀 随机模式:打乱所有的留言数组,容器启用 瀑布流(Columns) ,卡片交错挤压,视觉最乱、手帐感最强,适合“随便看看”。
  • 点击 - 🕒 最新模式:将数组按时间倒序排列,同时通过 JS 动态给容器附加 .guestbook-wall__list--grid Class。这会瞬间关闭瀑布流,将容器强制降维成**网格(Grid)**布局。卡片会立刻变得横平竖直,严格按照 1 2 3 的横向顺序排列,满足你“找最新留言”的强迫症需求。

图片解析与表情兼容

留言板往往伴随着图片分享。传统做法是直接塞入富文本,这很容易破坏卡片的美感。我们做了一套定制化的提取逻辑(完全兼容 Twikoo 和 Artalk):

  • 分离渲染:代码会自动解析原始留言内容,把纯文本和图片剥离开来。
  • 拍立得化:所有被提取出来的真实图片(比如 WebP / PNG / JPG 等格式),会被放置在留言文本下方,并自动附带极细的白边和阴影,看起来就像是一张被订在便签上的拍立得照片
  • 自带透明通道:图片的底层设置为了 transparent。如果你上传了一张透明背景的动漫角色抠图,它会完美透出卡片底部的粉色/绿色纸张,仿佛是一张透明贴纸。
  • 智能屏蔽表情包:Twikoo 自带的小黄脸(如 OwO)等表情包如果被当成大图显示会非常灾难。代码会自动识别这些系统表情(比如包含 emotionsticker 的特征),将它们转换为极其轻量的 45x45 尺寸透明小贴纸横排显示,同时自动移除了它们身上的拍立得相框和 FancyBox 灯箱事件,确保它们看起来就是文末的小点缀。

现在,你可以去 Homulilly - 留言板 页面亲自体验了。

评论
微信
支付宝
分享

评论