APP推广合作
联系“鸟哥笔记小乔”
搭建设计系统:Lyft 团队如何定义产品语言与组件库
2021-04-05 09:00:00

点击 "TCC翻译情报局关注,回复 "社群" 加入我们

本文共 5416 字,预计阅读 14 分钟

TCC 情报局的 第 32 篇 干货分享

2021 年的 第 20 篇


TCC推荐:大家好,这里是 TCC 翻译情报局,我是张聿彤。随着互联网行业发展,设计系统这一概念越来越热门。通常设计系统由使用指导文档和可复用的组件库组成,对于定调产品设计语言和提升生产效率都极具意义。但设计系统的搭建并不是一件容易的事,本篇文章展现了Lyft 团队的设计师搭建其设计系统的方法论以及一些小技巧,能够对各团队搭建自身设计系统时带来一定的帮助。


2019 年底,我协助将 Lyft[1] 全部的设计系统从 Sketch 移动到 Figma 。具有 “讽刺” 意味的是,在离开 Airbnb 前,其设计系统的迁移也是我负责的最后几个项目之一。这两次经历帮助我意识到一些在 Figma 中进行共享库( Shared Library )设计时每个人都该考虑的基本问题。

([1]Lyft 是美国一家网约车公司,于 2012 年创立,类似于 Uber、滴滴)



在这篇文章中,我将介绍在创建多个 Lyft 产品语言和组件库时,自己运用的一些优秀案例。最后,我还将介绍一些有用的小技巧,帮助各位对设计系统进行高效维护。



体系理念:系统中的秩序性


当我们开始着手在 Figma 中创建系统时,需要先退一步,通过几个例子重新评估 Sketch 中已做的工作,并重新审视此前确定的 布局视觉层次结构 与 命名规则 。我们意识到,为了在这些新的库中建立坚实基础,必须花时间在系统中 再创建一个可适用于文件中每个元素的子系统 



左图为轮播页面组件的主要组件,右图为该组件的内部嵌套组件。需要补充的是,文件的画布区域还存在 #F4F4FA 的背景填充


我们使用 可视层次结构( Visual hierarchy )来设置每个组件页面,以帮助区分 主要组件和内部嵌套组件。所有 主要组件 都放置在内部轮廓为 4px 且没有背景填充的框架中。这些框架充当组件标签纸。


内部嵌套组件 放置在白色背景的框架里。通过显示所有内部组件,使维护人员可获取到主组件内部可配置项的快照。这些内部嵌套组件的作用是 让用户能够灵活配置内部嵌套组件 ,以此重新配置主组件来达到最终所需的形式。同时内部嵌套组件能促进该主要组件的通用性,提升其维护与使用的效率性。


填充系统语言


在每个框架中,都使用了特定的边距。建立边距系统的好处是它可以统一画布上的所有元素之间(从一个页面到另一个页面,从一个库到另一个库)的视觉效果。


我们组件库的边距系数包括:

60px:内部框架间距(顶部,右侧,底部和左侧)

40px:框架标题到第一个主要组件之间

24px:框架标题到字幕之间(可选)

24px:垂直方向的主要组件之间

40px:水平方向的主要组件之间


图层从上到下视觉上重新排列


通常在 Figma 中,新创建的图层将默认创建在当前图层上方。而将图层根据正常的视觉框架层次从上到下、从左到右重新排列是一件繁琐的任务。


但在管理大量主要组件和内部组件时,以这种方式排列图层能帮助维护人员 快速浏览有时比较混乱的画布 


焦点紧凑型按钮的命名规则


与用户在 Slack[2] 上共同进行快速调研后,我们发现他们中的大多数人使用 资源面板( Assets Panel )来搜索和发现组件。因此组件的命名方式对这个工作流程就变得十分重要。

([2]Slack 是一款企业协作应用软件,集合聊天群组、大规模工具集成、文件整合以及统一搜索功能于一体。允许团队和企业通过群组进行沟通,有点类似国内的钉钉和企业版微信。Slack 目前的日活跃用户数已突破 1000 万大关,付费人数已达 8.8 万人,且它的用户中有 65 家是来自财富 100 强的公司。)


我们创建了以下应用于所有组件的命名结构:

文件名称 / 页面名称 / 框架名称 / 组件名称(变量、样式、类型和状态)


其中:

文件名称( file name )是特定库的名称,用户需要在资源面板中启用该名称的库才能使用其模型文件中的组件(例如,核心 UI 组件( Android / iOS ),核心 UI 组件( Web ), 核心用户界面颜色等)


