【青训营】- 给开发看的UI设计

907 阅读12分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动

本文同时参与掘力星计划,赢取创作大礼包,挑战创作激励金

背景

前端为何要学习基本的UI设计原则和实践套路?

做好作品

入行前端的同学,有不少是被其所见即所得的开发体验所吸引此外,就是能够开发一款自己有用、爱用的反方出来,并分享给其他人使用。

现在市面上,已经足够多的课程,能够让前端以全栈的姿态独立开发一款能用的产品出来。但当页面模块变得复杂起来时,仅仅依赖一些UI组件库,已经不能让产品维持在好用的状态。追求极致的全栈定义,或许应当包含设计的角色。

没有专业UI来帮你

你的团队里可能会有UI角色,但不一定专业,UI给出的设计稿,许多时候只是静态的、仅见某一交互切面的;

很多交互体验细节,只有在前端摆弄一个Button的位置和多场景状态时,才能被捕捉到。

在大厂里,许多B端产品时没有专职UI的角色的;前端可能要对产品最终呈现出的形态负责。

功能导向

设计中最重要的事

我们先不介绍什么设计原则。又或许这才是最重要的设计原则,那就是:把功能做好。 QQ截图20210929165034.png

简约设计

有了功能基础,就可以画原型了。在我们开始介绍设计原则之前,有几个简单的技巧可以帮助你快速开始 QQ截图20210929165201.png 用简单的创作工具

像纸、笔,或者excalidraw.com/这样可以立刻上手的工具最好。

糙—点设计笔触可以让你不会过于追求完美,或者说是过于追求设计。 迅速把框架搭好了,设计细节可以后面再补充。说白了,功能优先始终贯穿在设计&开发流程中。

你可以使用如 figma之类的更专业的原型设计工具。但作为开发,建议先使用最基本的笔触和组件,克制使用颜色

设计简单的、完整的功能

说白了,就是先以MVP版本功能,来作为设计目标。

  • MVP :Minimum Viable Product,最简化可实行产品 QQ截图20210929165836.png

  • 一个联系人列表,是否要考虑超过2000人的展示情况?如何优化交互?

  • 数据不存在时,根据不同的错误情况,应该如何准备错误信息展示,和用户引导?

  • 一个图片上传模块,其复制粘贴、拖拽、

  • 点击选择文件上传,这些路径是否MVP版本都要做,是否都要先做好布局和引导设计? 在开局期间,时刻提醒自己,优先把用户关键路径上的主流场景设计完成,迅速迭代能力。

先让游戏开始。

设计原则

层级

层级可能是你唯一需要关心的原则

如果要从唯二变成唯一,那么层级区分,就是你最需要掌握的原则和技巧。

  • 一个产品要好用,就要让用户很容易地,抓产品重点。

  • 在重点里,用户能自在地进入沉浸式阅读、和使用的状态;

  • 当用户想探索其他内容时,ta能轻松地识别网站的次要板块还有哪些,焦点能迅速转移,并迅速沉浸;

  • 辅助提示信息,精确而又不会打扰各主要模块的呈现。

层级——你可能唯一需要关心的原则

哪张图片展示了更好的阅读体验? QQ截图20210929171011.png

一致性

一致性指的是:用户在站点的各个角落,观察到颜色、间距、阴影、位置、字体和字重的运用,都在一套有限的框架里,—套能迅速建立亲切感的框架内。 QQ截图20210929171204.png 以飞书文档为例

当页面中,主要的交互、视觉元素都采用同一主题色(图中为蓝色)来表示时,用户可以迅速知道:

  • 页面中有哪些元素是可交互的

  • 我需要的提示信息在哪

比如这张图,表单中label和输入框之间、以及输入项之间有序且固定的间距,可以帮助用户迅速识别当前填写的表单项是什么内容、以及稳定地将视线移动到下一个表单项上。 QQ截图20210929171454.png 能否克制,且重复、精确地运用着拟定好的设计体系,会在方方面面上影响着一个站点的质感,也是体现专业性的考量。

  • 随意地配置间距VS克制地运用间距体系 QQ截图20210929171616.png

《写给大家看的设计书》

这里补充提一本书,《写给大家看的设计书》,应该是不少人的设计启蒙书。这里简单介绍下《写给大家看的设计书》

