成为UI设计高手:如何规划和创建UI设计组件库!

news2024/10/5 15:25:01

今天给大家分享一篇关于组件化设计的总结,希望可以带给大家更多设计思考。

什么是组件化

组件化化是构成界面的最基础元素和重复出现控件的集合体,也就是常说的组件库。通过对基础元素和控件的规范命名与排列组合,最终形成一个可快速调用与便捷维护的组件库。组件库能够避免在相同场景下重复造新样式的问题,增强产品统一性。与设计规范文档不同,组件库是项目中庞大的基础元素集合,是保证产品统一性的基础。而设计规范文档是对产品设计的指导规则。

⬇⬇⬇点击获取更多设计资源

https://js.design/community?category=design&source=bky&plan=bbqbky772

组件库的价值

组件库作为设计系统的一部分,在产品设计过程中可方便设计师对基础元素快速调用与组合,从而搭建出规范化的新功能页面。在产品设计中组件库的价值体现在这三个维度:

统一性

多人协作时,能够保证在相同场景下的设计元素的高度统一,避免重复造新样式的问题,也能够降低开发人员的时间成本,提升开发效率。而针对不同的业务形态和业务场景可以在组件库的基础上结合业务特性去做差异化设计,从而给用户带来一致体验和品牌感知。

高效性

在产品设计的过程中会有许多页面或模块会使用到相同的元素和组件,此时,通过组件库可以快速调用所需要的设计元素和组件,减少重复设计的时间。通过组件库能够实现修改即更新的快速同步,并且所有应用该设计元素和组件的页面也都会同步得到更新。搭建新页面也能够通过组件库快速完成,从而提升设计师的工作效率。 对于产研来说组件库的存在同样能提升他们的工作效率,产品经理可以通过组件库衍生出来的元件库快速搭建高质量产品原型,减少低效绘制工作。研发人员可以通过对组件库的封装,在产品中全局调用,避免重复开发,提升工作效率。

延续与协同

在业务不断发展的同时,组件库也能够伴随业务的发展不断优化和完善,从而满足业务需求和不同场景下的页面内容支持。并且即使团队有成员离开或者加入,也能够通过已有组件库快速投入正常工作的状态。

原子设计理论

什么是原子设计理论

原子理论最早是由国外工程师 Brad Frost 提出的,他从化学元素周期表中得到启发,原子是最小的物体构成部分,原子组合构成分子,分子组合构成有机物。 在2013年 Brad Frost 将这个概念应用在界面设计中,逐步形成了一套设计方法论(原子理论)。在设计领域中原子指的是构成界面的最小颗粒度的组成元素,这种逐层递增组织构建的思路作为构建组件库的理论指导。原子设计是一种思维模式,通过这种理论让设计师对界面的组成结构有更为清晰的认识。

原子理论包含5个层面:原子、分子、组织、模块、页面。

原子

在界面设计中原子是构成界面的最小颗粒度元素,是不可再分割的最小单位,例如:文字、颜色、图标等等。

分子

分子由原子排列组合构成,映射在界面设计中表现为常见的UI组件,例如:按钮、微标、复选框等由少量不可拆分的基础元素构成。

组织

组织是由原子和分子组成的一个相对复杂的集合体,在界面中体现为相对复杂的UI组件,例如:导航栏、标签栏、弹窗等由较多不可拆分的基础元素组成。

模块

模块是由原子、分子和组织构成,模版可以理解为没有内容填充的产品基础框架图,也就是产品原型图。

页面

页面是在模版的基础上对已有框架的细节补充与优化,也就是视觉效果设计,最终形成完整的页面。例如:产品首页、二级页面等等。

如何搭建组件库

依据原子设计理论所提供的设计思路,我们可以将构成界面并贯穿始终的最基础元素剥离出来,例如:文字、图标、颜色。这些基础元素在整个设计体系中都会被应用到,是搭建界面的基石。 为了便于后续的组件调用,在组件搭建时要特别注意组件的命名规则,一般以总分的形式对其命名,例如:左侧勾选/选择/禁用,这样就能一目了然的知道组件的状态,并便于后期的维护与调用。

文字样式

首先通过对产品中已经使用或可能使用到的文字样式进行统计,包括字重、行高和字号大小等信息,为了方便后续查看可以将这些信息全部罗列出来。

接下来通过选择需要创建样式的文本图层,点击右侧面板中的创建样式按钮,并进行重命名,因为一级文字包含2种不同的自重,所以可以利用“/”进行内容细分,例如:“一级文字/加粗”,全部创建好之后在右侧面板中就可以看到文本样式的列表展示内容了。

