教程利用SketchLibraries建立产品组件库经验/观点

结合实际工作经验,讲讲如何建立自己产品的sketchLibraries,让设计更加规范与高效。

一、前期准备:

正所谓巧妇难为无米之炊,Libraries的建立是在已经有一批确定的设计稿的时候。我这里所谓的“确定”,指的是设计稿已经上线或已经在测试阶段的情况。因为在小公司的缘故,前端、产品经常会变更原型(做完之后因为原型变动返工的事情我已经经历了很多次了,很悲伤)或者在落地设计稿的时候出现一些变动(嗯...),当然这个因人和因公司而异。

二、建立Libraries:

我个人的习惯是把图层样式、元素和组件、文字样式(当然如果有的页面形式经常被复用,不妨多建立一个模块库)等拆开分别保存,防止搞混,因此一个app的Libraries文件(sketch文件啦)一共有四个,分别是图层样式、文字样式、元素和组件以及模块库(这个我没有做)。

首先要整理的是图层样式和文字样式。

有筒子可能会问,我之前做界面的时候,已经设定好文字样式了,而且之后建立Libraries的时候又会做组件库,所以单独做文字和图层样式有什么意义呢?

在设计app的时候,我经常头疼于不同信息层级的文字颜色色值、字号、行间距记不住,各种背景色、品牌色、阴影色值弄混等问题,后来我开始使用文字样式和图层样式以及万能的option+command+C/V去解决问题。但是当我新建一个文件,又想用之前做的app的样式而非组件的时候,不建立字体和颜色的Libraries的话就会非常麻烦,而且组件库的建立也是由文字样式、图层样式、还有一些元素(element)构成,就和房子要打地基一样,这些基础都要打好,也便于自己的房子日后从“小平房”变成别墅准备~

那么闲话少叙,我们现在开始。

(需要整理在图层样式库中的内容举例)

整理颜色样式我一般是根据上述说的内容,依次从设计稿中进行样式的复制(option+command+C/V)到作为Libraries的文件中来。为了避免最后变成杂乱无章的一堆,所以我对图层样式的摆放进行了简单的整理。

(正在整理中的图层样式)

整理完毕后就开始建立图层样式吧。我图层样式的命名规范是采用英文命名的方式,方便和同事进行交接,命名格式为:base/colors/bg(或者card、content、mask、btn、icon/颜色色值或作用)。

敲小黑板,插一句简单讲一下“/”的意思。在sketch里,“/”的作用是进行分组,或者你可以把base理解为一个文件夹,colors是base文件夹下的一个子文件夹,而bg则是在colors文件夹下的一个子文件夹,一层套一层的关系。

通常我对于黑白红品牌色等易区分且或相似颜色的图层样式的命名基本直接用色值或颜色,如base/colors/bg/#FFFFFF或base/colors/bg/white,对于代表两种状态(如按钮可点击或不可点击状态)的颜色使用颜色+状态的命名方式,如:base/colors/btn/blue/nor及base/colors/btn/blue/sel

最终建立完毕图层样式看到的是这个样子:

(图层样式整理完毕)

然后将图层样式库保存,储存在一个特定文件夹内(最好不要在建立Libraries后移动位置,也不要和设计源文件混在一起),然后设置为Libraries。

(添加到library中)

然后我们可以打开一个新文件来验证一下Libraries是否可用。

(新建一个文件实验是否可用)

(我这里尽管按钮颜色和icon中都使用了品牌蓝色,但是为了区分以及万一后期需要单独修改icon颜色,因此对icon中使用的品牌色单独建立了一个图层样式,灰色同理)

ok,没有问题,在command+N的新文件中图层样式组件库时可用的,那么就准备开始下一步吧!

然后来建立文字的Libraries。关于文字样式的设置,其实在进行设计的过程中我们就会为了便于样式的复用用而建立一些字体样式,但是可能从命名规范、样式的完整程度上并不是那么尽如人意,因此我们在这里也需要对现有的字体样式进行整理,且添加一些新的样式。

步骤还是和图层样式库的建立一致,先进行收集和整理,然后进行命名和设定文字样式。需要特别注意的是,尽管单行文字和多行文字可能字号、字重、对齐方式、颜色等一致,但是行高不同,因此在设置时我会使用两种文字样式来分别代表单行样式和多行样式。对于单行文字,根据开发的习惯,我会将line值调整为和文字大小一致。多行文字则line值一般为文字大小乘以1.2-1.5,因此这两个在建立的时候也要进行区别。

