之前实习的时候,我发现我写的交互规则说明会经常考虑不全面,导致会有返工。这几天理了下交互输出文档里,交互规则的说明,以下是简单的思维导图,整理了几个可以切入的地方,会分成几篇文章来跟大家讨论。
一、关于对象
对于一个产品,它的用户会有很多类型。
比如未登录的游客用户和已经登录的普通用户;男性用户与女性用户;会员用户和非会员用户;认证用户和非认证用户;还有会员等级不一样……
这些不仅会导致页面显示不一样,还会导致用户能够使用的功能不一样,我们需要给一个判定的规则,以及判断的先后顺序。
比如系统先判断用户是否登录,对登录成功的用户,系统再判断该用户是否认证,对于认证用户,再判断是否为会员用户,再判断会员等级等,根据判断的结果给出不同的页面去向以及功能使用权限。
比如知乎,在登录和未登录的前后两种情况,用户可以使用的功能是不一样的:
比如微博的会员用户可使用评论图片功能;视频类 app 会员可播放 vip 视频;黄油相机会员可使用所有付费素材等;比如宝宝树还有针对妈妈使用的功能以及针对爸爸使用的功能,它们在个人中心也会有会员的专属标志。
二、关于状态
对于一个 app 里面,所有的信息元素以及功能元素都会有多种状态,有默认状态,常规状态,特殊状态等等。
1. 默认状态
我们需要先设定一个默认状态。
常见的要设定默认状态的:有在进行表单里的单选框设计的时候,根据我们可以获取的一些用户信息,给用户一个默认选项,当然这个选项最好是能够符合用户真实情况的,这样能够减少用户的操作;
再比如默认文案,当用户未输入昵称和个性签名,或者未设置头像时,我们可以给用户一个默认的昵称,个性签名,头像。
再比如默认键盘,当输入一些数字信息(手机号,银行卡号等)的时候,我们需要定义一个规则,让系统调出数字键盘。
还有默认排序,比如搜索结果等列表页,有一个默认排序,那这个默认排序是按照什么样的规则进行排序的呢?也是我们需要定义好的。
还有默认选中,对于一些「同意XX协议」等,我们是否需要默认帮助用户选中呢?这也是需要按照场景来定义规则的。
如果我们没有在原型旁边备注这些说明,可能程序员就会开发出一些很不友好的交互。
2. 特殊状态
我觉得可以把一些非正常状态称为特殊状态。比如页面被删除,无网络,加载失败,空白页,系统错误,页面刷新状态等都称为特殊状态。
从用户触发操作开始到结果页,我们可以根据一个判断的逻辑来确认我们还存在哪些页面。
举个例子,对于没有网络的情况,针对不同场景,有不同处理情况。
比如可以用 toast弹框提醒用户当前没有网络;还有用小插画的形式告诉用户当前没有网络;另外像TIM和微信在断网的时候通过状态条告诉用户没有网络。
简单理了下这几种断网状态的区别:
其实关于空白状态页还有刷新状态页,也有许多值得考量的地方,比如局部刷新,全局刷新,加载刷新,下拉刷新,上拉刷新等等,大家也可以自己研究研究。
3. button、链接等控件的多状态
拿按钮来举例子,针对iOS平台,android平台,WEB端,按钮类型以及按钮能够呈现的状态会有很多区别。
比如 iOS平台,按钮有 normal,highlighted,disabled,selected状态(不过对于设计来说,按钮应该只有可点击状态和不可点击状态,对于开发来说,可能涉及到的状态会比较多,关于 iOS 的按钮设计规范可以阅读 iOS Human Interface Guidelines)
比如 android平台,按钮有 normal,hover,focused,pressed,disabled状态等等。(关于 android按钮设计规范可以阅读 Material Design)
对于交互来说,很重要的是定义好按钮是否可以点击,在满足了什么规则后才可以点击,为用户提供一个可视的反馈去表明当前的状态。
如果没有定义好可点击规则,那么用户会不断去尝试点击,然后会出错,系统可能就会一直给用户 toast 提示,这个时候用户体验就会十分差。
举个我觉得体验不好的例子:
比如这一个 app 的登录注册页,我在没有输入任何内容的时候,这个「继续」button 是可以点击的,每次点击就会给我 toast 错误提示。本身不可点击的东西,但是看起来就是可以点击的,点击后还给我 toast 提示,这样本身对用户就很不友好。
而它的输入框也是很典型没有定义规则,我可以在里面输入超过11位的手机号,系统不会报错,等我输满整个输入框后,系统就开始反馈错误,然后我需要一个一个删除,重新输入。
虽然这种犯错状况少见,但是作为交互来说,我觉得应该减少用户犯错的几率,所以这个页面可以把规则定义为:只有当用户输入11位数字时,「继续」button 可点击,否则置灰,并且当用户输入到11位数字时,不能再继续输入……
总结
- 在定义交互规则说明的时候,要注意使用对象的身份不一样,可以使用的功能也会不一样,页面也会不一样,比如登录用户和未登录用户,会员用户和非会员用户,男性用户和女性用户等等;
- 我们要给app里面所有的信息元素和功能元素定义默认状态,比如默认选项,默认文案,默认键盘,默认排序,默认选中等;
- 我们还需要定义页面存在的特殊状态,比如页面被删除,无网络,刷新,加载,无数据等情况;
- 关于控件的多状态也是我们需要定义的,比如在不同平台按钮的多种状态,按钮在什么情况下可点击等。
三、关于限制条件
关于限制条件,我觉得可以从两方面入手——输入限制和显示限制。
1. 输入限制
对于输入,有文本输入,数字输入,图片输入,语音输入等,以文本输入的输入框为例,简单列了一些输入限制需要考虑的问题,比如:
- 当未输入内容时,是不可以发送的,那么该怎么告诉用户不可发送呢?比如 button 不可点击;
- 还有最小限制,有些需要输入超过10个字才能发送,那该怎么告诉用户最小输入内容呢?
- 此外,输入内容一般都会有最大限制,怎么告诉用户输入文本的最大限制呢?
- 当用户输入超过最大限制的时候,怎么告诉用户不能继续输入了呢?是直接 toast 提示,还是限制用户输入,还是在每次输入的时候,实时反馈用户当前字数,以及还差多少字到达最大限制呢?
- 当输入内容超出输入框的时候,输入框是不是会随着输入字数的增多而发生一定的变形呢?
- 当输入内容过多的时候,输入框内会存在不可见内容,那么不可见内容该怎么让用户知道呢?
这些问题都是定义交互设计规则时需要考虑的。
比如大众点评:
它的输入评论就是很典型的最小输入限制 ,它在右下角给用户一个即时变化的文本提示「加油,还差15个字」,并且当用户未输满15个字,点击「发表」后,toast 告诉用户不能发表的原因。
还有一个很有意思的是 ,输入超过15个字后,右下角的文案提示发生变化,期望通过积分奖励的方式来激励用户输入详细的评论。
比如微博:
在发微博,当未输入内容时,「发送」button 不可点击 ;当用户输入内容后,发送 button 变为可点击状态,并且右下角出现记录字数的提示;但是当输入超过140字的时候,右下角的记录字数的提示变为橙色,警告用户输入超出字数。