四原则:

  • 对比︰如果两个元素内涵不同,请让它们截然不同

  • 重复:设计的视觉要素应当在整个作品中重复出现

  • 亲密性∶彼此关联的元素应当靠近放置在一起

  • 对齐∶任何元素都不能随意安放,应当总与另外至少一个元素有视觉上的关联 QQ截图20210929172338.png

  • 层级,就是亲密性+对比的目标。让用户抓重点、切视线,又快又稳。

  • 一致性,就是对齐+重复,克制用户视线所感受的尺度,迅速与网站设计语言建立熟悉感。

设计体系

布局

居中放

先介绍一个最基本的布局技巧,那就是:内容居中放。

如果你是遵循「功能导向」,边开发基础能力边设计迭代的开发过程,那么前期你的功能应当是比较简单的。单列式的居中布局,应该能满足你的需求。 QQ截图20210929165034.png 很多场景下,居中放也是很有意义的。除非大屏浏览是你的核心场景,不然一般来说,你的内容宽度应该在600 ~ 800px之间,类似一-本书的宽度。 QQ截图20210929172657.png

多列布局

  • 多列布局的核心也是保持内容的一个合适宽度,维持可读性。

  • 一般规则是:主要内容列弹性收缩(可以有最小宽度) ;次要列固定宽度 QQ截图20210929172810.png

间距

保证元素间有基本的间距,是最基本的设计技巧。 QQ截图20210929173133.png

选项

我们基于4px的倍数,设计了十数种间距选项 QQ截图20210929173227.png 关于设计选项的说明

  • 设计体系,除了满足一致性原则,另外也是帮设计者提前设计好选项。

  • 有了这些选项,我们在具体场景中可以逐个尝试,来试出最优解。

  • 比起每次都拍脑门决策,在选项里调优能大大加快设计的步伐。 QQ截图20210929173412.png

观察这十数种间距选项,我们可以发现这是一个类似指数增长的图表。这是因为两个相邻间距,在大尺度上,要比小尺度里拉的更开,才能在视线里体现出间距差距。

小尺度里,4px 的差距就是20%的增幅;右图500px的尺度中,20px 的增长只有提升4%的 QQ截图20210929173553.png

多些留白

这是一个间距设计技巧

  • 安排元素时建议先大大的留空,也就是从松到紧来调试间距。 QQ截图20210929174156.png

由紧到松

这图是由紧到松,你的思维是尝试把无关的元素拉开,而且是从整体到局部的方向,不好操作 QQ截图20210929174348.png 举个例子

你想先拉开每个段落间距10px,再调段落内标题与内容的间距4px,但发现拉的不够开,这时要回过头将段落间间距拉到20px,这样段落内才好安排10px的间距;

由松到紧

这就简单一些:关注的是哪些元素相关,把它们拉在一起,然后是从局部到整体调优。

一般来说,偏松也比偏紧好。从一开始就留些空间吧。 QQ截图20210929174802.png

表达关联关系

除了方便阅读,间距也是最合适表达关联关系的工具。 图中的间距差异设计,表明了每个章节的起点,以及标题与段落的关联性。 QQ截图20210929174912.png 暧昧的行高和列表项间距,会让用户难以判断阅读时的停顿点在哪,当前列表项是否已结束。

间距是远比色块、边框、分界线之类的更适合用来表达关联关系的工具。值得多加练习运用。 QQ截图20210929175007.png

文字

文本是站点的主要内容载体;字体设计自然也是重中之重。

既然我们在讲设计体系,以一致性为目标。同样地,我们要把站点所使用的字号、字重等范围框定在十数个选项中。

十数个是个magic number,大部分情况下应该都能满足。只要场景够特殊,特殊字体完全可以再加。

选项设计

相比于间距设计,字号大小我们有一个明显的适合阅读的字号范围,如12 ~ 20px。那么我们会更多在这个范围内设置字体选项。 QQ截图20210929175308.png 仅通过字号来设置层级,很快就会捉襟见肘。结合字重&颜色(灰度),你会更游刃有余。

字重(字体加粗)是css自带的,用好常用的3、4个尺度就好 QQ截图20210929175507.png

QQ截图20210929175514.png