(单行文字和多行文字要在line值上有所区别)

我这边一般设计使用的字体为pingfangSC,在字体使用上不会出现区分,因此在命名的时候就不考虑字体的区分问题了,我个人命名的规则是:字体/字号/字重/对齐方式/颜色/单行(or段落),这个规则也是可以因人而异进行更改的。

拿刚才的单行和多行文字为例:

单行文字:PF/12pt/regular/left/darkgrey#999999/line12

多行文字:PF/12pt/regular/left/darkgrey#999999/line16

如果没有单行和多行的区分,则不用考虑此项(命名方式看个人习惯,我说的也只是参考,大家结合自己具体工作中遇到了什么来定就可以)。

最终,整理之后的文字样式是这个样子的

(整理完毕后的文本样式)

可以看出因为这个设计稿在我接手之前有很多设计师去做,但是没有一个标准的规范,所以每一个设计师都按照自己的习惯和感觉去进行设计,最终交到我手里时候,设计稿里各种大小颜色的字基本都有,整理的我要吐血了。诚然,现在进行统一和规范是可以的,但是不建议,因为现阶段我负责的产品已经上线,所以如果贸然进行调整容易之后再和前端交付的时候出现问题,忘记了哪里调整了,哪里没有调整,因此先按照目前的设计稿进行Libraries的建立,之后还要结合线上版本逐步进行调整和规范,总之是一个非常麻烦的工作量,难受。

然后依旧按照建立图层样式的方式,将文本样式放在固定位置并设置为Libraries,这样一个Libraries的基石就打好了,现在我们要准备继续搬砖啦~

接下来是制作元素(element)库和组件(component)库,等这两个库做出来之后,距离我们通常意义上的一个软件的所有Libraries库建立就基本完成了。

那么可能有好奇宝宝又要问了,我现在储存了常用的颜色和图层样式、也对自己用的字体进行了规范,为什么不直接一步到位来制作组件(component)库,而是还要再做一个元素库?

对此我的理解是:通常一说起组件库,我们往往想到如何同语雀插件一样,由一个模块一个模块的组件们构成。诚然,组件化能够让设计更加方便和快捷,但是相应的,我们在工作中遇到的原型、功能可能并不能完全照搬现有的组件,因此除了成型的组件外,我们还需要比组件更细致的“零件”们来构成界面与创造丰富的新的界面。因此在制作组件库(component)之前,我们还需要建立一个元素(element)库。

为什么这两个要一起说呢?因为一开始我也经常搞不清楚元素和组件以及模块的区别以及制作他们的意义。不过经过工作中的整理和不断尝试,我发现如果将组件区分的越仔细,那么组件库的拓展性越强。

好了好了,如果你觉得上面一段话宛如天书,内心中充满什么是元素库、什么是组件库、什么是模块库的黑人问号,那就先看下文,再回头来琢磨上文。

我先来说说我是如何判定什么是元素(element)、什么是组件(component)、什么是模块(module),希望能对大家的工作有所帮助,当然如果有更好的区分方法也非常欢迎斧正。

我们来用比较常见的商品卡片为例来进行说明:

这三者的关系非常像化学里的分子、原子关系,一环包含一环。所以在做这一部分的整理时,我通常是三者同时进行。

如何进行整理呢,我们依旧用商品卡片为例。

(以商品卡片为例进行说明)

我们可以看到商品卡片的样式会有有特价或热销标签的样式(显示原价)、没有特价热销标签的样式(不显示原价),商品名称为单行的样式、商品名称为两行的样式,这些要怎么进行整理呢?每一种卡片建立一个symbol?那样组件库整理出来会非常庞大,所以我的做法是这样的。

首先,通过观察我们发现,上方的两个卡片其实是下方的两张卡片的高配版本(增加了价签和划掉的原价),因此只要整理上面两张卡片的样式即可包括下面卡片的样式了。

于是我们先将这两张卡片粘贴至在元素库或者组件库文件中(目前这两个现在一个sketch文件中制作)中,然后使用之前整理的文本样式库和图层样式库对卡片中的文字和bg进行添加样式(如果在设计的时候已经使用Libraries进行规范,这一步请跳过)

(让页面由图层样式和文本样式组成)

