嗨小伙伴们大家好~☀️
今天小编给大家带来的文章是【原创译文】我们如何创建Lyft的产品设计系统和组件库,本篇文章将带领大家跟Airbnb和Lyft设计师学习如何应用Figma的强大功能创建设计规范系统 ,一起来看看吧!?(全文共计4972字,阅读约需要15分钟)
2019年底,我帮助Lyft将所有的设计系统从Sketch转移到Figma,这也是我离开Airbnb之前从事的最后一个项目。我从这两次经历中学到的东西帮助我认识到,在Figma中设计共享库时,每个人都应该考虑的一些基本问题。我认为Figma是目前业界首选的设计工具。
在这篇文章中,我想讨论一些我们创建多个Lyft产品语言属性和组件库过程中所遵循的最佳实践。然后我将介绍一些有用的技巧和窍门,它们帮助我们有效地维护系统直至今日。
![8edc735fcf55133342d8d3b377c87e59.png](https://i-blog.csdnimg.cn/blog_migrate/bf82e44c553a759436d19ec214528a7e.png)
系统-感知:系统中的系统
![6a5cd7b0e97c9f41119d385fbd4e072a.png](https://i-blog.csdnimg.cn/blog_migrate/0f2d69cd6452638aa973162ba5663eea.png)
当我们开始在Figma中创建我们的设计系统时,我们重新评估了我们在Sketch中所做的项目,审查了我们在布局、视觉层次和命名规范等方面所做的决定。我们意识到,如果想要在新的设计库中奠下一个强大的基础,我们必须在设计系统中花时间先创建一个能够应用于文件中每个元素的系统。最终我们在组件库中构建了一个具有一致性且保证质量的系统,方便我们在日后增加维护设计库人员的数量。
轮播页面的主要和内部组件。注意,主组件画布里有一个#F4F4FA的背景填充。
我们使用可视的结构层次来设置每个组件页面,以便区分主要组件和其内部组件。所有的主要组件都被放置在有4px内边框线的框架当中,这些框架就像一张张组件的贴纸。
内部组件则放置在一个白色背景的框架中。通过显示所有内部组件,维护者能够获得用于重新配置主组件选项的全貌。这些内部组件的目标是允许使用者将主要组件重新配置,成为他们所需的变体,并促进多个内部组件之间的共享,使日后的维护更加高效。
内边距系统
在每个框架中,我们都设置了特定的内边距。参考内边距系统的好处是,它在画布上的所有元素之间,在页面之间,在组件库之间,都达到了视觉上的一致性。
我们的组件库使用了以下的内边距规范:
- 60px:内部框架边距(顶部、右侧、底部和左侧)
- 40px:主标题到第一个主组件之间
- 24px:主标题到副标题之间
- 24px:主组件之间的垂直距离
- 40px:主组件之间的水平距离
![6f479479490b43aa022da5878112eaff.png](https://i-blog.csdnimg.cn/blog_migrate/c604bbb8f5868d9507d67deeeca2347e.png)
![bdecc2bfbcd0c31202a823c540243061.png](https://i-blog.csdnimg.cn/blog_migrate/c44ed550935cd4586df7545065124d41.png)
于是我们制定了以下的命名结构规范,并将其应用于所有组件:
文件名/页面名/框架名/组件名(变体、样式、类型和状态)- 文件名是特定库的名称,以及使用者需要在资源面板中启用哪些功能,才能在其原型设计文件中使用这些组件(即核心UI组件(Android/iOS)、核心UI组件(网页端)、核心UI颜色等)。
- 页面名称是组件的名称(即轮播页面指示器、按钮、列表元素等)。
- 框架名称是组件的顶层分组,通常是尺寸(例如按钮有4个不同的大小,我们分别做了4组框架)。
- 组件名称是主组件及其变体的名称。由于变体的数量多,使用反斜杠(/)可以将它们归入其他定义类别,如状态。即使实际上将它们放到了其他“文件夹”中,这也有助于使用者在 Instance下拉菜单中轻松地交换相似的变量,并在资源面板的文件夹结构中找到它们。
![13e8aeabfda36412ce36018f86c07a6e.png](https://i-blog.csdnimg.cn/blog_migrate/b07fba6fde073ff7a87e0e6326ac7309.png)
![8edc735fcf55133342d8d3b377c87e59.png](https://i-blog.csdnimg.cn/blog_migrate/bf82e44c553a759436d19ec214528a7e.png)
更灵活的组件
![6a5cd7b0e97c9f41119d385fbd4e072a.png](https://i-blog.csdnimg.cn/blog_migrate/0f2d69cd6452638aa973162ba5663eea.png)
![fdfd6216f06792c80759cd8e7237eaa4.png](https://i-blog.csdnimg.cn/blog_migrate/1ac609fe147b7689b5cc09fbbef9f364.png)
![028f7eecba7c7415b2bce9aaa4de5e5a.png](https://i-blog.csdnimg.cn/blog_migrate/f59678276889fb77c07c00c11855bf82.png)
![ea1c62bb29b2d77bd0e0ba38ffbafe6f.png](https://i-blog.csdnimg.cn/blog_migrate/f123bb2bc36c03f35453c16c9eee1083.png)
![0f775b00c760089dc0f5f328a2f1b3fb.png](https://i-blog.csdnimg.cn/blog_migrate/b77615d86801cdcd2d404330d121c358.png)
![8edc735fcf55133342d8d3b377c87e59.png](https://i-blog.csdnimg.cn/blog_migrate/bf82e44c553a759436d19ec214528a7e.png)
关于响应式设计
![6a5cd7b0e97c9f41119d385fbd4e072a.png](https://i-blog.csdnimg.cn/blog_migrate/0f2d69cd6452638aa973162ba5663eea.png)
![cd1f97197e73c467a1298730e6d3f472.png](https://i-blog.csdnimg.cn/blog_migrate/88318ab6f893fcc88b116830c81d3acf.png)
![d898e4c22255496ecf4c33720b44541e.png](https://i-blog.csdnimg.cn/blog_migrate/ca165bc76cde79f8f2b233357bfc55eb.png)
![8edc735fcf55133342d8d3b377c87e59.png](https://i-blog.csdnimg.cn/blog_migrate/bf82e44c553a759436d19ec214528a7e.png)
水平布局约束
![6a5cd7b0e97c9f41119d385fbd4e072a.png](https://i-blog.csdnimg.cn/blog_migrate/0f2d69cd6452638aa973162ba5663eea.png)
- Left 将图层固定在框架的左侧。
- Right 将图层固定在框架的右侧。
- Left and right 允许图层沿X轴增大或缩小。
- Center 允许图层向框架的水平中心浮动。
- Scale 允许图层按框架尺寸的百分比增大或缩小。
![b5839086c00572ded55fd72c7ddb3325.gif](https://i-blog.csdnimg.cn/blog_migrate/f62537e57f0171dfeb92c826076989a2.gif)
![6a91dca784fd2501e0dc24561a16ead1.png](https://i-blog.csdnimg.cn/blog_migrate/0ff5646e02a10806260901bfbeff1d08.png)
![8edc735fcf55133342d8d3b377c87e59.png](https://i-blog.csdnimg.cn/blog_migrate/bf82e44c553a759436d19ec214528a7e.png)
垂直布局约束
![6a5cd7b0e97c9f41119d385fbd4e072a.png](https://i-blog.csdnimg.cn/blog_migrate/0f2d69cd6452638aa973162ba5663eea.png)
- Top 将图层固定在框架的顶部。
- Bottom 将图层固定在框架的底部。
- Top and bottom 允许图层沿Y轴中心增大或缩小,
- Center 允许图层向框架的垂直中心浮动。
- Scale 允许图层按框架尺寸的百分比增大或缩小。
![50c3f3c570cd1b631b7b718f09f893a4.gif](https://i-blog.csdnimg.cn/blog_migrate/832ee542acf23515d7fb10e820789aa3.gif)
![b5756f19015f109cb51e651b0d382bdb.png](https://i-blog.csdnimg.cn/blog_migrate/2bddd9f2996d9762f1abceb72b733221.png)
![8edc735fcf55133342d8d3b377c87e59.png](https://i-blog.csdnimg.cn/blog_migrate/bf82e44c553a759436d19ec214528a7e.png)
自动宽度
![6a5cd7b0e97c9f41119d385fbd4e072a.png](https://i-blog.csdnimg.cn/blog_migrate/0f2d69cd6452638aa973162ba5663eea.png)
![8edc735fcf55133342d8d3b377c87e59.png](https://i-blog.csdnimg.cn/blog_migrate/bf82e44c553a759436d19ec214528a7e.png)
自动高度
![6a5cd7b0e97c9f41119d385fbd4e072a.png](https://i-blog.csdnimg.cn/blog_migrate/0f2d69cd6452638aa973162ba5663eea.png)
![1076ae5b0a9503b88d49444dd940b0b4.gif](https://i-blog.csdnimg.cn/blog_migrate/7d9c7ba4ac8b7fde48b008ac8054cff1.gif)
![8edc735fcf55133342d8d3b377c87e59.png](https://i-blog.csdnimg.cn/blog_migrate/bf82e44c553a759436d19ec214528a7e.png)
固定尺寸
![6a5cd7b0e97c9f41119d385fbd4e072a.png](https://i-blog.csdnimg.cn/blog_migrate/0f2d69cd6452638aa973162ba5663eea.png)
![414938d35367c9219b17fe9fadd766c0.gif](https://i-blog.csdnimg.cn/blog_migrate/20d89d01aa98839116ad91334fb84b2f.gif)
![e72040162c46475ac0cbf9e58e78239a.gif](https://i-blog.csdnimg.cn/blog_migrate/ee6eeb8852a1e2d5cb237122c0efe096.gif)
![1bfe544a61332802761642851b4eb43f.gif](https://i-blog.csdnimg.cn/blog_migrate/1bd7ed191e30ad94bf7dcf74bae802f2.gif)
![8edc735fcf55133342d8d3b377c87e59.png](https://i-blog.csdnimg.cn/blog_migrate/bf82e44c553a759436d19ec214528a7e.png)
行业诀窍
![6a5cd7b0e97c9f41119d385fbd4e072a.png](https://i-blog.csdnimg.cn/blog_migrate/0f2d69cd6452638aa973162ba5663eea.png)
- 选择具有相同Instance(实例)的所有项当需要在一个满是主要组件的页面中重命名多个内部组件时,只需导航到“编辑”菜单并选择“选择所有其他具有相同实例的所有项“。
![1b6f75f10f4c4eb67c01229d2a6845b4.png](https://i-blog.csdnimg.cn/blog_migrate/5ae67626ce8f7b007968ed61732ea563.png)
- 创建一个组件任何设计系统设计师都知道他们会一直创造新组件,直到天荒地老。这个时候我会频繁地键入 “Option + Command + K”快速创建组件。
- 重命名图层Figma的默认重命名功能非常强大。选择多个图层并键入“Command + R”将触发一个重命名图层模式,该模式具有更多的重命名选项,包括查找和替换、升序和降序数字以及当前名称的前缀或追加。
![f89892673dff52ef5970f56a930fad64.png](https://i-blog.csdnimg.cn/blog_migrate/ae93271466e03b6db14770da06ede40a.png)
- 粘贴覆盖选择的项在 Figma中,当已经选择了某个对象时,你只需键入“Shift + Command + V“ 即可完成粘贴覆盖的操作。
- 要快速放大一个图层只需双击“图层”菜单中该图层的图标
![955d7e8dc2f9aab8a41bed30e81ff5d2.png](https://i-blog.csdnimg.cn/blog_migrate/eddfa2fe8a9821927d88f09bd86ec663.png)
- 组件描述这是帮助大家交流有关组件特定细节的方法。当你将鼠标悬停在资源和代码面板中的实例上时便会显示出来。我们利用这个区域向我们的开发小伙伴传递信息。
- 忽略约束有时,你或许想暂时忽略你在组件层上设置的水平和垂直约束。做法是按住“Command”键的同时调整组件大小。如果要遵守约束,请松开“Command”键即可。
- 防止图层自动嵌套当我在画布周围移动图层时,我发现了一件令人沮丧的事情,那就是它会自动将图层放置到其他框架中。若要防止这种情况发生,请在拖动图层的同时按住空格键。
- Instance实例交换这个专业的技巧可以用来交换任何实例,我专门用它来做替换图标的动作。做法是从资源面板拖动组件时保持按住“Option”。
![6bcad5069eaa8f71094ea99cd292087b.gif](https://i-blog.csdnimg.cn/blog_migrate/d8e0a9c58d2229bf28a0aedda9e35835.gif)
![8edc735fcf55133342d8d3b377c87e59.png](https://i-blog.csdnimg.cn/blog_migrate/bf82e44c553a759436d19ec214528a7e.png)
最后
![6a5cd7b0e97c9f41119d385fbd4e072a.png](https://i-blog.csdnimg.cn/blog_migrate/0f2d69cd6452638aa973162ba5663eea.png)
当我创建Airbnb的设计组件库时,是我第一次接触设计系统。随着设计系统库被逐步完善,我学到了很多东西。由于我在一开始使用了“系统中的系统”这个概念,我能够以一种具有连贯性、保证质量和灵活性的方式将像设计系统这样复杂的东西呈现出来。这就是我如何利用Figma帮助构建Lyft设计系统的秘诀。
原作者:Jeremy D. 原文来源: https://medium.com/tap-to-dismiss/building-a-design-system-library-532ef2492811 原文作者授权:![65580b168db7f37f630ceb2dafabb4f0.png](https://i-blog.csdnimg.cn/blog_migrate/fd4592832ff0ad53894d48ee09c7c984.png)
小编:@Kerr Xu