页面名称( page name )是组件的名称(即 “轮播页面指示器( Carousel Page Indicator )”,“按钮”( Button ),“列表项( List Item )等”


框架名称( frame name )是组件的最高级分组,通常是按大小命名(即按钮的 4 种大小:Focus ,Focus Compact ,Drive 和 Drive Compact )


组件名称( component name )是主要组件及其变体的名称。由于变体的数量众多,我们使用反斜杠(/)将它们按照不同的类型定义并分类,例如按 “状态” 等。事实上即使这些变体被放在更多的类目里,也有助于相似变体组件的存储。它们更容易在「实例」下拉列表中灵活切换,或者更容易在「资源」( Assets ) 文件夹中查找。


「实例」下拉列表中的文件夹显示结构



更具灵活性的组件


创建原子元素( atomic elements )是设计系统的基础。我们将 Lyft 的产品语言分解为原子元素,然后用于创建特定的组件。这些内部嵌套组件(即前文的原子元素)有助于大型团队之间保持设计的一致性(例如按钮这类原子元素)以及降低维护成本,尤其当这些内部嵌套组件在多个复杂组件(例如文本字段,文本区域,下拉列表等)之间共用时。 

列表项组件包括 3 个操作区域:开始区,中间区和结束区


这个示例展示了内部组件是如何构成列表项组件的。我们为该组件设置了多个区域,以便对其进行重新配置从而创建不同的变体。在每个区域下,可以选择不同的内部组件。另外,还可以将其设置为相同大小,并使每个区域仅允许使用固定几种选择(例如驾车页面开始区域默认仅使用 4 个内部组件)

起始区域所允许使用的内部组件

中间区域所允许使用的内部组件


结束区域所允许使用的内部组件


对于像「列表项」这样的复杂组件,内部组件非常有用,可以灵活地重新配置组件以适应各种情况。



“响应式设计” 相关


当我们在创建灵活的共享组件时,还要考虑让这些组件可以按照你想要的方式进行响应。我们可以在 Figma 界面的「设计」(Design)面板中设置这些选项。


Figma中的「设计」面板


由于大多数应用程序都需要支持各种屏幕尺寸和平台,为了更好将程序普及到所有用户,创建响应式组件( Responsive components )极为重要。而实现这一目的的方法是通过适当的定义,让组件图层根据你所设置的 “水平” 和 “垂直” 约束值,相应调整大小。


水平约束


水平约束

  • 左侧:将图层固定在框架的左侧。

  • 右侧:将图层固定在框架的右侧。

  • 左右拉伸:图层沿x轴增长或收缩。

  • 居中:图层在框架的水平中心浮动。

  • 缩放:图层按框架尺寸的百分比增长或收缩。


举一个设置水平约束的例子。例如在调整列表项组件的大小时,你希望图标保留在同一位置的同时允许文本层增大或缩小。这时只需将下方图例内「Start」层的水平约束设置为 “左侧”,并将「Middle」层设置为 “左右拉伸” 即可。


列表项组件的水平约束设置示例


垂直约束


垂直约束

  • 顶部:将图层固定在框架的顶部。

  • 底部:将图层固定在框架的底部。

  • 上下拉伸:图层沿y轴增长或收缩

  • 居中:图层在框架的垂直中心浮动。

  • 缩放:图层按框架尺寸的百分比增长或收缩。


再举一个设置垂直约束的例子,例如在调整文本区域组件的大小时,你希望消息层固定在底部的同时文本区域增大或缩小。这时只需将下方图例内「Message」层设置为 “底部” 垂直约束,并将「Text」框架层的垂直约束设置为 “上下拉伸“ 即可。


「Text Area」组件的垂直约束设置示例


调整大小选项(见 8 号标注):设置「自动宽度」,「自动高度」和「固定大小」(从左往右)


还有一些与此类似的约束功能可以在图层类型内设置,以适应内容的缩小或放大。这些约束项可以跟你之前设置的约束项共存。


自动宽度适配

「自动宽度适配」选项可以 使文字图层的宽度根据所填的内容而自动调整。当我想要「文本」图层根据内容增长时,通常会将「文本」图层的宽度设置为「自动宽度适配」。即通过设置左侧「水平约束」( horizontal constraints )和「自动宽度适配」( auto width )文本图层将根据文字内容相应地调整大小


文本区域组件的自动宽度适配文本设置示例


自动高度适配

「自动高度适配」选项可以 使文本图层的高度根据所填的内容而自动增加。原始文字图层的宽度将决定内容何时换行。当我希望将内容换行到组件中的第二行时,通常将文本图层的高度设置为「自动高度适配」。通过将「水平约束」与「自动高度适配」选项一起设置为左右约束,文本层将按照我的意图进行包装。


文本区域组件的自动高度适配文本设置示例


固定尺寸

无论内容如何,该选项的参数都会设置在文本图层的宽度和高度中。文字图层的宽度设置项将决定内容何时换行而超出文字层的高度设置的内容将不会被剪切


创建灵活组件的另一种方法是利用 自动布局功能( Auto Layout feature ),该功能会根据内容做出相应的调整。很多组件与「自动布局」配合使用得非常好,其中包括按钮、列表和面板。但是此功能有其局限性,如何展示其优势取决于你的组件使用场景。


使用自动布局的响应式按钮


「自动布局」能够统一设置间距描边和圆角半径,而这正是创建按钮所需的全部元素。当你输入内容时,「自动布局」会在保持内边距不变的基础上自动调整大小。这同样适用于设置了「自动布局」的按钮堆叠场景。


其他元素随文字内容变化而调整


当你将文字内容复制粘贴到文本图层中时,设计中的其余元素会随之调整,这正是「自动布局」功能的强大之处,同时这也是进行本地化测试的好方法。


自动布局使自动排序变得简单


有没有发现对列表或菜单中重复的 UI 元素重新排序很麻烦?通过「自动布局」,你可以通过简单地拖放或使用键盘上的上、下箭头键来对它们进行重新排序。



设计技巧


在管理设计系统团队的所有组件库时,我通常会 使用键盘快捷键来帮助我更有效地工作。其中一部分快捷键用法同其他设计软件相同,另一部分则需要些巧妙的专业提示,使其在 Figma 中更加容易发挥功效。


  • 「选择所有相同实例」功能( Select All with Same Instance )。当需要在包含主要组件的页面中重命名许多内部组件时,只需导航至「编辑」菜单,然后选择「选择所有相同的实例」即可


编辑 > 选择所有相同的实例


  • 「创建组件」功能。任何一个做设计系统设计师都知道最后总归是要创建组件的。我经常键入 Option + Command + K 以快速创建组件。


  • 「重命名图层」功能。Figma 的默认重命名功能非常强大。选择多个图层并输入Command + R 会触发一个「重命名图层」模式,它具有更多的重命名选项,包括查找和替换,数字的升序和降序以及在当前名称前添加或附加。

Command + R when multiple layers are selected

选择多个图层并输入Command + R


  • 「粘贴所选内容」功能。粘贴是我最常使用的功能。在 Figma 中,只需键入 Shift + Command + V(当已经选择了某些内容时)即可完成此操作。

  • 「放大图层」功能。要快速放大图层,只需在「图层」菜单中双击该图层的图标即可。

在任意图层上实现快速缩放


  • 「组件说明」功能。这是一种传达有关组件特定详细信息的方式。将鼠标悬停在 “资源” 和 “代码” 面板中的实例上时就会显示。我们利用该区域为我们的工程合作伙伴提供移交信息。


放置在组件描述中的工程切换信息


  • 「忽略约束」功能。当想暂时忽略组件层上的水平 / 垂直约束设置项时,你可以在调整组件大小时按住 Command 键。想要继续使用约束,松开 Command 即可。

  • 「防止自动嵌套」功能。我在画布上移动图层时发现的一件令人沮丧的事情 —— 移动的图层会自动被放置在其他框架中。想要防止这种情况发生,可以在拖动图层时按住空格键。

  • 「替换实例」功能。这是一个专业的小提示,可用于替换任何实例,但我专门用它来替换图标;从 “资源” 面板中拖动组件时,按住 Option 键。你也可以使用 “资产” 面板搜索字段,从而提高效率。

方便地替换图标



最终思考


第一次构建 Airbnb 组件库时期,也是我第一次接触到设计系统相关内容。在过程中我收获良多。正是一开始就采用了 “系统的秩序性” 这一理念,我才有能力搭建出设计系统如此复杂的东西,并得以让设计系统以一种 一致高质量灵活的 方式呈现。而这种理念,以及上文提及的所有内容,就是我在 Figma 中构建 Lyft 设计系统的秘诀。 



原文:https://design.lyft.com/building-a-design-system-library-3a1f0d09088f

作者:Jeremy D.

译者:邵俊森

审核:李泽慧、张聿彤

编辑:徐小淇

本文翻译已获得作者的正式授权(授权截图如下)


往期精选文章:

这些色彩心理学知识教你如何传递信息

案例研究|康奈尔大学副业社区网站设计

Web Vitals —— 谷歌的新一代 Web 性能体验和质量指标

网页设计师能从日式美学中学到什么?

案例研究|一款为你带来难忘体验的美食 APP

如何制作打动面试官的作品集,这里有一份完整的指导手册

如何做好用户体验项目?从一个好计划开始

如何建立设计系统

如何把握不同层级用户的需求:回归本质,打磨信息架构

TCC 视野|2021 年用户体验设计趋势分析




- 设计师自习社区 -

TCC 设计情报局欢迎小伙伴加入,一起交流设计知识,了解全球设计资讯,锻炼英文能力,发掘更多可能性~

添加小助手微信,备注「社群」,即可加入读者群。

TCC翻译情报局
分享到朋友圈
收藏
收藏
评分

综合评分:

我的评分
Xinstall 15天会员特权
Xinstall是专业的数据分析服务商,帮企业追踪渠道安装来源、裂变拉新统计、广告流量指导等,广泛应用于广告效果统计、APP地推与CPS/CPA归属统计等方面。
20羽毛
立即兑换
一书一课30天会员体验卡
领30天VIP会员,110+门职场大课,250+本精读好书免费学!助你提升职场力!
20羽毛
立即兑换
顺丰同城急送全国通用20元优惠券
顺丰同城急送是顺丰推出的平均1小时送全城的即时快送服务,专业安全,准时送达!
30羽毛
立即兑换
TCC翻译情报局
TCC翻译情报局
发表文章89
连接知识,了解全球精选设计干货
确认要消耗 羽毛购买
搭建设计系统:Lyft 团队如何定义产品语言与组件库吗?
考虑一下
很遗憾,羽毛不足
我知道了

我们致力于提供一个高质量内容的交流平台。为落实国家互联网信息办公室“依法管网、依法办网、依法上网”的要求,为完善跟帖评论自律管理,为了保护用户创造的内容、维护开放、真实、专业的平台氛围,我们团队将依据本公约中的条款对注册用户和发布在本平台的内容进行管理。平台鼓励用户创作、发布优质内容,同时也将采取必要措施管理违法、侵权或有其他不良影响的网络信息。


一、根据《网络信息内容生态治理规定》《中华人民共和国未成年人保护法》等法律法规,对以下违法、不良信息或存在危害的行为进行处理。
1. 违反法律法规的信息,主要表现为:
    1)反对宪法所确定的基本原则;
    2)危害国家安全,泄露国家秘密,颠覆国家政权,破坏国家统一,损害国家荣誉和利益;
    3)侮辱、滥用英烈形象,歪曲、丑化、亵渎、否定英雄烈士事迹和精神,以侮辱、诽谤或者其他方式侵害英雄烈士的姓名、肖像、名誉、荣誉;
    4)宣扬恐怖主义、极端主义或者煽动实施恐怖活动、极端主义活动;
    5)煽动民族仇恨、民族歧视,破坏民族团结;
    6)破坏国家宗教政策,宣扬邪教和封建迷信;
    7)散布谣言,扰乱社会秩序,破坏社会稳定;
    8)宣扬淫秽、色情、赌博、暴力、凶杀、恐怖或者教唆犯罪;
    9)煽动非法集会、结社、游行、示威、聚众扰乱社会秩序;
    10)侮辱或者诽谤他人,侵害他人名誉、隐私和其他合法权益;
    11)通过网络以文字、图片、音视频等形式,对未成年人实施侮辱、诽谤、威胁或者恶意损害未成年人形象进行网络欺凌的;
    12)危害未成年人身心健康的;
    13)含有法律、行政法规禁止的其他内容;


