前言
嘿!如果我没有猜错,你一定是被标题吸引进来的。那...既来之则安之,跟着我的文字一起来看看,我们是如何让设计资产“表里不一”的。
今天想要和大家分享的是一个 Ant Design 的设计资产「列表」。它是企业级产品页面中重要的组成部分,几乎所有的产品都会用到它。随着企业级产品复杂业务场景的增量,Ant Design 的列表覆盖度也受到了很大的挑战,很多设计师说现有的组件和交互模式无法满足他们的业务场景,导致他们需要重新设计列表,带来了额外的设计和开发成本,同时对于全域产品的体验一致性也带来了挑战。因此,我们决定一探究竟,去看看列表的底层基因到底是什么样子,我们应该如何提高通用性和覆盖度。
表格、列表、卡片列表的区别
在研究列表之前,我们首先将表格、列表、卡片列表这三个资产,从用户的交互行为、使用场景、资产结构三个维度
进行了分析,并尝试做了明确的定义和区分,避免后期在使用过程中的概念混淆。
(1)表格的定义
表格通常是以矩阵式布局呈现,强调信息的浏览性,趋向于展示多而复杂的数据。数据按照矩阵布局对齐,方便横纵浏览以及研究数据之间的关系。
(2)列表的定义
列表通常以线性结构呈现,能交互式地展示众多数据结构相同的条目,且扩展性强。通过列表,用户更容易纵向扫读来获取宏观信息,横向浏览来了解单个条目的细节信息并进行相关操作。
(3)卡片式列表的定义
卡片列表通常以网格布局呈现,用于承载数据间相互独立的信息,扩展性大且个性化强。通过卡片列表,用户会更聚焦于单个卡片的概览内容,且很少会进行卡片间的数据对比,而是对单个卡片的数据信息进行查阅,并决定是否进行操作。
列表的构成
在清楚的定义了什么是列表之后,我们开始去思考一个列表的底层结构到底会是什么样?经过几轮的讨论和试错,我们得到了如上图所示三层结构,它们分别是容器层、容器功能层、内容层。容器层:容器层像一个盒子,它的大小、形状决定了这个容器承载内容的体量,因此我们将列表的容器层默认值定义为一个宽1184px,高为44px的矩形。用户可以根据业务需求调整其高度和宽度。
容器功能层:容器功能层象一个盒子的手提带,用户只要提起这个带子,整个盒子就会被拎起来。也就是说,这个容器功能层是整个列表的全局操作。
内容层:内容层像放入盒子里的各种物件,用户可以根据自己的需求在这个盒子里填满各种东西,并在盒子外面贴上一些标签,来告知盒子里都有些什么,当用户需要查看具体的东西时,就可以打开这个盒子。
通过三个层次的划分,我们可以清晰的定义每个层次的内容及具体的职能是什么,这有利于我们后期面对复杂业务场景和海量信息内容时,可以更好的去归纳和组织信息的呈现,于此同时高度结构化的组织形式也是保持资产内在一致性的关键要素。
模式化设计方法 — 元素穷举
在列表的构成中,我们清晰的定义了列表的底层结构以及其对应的职能,到目前为止,你可以把它想象成是一个空盒子。当然,仅有这样一个空盒子是远远不够的,接下来,我们要在这个有边界的空盒子里合理的规划物件的收纳,以及思考对这个盒子,用户会有哪些操作诉求。因此,我们有了许多新的疑问,例如:企业级产品通常都会在这个列表中放些什么内容呢?
这些内容是否可以能被抽离出一些共同的特征和展示形式呢?
我们应该如何更好的组织这些内容,提升用户的阅读和操作体验的同时更好的解决通用性和覆盖率的问题呢?
为了解决这些疑惑,我们尝试了很多种方法,最终总结了一个新方法:Ant Design 模式化设计 — 元素穷举。(Ant Design 模式化设计方法详情查看此处)
如上图所示,在元素穷举之前,首先我们尝试思考了一个问题:当用户看到一个列表时,它的浏览顺序和阅读习惯会时什么样子的。通过分析发现,在信息浏览的场景中,通常人们会以从左到右,从上至下的顺序进行信息的浏览。于此同时,人们在获取信息时,更习惯于先了解信息概要,再查看细节,最后作出判断或决策。那么,基于以上两个维度的分析,我们尝试将单个列表条目的内容层进行区块的划分,得到了如下图所示的三个区域:主题区、关键信息区、操作区。主题区:主要呈现的是一些信息概览,包括标题、时间、备注等信息,用户看到这里就可以快速的对当前列表产生信息的认知。
关键信息区:该区是对列表中详情数据的高度提炼,主要呈现一些关键信息,帮助用户对列表内容进行知悉,辅助其更好的进行下一步的决策与操作。
操作区:基于业务的需求,放置相关的操作按钮,从而达到产品的运作和流转。
在完成区块的划分和具体的职能之后,我们开始思考,每个区域应该要有什么样的元素才能够更好更直接的展示列表信息,在此期间,我们例遍了上百个列表页面,并开展了一次脑爆会,对每个区域的内容进行了元素的穷举。
如上图所示,我们在上百个页面中梳理并抽取了每个区域可能出现的元素,并整理出一些通用性强,覆盖率高的元素进行组件化。保证后期设计师在结合不同场景使用时的高效拼装和灵活替换。
此外,三个区的元素都有各自明显的特征性,例如在主题区中的元素更加简练、概括和基础。而在关键信息区,展示的元素相对更加丰富,如我们会通过 Mini Chart 来向用户展示一些数据信息,通过进度条来向用户展示数据处理进度,通过标签来向用户呈现数据的分类或重要程度等。在操作区,我们也设定了一些展示规则,例如纯字段的展示、图标的展示以及弱化操作的展示方式等等。
梳理完内容层的信息之后,我们也对容器功能层结合业务场景,进行了穷举,赋予了四个常用功能,分别是:排序、勾选、展开和置顶。如上图所示,我们将对条目容器全局性的操作放在了条目的最前面,这有利于对多个条目进行批量操作,于此同时也和尾部的业务操作做一个显著的区分。
基于元素穷举的方法,我们系统全面的梳理了列表在内容层和容器功能层的底层元素,通过这些元素的自由搭配组合,就可以生长出基于业务场景下的不同列表。他们有着相同的底层逻辑和规则,却有着不同的外在视觉和功能。
列表的布局及交互规则
(1)内容层的布局规则
通过元素穷举的方法,我们更清晰的梳理了不同区块可能出现的视觉元素和信息内容,更合理的排布了整体的信息展示顺序。到此为止,我们可以很好的解决内容层的覆盖度问题。但是,我们发现,除了内容层的样式以外,还有很多细节问题有待解决。例如:并不是所有的业务都需要将单个条目分为3个区域。基于这个问题,我们制定了一系列的排布规则,详细的说明内容层三个区域搭配的具体规则,如下图所示。
动态演绎
(2)容器功能层的布局规则
为了保证这四个功能的摆放不影响主题区的信息展示,我们制定了一系列的间距规则,保证在四个功能都存在的场景下,有一个较优的展示方案。具体内容如下动态演示图。
列表的视觉案例
根据以上的交互规则和相关的组件元素,设计师可以根据自己的业务需求进行拼装优化。如下图所示,动态演绎中展示了单行条目的一些规则变化。你可以添加图标、添加Tag;在关键信息区你可以增加进度条等。
当你需要展示的信息较多时,可以对容器层的高度进行扩展,变成双行甚至是多行。如下图所示,动态演绎图中展示了两行的列表是如何展示数据的。
单行列表的展示样式,如下图所示。
多行或容器尺寸改变的场景下,列表的展示样式,如下图所示。
总结
以上就是本次分享的全部内容,相信大家看完之后可以理解“表里不一”的概念了。
所谓的“表”是指在UI层面的视觉元素表现,我们通过元素穷举的方式,来抽离通用性强、覆盖率高的元素,将这些元素设计成一个个的UI组件,设计师可以根据自己的业务场景自由拼装组合,得到一个幻化万千的的外表。
所谓的“里”指的是资产的内在结构和交互规则,我们可以将其定义为是一个设计公式,其包括了对列表的区块划分、间距规则、响应式规则等。大家可以通过这个公式来制定自己的资产规则,从而保证产品的内在体验一致性,交互一致性,减少用户的学习成本和试错成本。
目前整套规则和资产已经在蚂蚁内部的上百个企业级产品和应用推行使用,整理来看,设计师通过以上的规则以及相关组件的自由搭配组合,业务场景的覆盖率能够达到80%以上,大大提升了设计的效率,于此同时,结构化的交互逻辑和标准化的组件与开发形成了精准的同步,提升了研发效能,从而促进整个产品研发效率的提升。
最后,感谢你的花费宝贵的时间阅读这篇文章,希望可以给你带来一些启发。我们非常期待设计师体验和使用Ant Design 4.0 的设计资产,同时也能全面了解这些资产背后我们的思考和一些小经验。当你发现我们的设计资产无法满足你的业务场景时,也可以通过这些方法和步骤,创造属于你们团队自己的设计资产。Ant Design 4.0 设计体系进阶!设计资产不断丰富,设计工具层出不穷,来新版官网看看吧 ^_^
欢迎到 知乎问答 与我们互动。