对齐

不同字号大小的字体间如何对齐呢?基于baseline 对齐,就是文本的下边缘。

baseline是一个字符的重心;重心对齐了,用户在移动视线时就能有平稳的阅读体验。

行高

基本所有的文本设计意图都是为了保持良好的阅读体验,行高也不例外。

具体到设计哲学,就是:

  • 行高和字号大小大致成反比,目标是用户在视线换行时有稳定的下移体验。 QQ截图20210929224114.png

色彩

颜色选项——灰色

选择的色彩库应该有 10 种左右的灰色供你选择。从文字到背景都用得着。 QQ截图20210930095222.png QQ截图20210930095133.png

颜色选项——主题色

大部分站点都少不了一两个贯穿全局的主题 色;它出现在按钮、logo、背景、各种修饰 元素之上,是品牌的记忆元素。 QQ截图20210930095753.png QQ截图20210930095436.png

颜色选项——功能色

有一些常见的颜色,被广泛地用来表达某些固定的语义信息。

  • 红色,传达错误信息,或提示危险操作。

  • 黄色,表示警告。

  • 绿色,表示一些积极的变化,以示成功或增长的信息。 QQ截图20210930095643.png QQ截图20210930095901.png QQ截图20210930095910.png

使用色盘

准备好颜色这么多由深到浅的变种,如何使用呢?刚刚提过的一种,是作为前景和背景色。

  • 主要标题可以用最亮的白色;

  • 次要标题挑一个背景颜色的浅色版本。 QQ截图20210930100146.png 使用浅色背景深色前景。浅色色块相较于白色背景对比度不大,适合不用过于抢夺眼球的场景。如下图所示: QQ截图20210930100333.png QQ截图20210930100343.png 使用颜色的注意事项

  • 颜色虽好,使用不当容易打破页面层级平衡。 QQ截图20210930101004.png

  • 色盲用户消费不了颜色;

  • 颜色在不同文化种可能表示不同的含义。 QQ截图20210930101117.png

深度

  • 制造深度的技巧,八成与阴影设计有关。

  • 深度补充了间距,从另一个维度上体现了层级。 这是为什么?

这种深度的感官来自日常生活。

平时我们是怎么感受平面上的深度的?

答案是:自上而下的光照打 。在平面上所造成的阴影。模拟这个现象,我们便可以实现网页元素的深度体验。 QQ截图20210930101641.png

阴影选项

QQ截图20210930102047.png

  • 小的阴影可以使元素略微突出,但不至于抢夺眼球。

  • 中等阴影适用于小型弹出的模块,如下拉框。

  • 最深的阴影则用于彻底地将模块与页面区分开来的场景。 QQ截图20210930102139.png

实用技巧

图片上的层级

图片上的色块斑驳不一,难以找到合适的前景色。怎么办? QQ截图20210930102418.png

  • 增加蒙层。对比度就上来了 QQ截图20210930102526.png
  • 可以给文字加上阴影。CSS可以让你轻松做到,只增加文字部分的对比度,而不影响整张图片。 QQ截图20210930102542.png

明晰的用户头像

这里也包含任何由用户上传图片的场景。如何在任何情况下都能清晰地展示内容会是个问题。 QQ截图20210930103653.png

内阴影

加个border呢,差强人意,不一定能搭配好。

有个好方法是,加点内阴影。相当于圈用户头像的外层做边框。非常精巧了。 QQ截图20210930104451.png

干掉分界线

边框、分界线,这些用着有股table 味儿,有点土。 QQ截图20210930104813.png 阴影可以替代边框;不同的背景色块也可以。

间距清晰的话,也就不需要分界线了。 QQ截图20210930104913.png

资源

PPT涵盖了这篇译作里大部分的设计技巧。想深入了解的同学可以进一步观看

给开发看的UI设计.语雀

书籍推荐

写给大家看的设计书(第4版)(豆瓣) 

tailwind的utility class设计深度实践了本文所讲的设计体系

taildinwcss设计框架,官网里面还有很多设计资源。

Refactoring Ul,来自tailwind 作者的著作,本文的基础。

结语

  • 如以上有错误的地方,请在评论区中指出,谢谢!

小可爱们看完点个赞再走一走~~