2. 不友善:不尊重用户及其所贡献内容的信息或行为。主要表现为:
    1)轻蔑:贬低、轻视他人及其劳动成果;
    2)诽谤:捏造、散布虚假事实,损害他人名誉;
    3)嘲讽:以比喻、夸张、侮辱性的手法对他人或其行为进行揭露或描述,以此来激怒他人;
    4)挑衅:以不友好的方式激怒他人,意图使对方对自己的言论作出回应,蓄意制造事端;
    5)羞辱:贬低他人的能力、行为、生理或身份特征,让对方难堪;
    6)谩骂:以不文明的语言对他人进行负面评价;
    7)歧视:煽动人群歧视、地域歧视等,针对他人的民族、种族、宗教、性取向、性别、年龄、地域、生理特征等身份或者归类的攻击;
    8)威胁:许诺以不良的后果来迫使他人服从自己的意志;


3. 发布垃圾广告信息:以推广曝光为目的,发布影响用户体验、扰乱本网站秩序的内容,或进行相关行为。主要表现为:
    1)多次发布包含售卖产品、提供服务、宣传推广内容的垃圾广告。包括但不限于以下几种形式:
    2)单个帐号多次发布包含垃圾广告的内容;
    3)多个广告帐号互相配合发布、传播包含垃圾广告的内容;
    4)多次发布包含欺骗性外链的内容,如未注明的淘宝客链接、跳转网站等,诱骗用户点击链接
    5)发布大量包含推广链接、产品、品牌等内容获取搜索引擎中的不正当曝光;
    6)购买或出售帐号之间虚假地互动,发布干扰网站秩序的推广内容及相关交易。
    7)发布包含欺骗性的恶意营销内容,如通过伪造经历、冒充他人等方式进行恶意营销;
    8)使用特殊符号、图片等方式规避垃圾广告内容审核的广告内容。


