YhazrinJournal
← 所有文章
前端设计实验笔记

交互细节

等待、反馈与动效的设计记录。

一个东西「能用」和「像是被做出来的」,差距通常不到百分之二。但那百分之二决定了别人怎么评价它。

我说不出具体是哪一个瞬间,因为手感从来不落在单个交互上,它散落在等待的时机和失败时的反馈里。

手感首先是时间的分配

用户点下一个按钮之后,正确的响应时间不是「尽快」,而是有节奏的:

  • 0–100ms:感觉是即时的。这时候任何加载指示器都是干扰。
  • 100–300ms:这是「正在处理」的区间,一个安静的进度状态刚好。
  • 300ms 以上:用户开始怀疑出问题了。这里必须给出可解释的反馈,而不是继续转圈。

大部分「卡」的感觉,不是因为慢,是因为在慢的区间里给了错误的反馈。一个不动的按钮比一个诚实的进度条更让人焦虑。

手感不是让等待消失,是让等待被理解。

手感是承认失败的方式

我越来越确信,一个产品的体面程度,是在它出错的时候决定的。

具体来说有三个问题必须回答:

发生了什么。 不是「出错了」,而是「这个文件太大,超过了 20MB 的限制」。

我做了什么导致的。 让用户能定位到自己填的那一项,而不是对着空白页猜。

下一步怎么办。 一个能立刻执行的动作,哪怕是最保守的「重来一次」。

我自己的工具页面会为这三件事各留一个位置。失败态比成功态更花时间,但它出现得更多——每个用户都会遇到,只是程度不同。

手感还藏在「不该动的地方」

这是最容易被忽视的一条:正文不应该跟随装饰晃动。

当一个页面里所有东西都在动的时候,用户找不到锚点,注意力反而无法停留。真正的手感来自对比:周围在动,而你要读的那段文字是稳的。

我给自己的规则是:

  • 装饰层可以有低频循环,但幅度必须小到不会被注意到
  • 正文永远不参与任何 transform
  • 悬停反馈只作用在触发元素自身,不带动整块区域
  • 滚动位移按所属段落归一,不做全局累积

动得克制,和不动一样难,但它才是长时间阅读的前提。

一个具体的例子

我做过一个证件照工具,处理一张大图要三四秒。最早的版本转圈,用户反馈「感觉卡住了」。

后来的版本改了三件事:先立刻把原图显示出来(0ms),再在原图上做一个细微的处理中状态(100ms),最后用一条从下往上的进度线(300ms 后),完成时让结果从原图的位置展开(落位时)。

同样三四秒,感知完全不同。变的不是速度,是用户每一刻都知道发生了什么。

怎么判断自己有没有做到

有一个粗暴但有效的方法:录屏,然后静音快进看一遍。如果只看画面就能知道每一步在做什么、进行到哪了、下一步会怎样,那手感就成立了。

如果需要暂停才能看懂某个状态,那一刻就是手感断裂的地方。

最后那百分之二没有捷径,它只是在每个等待的时刻都诚实地回答了三个问题:我在哪、发生了什么、接下来怎么办。