有些细节,做好了没人会注意,做不好却一定会被感受到。这里记几个自己项目里的例子。
主题切换不闪一下
深色模式下刷新页面,先闪一下白色再变黑,是很常见的问题。原因是页面在脚本执行前就按默认的浅色渲染了。
解决办法是在 <head> 里放一小段同步脚本,在页面绘制之前就读取用户的偏好并设置好主题。只有几行代码,但能让刷新这件事变得安静。
暂停时,频谱先落下再停
播放器的频谱图最初在暂停时会瞬间清空,画面像被掐断。后来改成暂停后让柱子按原来的速度落回底部,再停止绘制。差别只有几百毫秒,但看起来像是音乐「停下来了」,而不是「坏掉了」。
回到上次停下的地方
关闭播放器再打开,播放队列和进度都还在。歌曲链接有时效,过期后会自动重新获取,用户不需要知道这件事。
告诉用户发生了什么
问答前台在请求被限流时,会提示「提问太频繁,请稍后再试」,而不是一个通用的「出错了」。资料不足时,回答会明确说不知道,而不是硬编一个答案;回答末尾也会提醒「建议对照原文」。
加载时的样子也是设计
管理后台的加载占位,从一个转圈的图标改成了和真实卡片同样形状的骨架。等待的时间没有变,但页面不会在加载完成的瞬间「跳」一下。
这些细节单独看都很小,也很难写进功能列表。但我越来越相信,一个产品给人的感觉,往往就是由这些看不见的地方堆起来的。