4. 色情低俗信息,主要表现为:
    1)包含自己或他人性经验的细节描述或露骨的感受描述;
    2)涉及色情段子、两性笑话的低俗内容;
    3)配图、头图中包含庸俗或挑逗性图片的内容;
    4)带有性暗示、性挑逗等易使人产生性联想;
    5)展现血腥、惊悚、残忍等致人身心不适;
    6)炒作绯闻、丑闻、劣迹等;
    7)宣扬低俗、庸俗、媚俗内容。


5. 不实信息,主要表现为:
    1)可能存在事实性错误或者造谣等内容;
    2)存在事实夸大、伪造虚假经历等误导他人的内容;
    3)伪造身份、冒充他人,通过头像、用户名等个人信息暗示自己具有特定身份,或与特定机构或个人存在关联。


6. 传播封建迷信,主要表现为:
    1)找人算命、测字、占卜、解梦、化解厄运、使用迷信方式治病;
    2)求推荐算命看相大师;
    3)针对具体风水等问题进行求助或咨询;
    4)问自己或他人的八字、六爻、星盘、手相、面相、五行缺失,包括通过占卜方法问婚姻、前程、运势,东西宠物丢了能不能找回、取名改名等;


7. 文章标题党,主要表现为:
    1)以各种夸张、猎奇、不合常理的表现手法等行为来诱导用户;
    2)内容与标题之间存在严重不实或者原意扭曲;
    3)使用夸张标题,内容与标题严重不符的。


