前两篇中,阐述了『选择』的五个要点,设计『单选』的注意事项,以及『联动菜单』和『级联选择』等基本概念。
本篇将围绕『多选』展开,同时介绍『收集器』、『列表构造』、『增项列表』等界面上的重要概念。
实际工作中,『多选』通常有几百个候选项,甚至产品需求是对分页列表中的数据集进行批量操作。面对此类问题,常见设计方案如下:
设计思路:数据集当中,每一条记录都包含一个复选框;存在一个『全选』按钮或复选框,点击则全部勾选,再次点击则全部不勾选;针对已经选中的项目进行批量操作。
此设计思路的明显缺陷:
所以,当设计跨页、跨类多选的时候,请严重注意以上问题。
如何破解『多选陷阱』呢?一个非常简单的『收集器』就可以搞定:
看起来像『购物车』吧?没错,它就是一种典型的『收集器』。
特别注意,在设计『收集器』时,请保持下面的原则:
收集器中不应该再有跨页或者跨类多选,否则将又制造一个新的『多选陷阱』。(通常不会再分页,或者只分类不多选)
多级分类,只有在末端节点才有叶子,形成跨类多选;还有另外一种更复杂的情况,即在每一级节点上都可能包含叶子,形成『跨级多选』。
B端产品需求中,通常存在『企业的组织架构』,它代表了一类数据关系:严整的树形多级分类,每一级都可能包含叶子。于是,既要保证等级森严,又要进行多选,成了亘古难题。
真的很难么?通常的设计中,采用树形结构是常见方案,如下图:
设计思路:
此设计思路的明显缺陷,依然是『多选陷阱』:
初步结论:树型结构利于显示和单选,但不利于多选;用户辨识复杂度较高,操作复杂度更高,容易落入『多选陷阱』。
临时的解决方案:增加一个带路径的收集器。
只会设计APP,已经让从业者的技能严重退化。虽然熟练的设计师都会使用『购物车』解决多选问题,但是Web/桌面软件的另外一种『多选大杀器』却越来越变得鲜为人知,那就是『列表构造』:
显然,列表构造器在处理几百上千个候选项时:一目了然,节约空间,得心应手。
列表构造器同时存在两类列表:一类是『源列表』,即候选项目;另外一类是『目标列表』,即已选项目。操作一组控制按钮,实现『选项』在两类列表之间切换转移。
这种大杀器拥有超多的衍生形式,设计贴士如下:
虽然有诸多禁忌,但仍无法阻挡『非APP交互设计师』对它们的喜爱,例如在PC版微信中,『选择转发用户界面』就使用了构造列表器:
多级分类结构中,如果只在末端枝杈包含叶子(非跨级),且分级比较固定,例如3级、4级、最大限度为5级,此时可以采用级联列表构造器,快速实现多选。级联的多个『源列表』只有最末级为多选,其他级别为单选,参考形式如下:
不难发现,此形式与上一篇提到的『级联单选』非常相似,只是变为了多选(当然,单选也可以使用级联列表构造器实现)。
当然,上图之中也存在『多选陷阱』的隐患:
这个问题每个设计师有自己的答案,无论答案是什么,隐患都不太致命;因为『目标列表』显性存在,多选陷阱的危害被大大削弱;在操作效率面前,可以向合理性适当妥协。
还有什么武器能应对海量候选项的多选呢?看看这个大家都熟悉,但可能叫不上名字的『增项列表』。它是列表构造器的变体,比列表构造器更节约空间。
只要屏幕空间允许,多选嵌套可以玩出很多花样,无非两种方式:把多选拆分为多步骤『单选』,或者把多选拆分为多步骤『多选』。
两个重要的排序
本篇介绍的几种都选形式,都有近似的特征,多选并非一次完成,而是可以『分块』转移。在实际项目中,撰写PRD和交互文档时,要特别注意两个排序的规则:
本篇主要介绍了跨页、跨类、跨级多选中存在的操作陷阱,并提供『收集器』『列表构造器』『增项列表』等应对复杂多选问题的解决方案。
解决『跨级多选』问题目前并没有优雅的方案。
所谓『多选大杀器』它们共同的特点是,能够以较小的屏幕空间和操作代价,提供便捷的『辨识未选』、『操作选择』、『辨识已选』、『取消选择』、『明示不可选』。
多选可以级联并嵌套使用,只要避开『多选陷阱』就能变化出多种形式。它们主要由『源列表』与『目标列表』两部分组成,其中移动的中间块的自身顺序和加入『目标列表』的顺序值得注意。
单选小坑,多选大坑
开篇提到:人类因有选择而痛苦,没有选择,就没有痛苦;仰天长啸,交互设计中有关『选择』的三篇文章终于完成。
前两篇还是很轻松的,写到多选,消耗了大概三天时间,因为问题极其复杂,害怕误导诸位读者,总之是写了又删,删了再写,往复成篇。
遇到界面上的选择问题,相信都能够从这三篇文章中汲取灵感,找到答案。
大神你好,很专业的交互知识,受益匪浅!最近关于多选还是单选的问题纠结不已,尤其是移动端的筛选,对于某些条件比如订单状态的选择是单选好还是多选好难以抉择,考虑到用户可能同时需要查看多个状态而基本采用多选。虽然如此操作,但总觉得没有依据,不知大神能否指点,感激~
@羊羊 单选多选首先取决于用户需求及功能场景。