然后我们将页面中的元素进行整理和建立元素库。在这里先说一下什么是元素(element),我认为可以放到元素库中的内容包含但不限于Icon、Btn、头像、线条、输入框、弹窗、标签、制作成symbol的文字以及其他难以单独分类的杂项(misc)等,这些在工作中遇到的时候大家根据自己的app实际情况去分析就好。继续用商品卡片去说,首先我们将元素规范命名、建立成为symbol,命名原则比较像之前的图层样式及文字样式命名原则,以卡片上方的“热”和“特”标签命名为例,我是这么进行命名的:element/tag/cardtag/hot以及element/tag/cardtag/discount

(这里注意之所以在cardtag前增加一个tag的分组是因为我的app中tag样式并不止这一种,所以为了进行快速选择和区分,多增加了一个层级)

然后就可以在选中这个tag标签的时候惊喜的发现,能够快速的进行这两个tag样式间的切换了!

(两个tag样式之间可以进行切换)

同理,我们也对页面中的占位图和商品图片,以及划去的原价文字进行建立symbol操作(为什么只有这里的文字为什么要建立symbol请往后看)。然后,我们对除了tag之外的商品卡片基础款(两种样式,商品名称一行时和商品名称两行时)分别进行symbol建立,当然卡片因为是由各种元素组成的,是一个组件,所以在命名上格式为component/card/2line(1line),在做完这一步之后,然后我们就发现当点击中卡片后,单行样式卡片和双行样式卡片可以进行切换了。

(卡片样式单双行进行切换)

同时,我们发现当选中被划掉的原价那一项时,除了更改里面数字的数值外,还能选择“none”不显示,然后该项就消失啦。

(选择none则此项不显示)

这样的商品卡片内容不正是前文中说的没有标签的“基本款样式”嘛。然后我们将商品卡片的symbol(这是一个component)和标签的symbol(这是一个element)组合为一个带标签的symbol,不过他本质还是一个商品卡片,所以在命名的时候依旧使用component来进行命名。这个时候我们的商品卡片完全可以用一个symbol来囊括所有卡片样式了。这样一个卡片的元素和组件库就算建立完成了。app中其他的部分同理用这个方式进行整理即可。最终得到的文件是一个元素和组件库混合而成的源文件。当我们打开symbol页面的时候可能会发现,所有的element和component都混在了一起,非常的混乱,怎么办呢?

(未经过整理的symbols页面)

打开symbols页面有可能是这个样子,当然如果内容特别多的话也有可能更乱这个时候给大家安利一个插件:SymbolOrganizer,使用它进行整理后,他可以自动根据你命名时候的“/”对相同层级归类的内容进行整理,最终得到的是这样的一个页面。

(使用插件整理完毕后)

(归拢好的组件库结构图)

再次感谢您的阅读~

22人已收藏

永远保持好奇心和不满足

你确定要举报【教程】利用SketchLibraries建立产品组件库?

