给电子墨水屏做网页前端,真的不能用常规的 UI 思路去套
电子墨水屏(e-ink)这玩意儿最坑的地方就在于它跟我们习惯的 OLED/LCD 刷新逻辑完全相反。我想给 Bigme Hibreak Pro BW 这种设备搞几个浏览器端的轻量前端(比如 Lemmy 和 OpenRouter 的适配版),但发现如果直接套用现代 Web 设计,在电子纸上简直是灾难。
如果要把这套逻辑实操成一个可用的前端,基本的 CSS 策略应该是:
下一篇
用 AI 提高效率是为了多干活而不是早下班 →
最让我头疼的是大模型流式输出。LLM 那个字一个一个蹦出来的效果,在 e-ink 上会导致屏幕疯狂局部刷新,闪得人心慌,而且极易产生残影。在这种场景下,绝对不能用 streaming 实时渲染,得做缓冲机制,攒够一整段话或者一个自然段再一次性刷出来,牺牲一点实时感来换取视觉稳定。
关于 UI 适配,我有几个实操方向的思考:
- 彻底放弃滚动条,回归分页。 滚动是 e-ink 的天敌,残影(Ghosting)会让页面变得脏兮兮的。虽然现在很多设备有快速刷新模式,但功耗增加且对比度下降。最稳妥的方案还是做成类似电子书那样的翻页模式,每次加载新页面触发一次全刷,保证对比度最高。
- 视觉语言回归极简主义。 没了色彩,所有的信息层级只能靠排版和字体粗细来撑。我打算参考早期 Mac OS 的界面风格,因为那时候的显示设备限制也很多,通过强对比的线条和留白来区分区域,而不是靠阴影或渐变。
- 控制刷新频率。 既然在浏览器里没法直接调用系统级的刷新 API,那就得在前端逻辑上减少不必要的 DOM 更新。
如果要把这套逻辑实操成一个可用的前端,基本的 CSS 策略应该是:
body {
background-color: #ffffff;
color: #000000;
font-family: "Georgia", serif; /* 使用高对比度衬线体提高可读性 */
image-rendering: crisp-edges; /* 避免图像模糊 */
}
.content-chunk {
border: 2px solid #000; /* 放弃阴影,改用实线区分块 */
padding: 10px;
margin-bottom: 20px;
}目前打算先把 OpenRouter 的适配版跑通,重点解决 LLM 文本的分块渲染问题,毕竟在电子纸上用大模型如果能解决闪烁问题,体验会提升很多。