颜色样式

颜色样式同上述方式一样,罗列出在产品中使用的颜色,并对其进行分类和命名。

图标控件

图标控件的制作可以批量生成也可以单独生成,为了让图标在查阅时更加规整,我们可以使用栅格布局对图标进行有序排列,可以按照功能属性排列,也可以按照你喜欢的方式排列。

组件

组件作为基础元素组合的容器,需要适配不同的设计尺寸,以减少复杂又重复的工作量,此时,就需要我们对组件进行自适应布局。

组件库管理

组件库搭建完成后,接下来就是对组件库的维护与团队成员之间的使用,在这个过程中会不断的有新的业务需求产生新的组件和页面,我们可以从产品一致性的符合程度、拓展性和复用率等方面来考量组件是否要加入已有组件库中,以及作为是否剔除已有组件的准则。

最后

通过构建组件库,不仅提升了设计师的工作效率,产研的效率也得到了显著的提升。并且让设计产出有了统一的对外输出标准,也就是上面所说的统一性、高效性、延续与协同。同时设计师也能有更多的精力去专注体验与细节的深耕。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/783521.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

每日一题——地下迷宫(迷宫问题II)

迷宫问题(地下迷宫)——II 题目链接 前言: 这题是在昨天迷宫问题——I的基础上进行的变形,因此,如果昨天的题目没看或者对迷宫问题不怎么了解,建议先看看昨天的解析。 迷宫问题——I源代码: …

安装redis,适配阿里云服务器,Liunx安装redis

下载redis以及编译安装 下载redis文件 wget http://download.redis.io/releases/redis-6.0.8.tar.gz #下载redis压缩文件 tar xzf redis-6.0.8.tar.gz #解压缩 cd redis-6.0.8 make 查看是否安装了gcc编译输入gcc --version如果没有…

AtcoderABC236场

A - chukodaiA - chukodai 题目大意 题目要求交换字符串S中第a个字符和第b个字符的位置,并输出结果。 思路分析 借用临时变量t,进行记录交换。 时间复杂度 O(∣S∣) 输出交换后的字符串的时间复杂度为O(∣S∣),其中∣S∣表示字符串SS的…

autohotkey实战:窗口透明化

文章目录 实现方法代码讲解WinGet和WinSet 注 本文采用的是V1版本语法 实现方法 窗口透明不仅实用性强,关键是非常炫酷,如果用AHK实现一个实时调节窗口透明度的工具,那么就可以一边敲代码,一边透过半透明的IDE,愉快地…

vue 3.0 如何实现 文本框只能输入数字 避免文字和符号

<input v-model.number"form.payTime" :min"0" type"number" οninput"valuevalue.replace(/[^0-9.]/g,)" type"text" /> v-model 后面的.numer 一定要加上不然没效果 οninput"valuevalue.replace(/[^0-9.]/g…

Pdb蛋白质数据库网址!+30蛋白质数据库网站!

蛋白质数据库是指专门存储蛋白质相关信息的数据库。它们收集、整理和存储大量的蛋白质数据&#xff0c;包括蛋白质序列、结构、功能、互作关系、表达模式、疾病关联等信息。蛋白质数据库提供了对这些数据的检索、查询和分析功能&#xff0c;为科学研究人员、生物信息学家和药物…

为什么deferred probe将设备挂入延迟链表而不是将驱动挂入延迟链表

1. 代码流程(drivers/base/dd.c) 可以看到在probe失败的时候(驱动返回-EPROBE_DEFER)是把设备挂到deferred_probe_pending_list上面的。 这就带来了一个疑问: 我当前明明是驱动加载的过程(driver_attach()->bus_for_each_dev()), 为什么要将设备挂到pending list上面而不是…

Maven高级(继承与聚合+私服)

分模块设计和开发 为什么要分模块设计&#xff1f; 一个项目往往是分为好几个模块的 如果不同模块全写在一个项目里面 所有的程序员都要调用这有个项目就难以维护 比如我们之前设计的板块 就不太合理&#xff0c;现在我们把实体类和对应的工具类单独开出两个maven模块存储 然…

安装openai和简单使用

Anaconda的界面创建open ai环境&#xff0c;选择python10 控制台 #或者 conda info -e 注意不是anaconda命令开头 (base) C:\Users\su>conda env list # conda environments: # base * F:\anaconda3 openai F:\anaconda3\envs\opena…