THE END
1.Android把目录和文件设置成可读可写的ch命令res目录:存放图片、布局文件、字符串、菜单等文件。 bin目录:输出文件夹,如生成的APK文件。 project.properties:工程属性文件配置。 gen目录:系统自动生成的代码目录,存放R.java. 这个R.java文件是系统自动生成的文件,非常的重要。这个R.java默认有attr、drawable、layout、string等4个静态内部类,每个类对应一种资源。https://blog.51cto.com/u_16213610/12809433
2.为什么文件夹有Thumbs.db文件?Thumbs.db是一个用于Microsoft Windows系统缓存Windows Explorer的缩略图的文件。https://www.callmysoft.com/support/5027.html
3.Unity引擎资源管理机制介绍新资源导入后引擎会主要做什么? 当新资源导入工程中时,Unity会读取并处理添加到Assets文件夹中的任何文件,并将文件内容转换为Unity引擎可用的内部数据,而导入的源资源,引擎并不会做改动。 引擎为什么这么做? 对于大多数类型的资产(Asset),Unity需要将资产源文件中的数据转换为其可在游戏或实时应用程序中使用的格式。https://aihailan.com/archives/4218
4.AlfrescoCommunity23.2大家好,这里是小铃铛~ 以下是一篇关于Alfresco部署的经验贴分享 对于社区中不熟悉Alfresco的小伙伴,小铃铛先来介绍一下这个系统。Alfresco是企业内容管理系统,具体来说,它支持在一个大的群体中的文件管理,对于文件有CRUD、版本迭代、checkin&checkout、rendition(保留策略)、policy,对于文件夹有folder rules,对于临时组成https://blog.csdn.net/qq_61897993/article/details/144359722
5."dicts.lsp"文件详解与应用指南导读本文将详细介绍"dicts.lsp"文件的构成、功能及应用。首先,我们将概述"dicts.lsp"文件的基本概念及其在编程中的作用。接着,我们将深入探讨 本文将详细介绍"dicts.lsp"文件的构成、功能及应用。首先,我们将概述"dicts.lsp"文件的基本概念及其在编程中的作用。接着,我们将深入探讨文件的结构和语法规则,帮助读http://m.caohai.net/hlkj/202412/187982.html
6.inc文件详解十、inc文件夹什么意思 inc文件夹是指存储inc文件的文件夹,它通常在项目的根目录下,用于组织inc文件。在inc文件夹中,可以按照一定的规则对inc文件进行组织、分类,便于管理和查找。inc文件夹是一种常见的代码组织方式,能够有效提高代码复用率。 以上就是关于inc文件的详细介绍,通过引入inc文件,可以有效地提高代码复用率https://www.506064.com/n/236757.html
7.揭秘安卓手机文件夹的隐藏宝藏:轻松管理你的存储空间这款第三方文件管理器颇受欢迎,其界面设计非常人性化。文件夹分类井然有序,颜色辨识度高。与那些预装文件管理器千篇一律的白色图标不同,它让人一目了然,查找方便。 需要留意的是,第三方文件管理器或许藏有安全隐患。因为并非手机出厂时就有的,其来源可能不够可信。甚至有可能有恶意软件伪装成文件管理器。 https://www.lanmiyun.com/content/?p=5637
8.3DSMax设置项目文件夹是什么意思3d溜溜设计问答平台为广大设计师们提供各种3DSMax设置项目文件夹是什么意思问题解答,3d溜溜素材问答平台汇聚全球各地的设计师、名师名司、设计爱好者等设计灵感和经验,迅速为您解决3DSMax设置项目文件夹是什么意思的困惑。https://www.3d66.com/answers_relation/relation_1516656.html
9.安卓framework是什么意思(安卓framework文件夹)安卓framework是什么意思(安卓framework文件夹) Framework是什么? 1、framework意思是“框架,骨架;结构,构架”。Framework,英文单词,主要用作名词。短语搭配:Multimedia Framework 多媒体框架 ; 预设的多媒体框架。Regulatory framework 规章制度 ; 规管架构 ; 监管框架。https://www.eolink.com/news/post/86864.html
10.TapestryTapestry5注意:记住,如果你的布局组件包含一个资源像是一个图片或是一个样式表,你必须使用一个绝对的URL。相同的组件被用于不同文件夹里的页面,或存在不同的活动上下文里,所以相对URLs不能工作。 组件总是必须有一个java类,但在这个不重要的例子里,布局组件不需要任何逻辑: https://liuqingyu.wordpress.com/tag/tapestry-2/
11.CI框架中libraries,helpers,hooks文件夹详细说明php实例CI框架中libraries,helpers,hooks文件夹详细说明 CodeIgniter 是一个小巧但功能强大的 PHP 框架,作为一个简单而“优雅”的工具包,它可以为 PHP 程序员建立功能完善的 Web 应用程序。今天我们来看看CI框架中几个文件夹都是干什么用的 GPT4.0+Midjourney绘画+国内大模型 会员永久免费使用!https://www.jb51.net/article/50906.htm
12.idea怎么添加library假设你想要将项目目录下的lib文件夹中的所有*.jar文件添加到项目中,常规的操作步骤是这样的:首先,打开你的IDEA(IntelliJ IDEA),然后选择“File”菜单,接着点击“Project Structure”(快捷键为Ctrl + Shift + Alt + S)。在弹出的窗口中,找到“Libraries”选项,点击后会出现“New Project https://zhidao.baidu.com/question/1379368003640903819.html
13.哪里可以找到"Libraries“文件夹(NetbeansJAR)在NetBeans IDE中,可以通过以下步骤找到"Libraries"文件夹(NetBeans JAR): 1. 打开NetBeans IDE。 2. 在主菜单中,选择"File"(文件)。 https://cloud.tencent.com/developer/information/%E5%93%AA%E9%87%8C%E5%8F%AF%E4%BB%A5%E6%89%BE%E5%88%B0%22Libraries%E2%80%9C%E6%96%87%E4%BB%B6%E5%A4%B9(Netbeans%20JAR)
14.[Bug]勾选关闭文件校验后PCL仍会尝试补全Libraries,即使文件检查项 我已在 Issues 页面 和 常见&难检反馈及问题列表 中搜索,确认了这一 Bug 未被提交过。 描述 勾选关闭文件校验后 PCL 仍会尝试补全 Libraries 重现步骤 替换掉 Libraries 内的 OptiFine,PCL 依旧会尝试补全文件 日志与附件 Log1.txthttps://github.com/Hex-Dragon/PCL2/issues/3792
15.launcherwasunabletolocateitscompanionsharedlibrarylibraries是什么文件夹? JRE System Library,Java EE 5 Libraries,Referenced Libraries这三个都是各种JAR包(库文件)的集合名称,名称可以任意取,只不过这是MyEclipse默认. mc启动失败,提示loadlibrary failed with error 1114:动态链接库(DLL)初始化例程失败? https://www.shiwaiyun.com/article/post/203034.html
16.winxs文件夹是什么意思的文件夹。系统使用这个文件夹存储各个版本的Windows XP组件,减少因为动态链接库(Dynamic Link Librarieshttps://ask.zol.com.cn/x/7854467.html
17.Android技术体系结构Android开发语言与工具Android 4.2.2+Android Private Librariesjar文件 assets资源文件,图片,音频,视频等 bin二进制文件,编译过后的文件 libs第三方的jar文件,即引用第三方的代码 res也是资源文件,与assets不同,生成的文件都有ID ├drawable-hdpi高分辨率图片,我们要为不同分辨率准备不同的图片。 https://www.open-open.com/lib/view/open1386478522095.html
18.ipa文件脱壳是什么意思?要脱壳的应用程序的二进制文件。 5. 在终端中输入以下命令:`DYLD_INSERT_LIBRARIES=dumpdecrypted.dylib /var/mobile/Containers/Bundle/Application/应用程序文件夹/应用程序名称` 6. 等待一段时间,直到应用程序启动。 7. 在设备的/var/mobile/Library/Caches目录下找到脱壳后的二进制文件,将其复制到电脑中。 https://app.applebyme.cn/cloud/appshangjia/13582.html
19.SDL入门教程(一):2VisualC++下的安装与设置然后,回到VC的.\VC文件夹下,打开lib文件夹: C:\Program Files\Microsoft Visual Studio 9.0\VC\lib 将SDL Development Libraries中lib文件夹下的SDL.lib和SDLmain.lib两个文件拷贝到刚才的那个VC的lib文件夹下。 最后,把SDL Development Libraries中lib文件夹下的SDL.dll文件拷贝到 http://www.cppblog.com/lf426/archive/2008/01/31/42289.html
20.我的世界文件结构介绍文件结构介绍在国内大部分玩家都是使用游戏文件+盗版启动器的方式进行游戏,因此大家一般都能够在和启动器同一目录下找到这个文件夹,它叫“.minecraft”,这个里面包含了所有游戏相关的文件。在教程中称这个文件夹为主文件夹。 在玩家从未使用任何启动器启动游戏之前,主文件夹内只有这3个文件夹:assets、libraries 和 versions。 https://m.3dmgame.com/gl/3894256.html
21.CKS32M0官方标准库简介Libraries 文件夹下面有 CMSIS 和 CKS32F0xx_StdPeriph_Driver 两个目录,这两个目录包含固件库核心的所有子文件夹和文件。 2.2.1 CKS32F0xx_StdPeriph_Driver CKS32F0xx_StdPeriph_Driver 放的是 CKSF0xx 标准外设固件库源码文件和对应的头文件。 https://www.jianshu.com/p/9d9bc0478289
22.SketchLibraries功能图文详解Mac教程外部Libraries 想要通过Libraries实现外部共享或协作?完全没问题 –将Libraries文件存放在本地服务器、云存储或版本控制系统当中,向相关人员开放访问权限即可。 譬如你可以将Libraries文件放置在Dropbox共享文件夹里,然后你的朋友或同事将其添加到自己的Sketch Libraries当中,这样你们就可以基于同一份Library文件进行工作了;对于https://mac.wmzhe.com/article/10085.html
23.win10怎么关闭生成SystemVolumeInformation文件夹的功能》Windows 10 自带的索引服务也会从该文件夹中的IndexerVolumeGuid文件下查看当前可插拔存储设备的唯一标识符, 》以便对该设备的内容进行快速索引和查看。 》即便删除该文件夹,也会重新在插入移动设备时默认重建一个。 以上内容的意思是指: win10系统中 不可以关闭 自动生成【System Volume Information】的功能 对吗https://learn.microsoft.com/zh-cn/archive/msdn-technet-forums/087b4e71-fa7b-480c-aeec-1443a14f010f