8.「饭圈」乱象行为,主要表现为:
    1)诱导未成年人应援集资、高额消费、投票打榜
    2)粉丝互撕谩骂、拉踩引战、造谣攻击、人肉搜索、侵犯隐私
    3)鼓动「饭圈」粉丝攀比炫富、奢靡享乐等行为
    4)以号召粉丝、雇用网络水军、「养号」形式刷量控评等行为
    5)通过「蹭热点」、制造话题等形式干扰舆论,影响传播秩序


9. 其他危害行为或内容,主要表现为:
    1)可能引发未成年人模仿不安全行为和违反社会公德行为、诱导未成年人不良嗜好影响未成年人身心健康的;
    2)不当评述自然灾害、重大事故等灾难的;
    3)美化、粉饰侵略战争行为的;
    4)法律、行政法规禁止,或可能对网络生态造成不良影响的其他内容。


二、违规处罚
本网站通过主动发现和接受用户举报两种方式收集违规行为信息。所有有意的降低内容质量、伤害平台氛围及欺凌未成年人或危害未成年人身心健康的行为都是不能容忍的。
当一个用户发布违规内容时,本网站将依据相关用户违规情节严重程度,对帐号进行禁言 1 天、7 天、15 天直至永久禁言或封停账号的处罚。当涉及欺凌未成年人、危害未成年人身心健康、通过作弊手段注册、使用帐号,或者滥用多个帐号发布违规内容时,本网站将加重处罚。


三、申诉
随着平台管理经验的不断丰富,本网站出于维护本网站氛围和秩序的目的,将不断完善本公约。
如果本网站用户对本网站基于本公约规定做出的处理有异议,可以通过「建议反馈」功能向本网站进行反馈。
(规则的最终解释权归属本网站所有)

我知道了
恭喜你~答对了
+5羽毛
下一次认真读哦
成功推荐给其他人
+ 10羽毛
评论成功且进入审核!审核通过后,您将获得10羽毛的奖励。分享本文章给好友阅读最高再得15羽毛~
(羽毛可至 "羽毛精选" 兑换礼品)
好友微信扫一扫
复制链接