TCP的拥塞控制、提高网络利用率的方法【TCP原理(笔记四)】

文章目录 拥塞控制慢启动 提高网络利用率的规范Nagle算法延迟确认应答捎带应答 拥塞控制 有了TCP的窗口控制&#xff0c;收发主机之间即使不再以一个数据段为单位发送确认应答&#xff0c;也能够连续发送大量数据包。然而&#xff0c;如果在通信刚开始时就发送大量数据&#x…

新能源汽车交流充电桩CP信号详解

随着新能源汽车的推广&#xff0c;交流充电桩迎来了巨大的市场需求&#xff0c;人们对车辆充电的便利性、安全性有着越来越高的要求。CP信号主要用于交流充电桩&#xff0c;充电桩和汽车之间只能通过CP信号进行通讯&#xff0c;判断、控制充电电流和状态。 汽车充电桩CP信号…

QT之自定义表格控件

继承QWidget来绘制的一款自定义控件&#xff0c;设计原因是因为Qt自带的QTableWidget的大批量操作很卡&#xff0c;特别是在嵌入式设备上时。 该控件特色功能&#xff1a; 1、支持拖动自适应。 2、支持各种颜色&#xff0c;字体&#xff0c;行列数设置。 代码如下&#xff1a; …

win10安装cuda11.4及cudnn

查看nvidia驱动版本 在windows终端键入nvidia-smi&#xff0c;查看nvidia显卡驱动。显卡驱动的版本决定了CUDA的版本下限。 如果出现上述的问题&#xff0c;则终端进入C:\Program Files\NVIDIA Corporation\NVSMI文件夹内&#xff0c;再键入nvidia-smi&#xff0c;可以看到我…

[MySQL]MySQL视图特性

[MySQL]MySQL视图特性 文章目录 [MySQL]MySQL视图特性1. 视图的概念2. 视图的基本操作创建视图删除视图 3. 视图规则和限制 1. 视图的概念 视图是一个虚拟表&#xff0c;其内容由查询定义&#xff0c;同真实的表一样&#xff0c;视图包含一系列带有名称的列和行数据。基表是对…

Git标签管理(对版本打标签,起别名)

tag 理解标签创建标签git tag [name]git show [tagname] 操作标签删除标签git tag -d < tagname > 推送某个标签到远程git push origin < tagname > 理解标签 标签 tag &#xff0c;可以简单的理解为是对某次 commit 的⼀个标识&#xff0c;相当于起了⼀个别名。 …

数据库备份mysqldump、mydumper、xtrabackup

数据库备份&#xff0c;数据库为school&#xff0c;素材如下 1.创建student和score表 CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR(20) NOT NULL , sex VARCHAR(4) , birth YEAR, department VARCHAR(20) , address VARCHAR(50) );创建sco…

《面试1v1》如何提高远程用户的吞吐量

&#x1f345; 作者简介&#xff1a;王哥&#xff0c;CSDN2022博客总榜Top100&#x1f3c6;、博客专家&#x1f4aa; &#x1f345; 技术交流&#xff1a;定期更新Java硬核干货&#xff0c;不定期送书活动 &#x1f345; 王哥多年工作总结&#xff1a;Java学习路线总结&#xf…

FPGA配置文件从串并模式下载

FPGA配置文件的下载模式有5种&#xff1a; 主串模式&#xff08;master serial&#xff09;从串模式&#xff08;slave serial&#xff09;主并模式&#xff08;master selectMAP&#xff09;从并模式&#xff08;slave selectMAP&#xff09;JTAG模式 其中&#xff0c;JTAG模…

SQL 常见函数整理 _ SOUNDEX() 和 DIFFERENCE()

SOUNDEX() 1. 用法 是一种针对字符串进行音似匹配的函数。它将一个字符串作为输入&#xff0c;并返回一个代表该字符串音似编码的字符串。此编码可用于比较和匹配具有相似发音的字符串。 2. 基本语法 SOUNDEX(expression)其中&#xff0c;expression 是要进行音似编码的字符串…

后端排序优化——谁调用,谁排序

前言 为了使排序更加灵活&#xff0c;建议后端排序可以优化为“谁调用谁排序”。 代码实现 数据库设计 以学生表为例。 前端查询条件为姓名&#xff0c;住址。 Controller 简化后的controller层代码如下&#xff1a; /*** queryStudent[查询学生]* param name 姓名* param …