界面设计与前端代码实现一套自适应UI

6,182 阅读7分钟
原文链接: www.yaya12.com

一、什么是自适应

名词解释:2010年,Ethan Marcotte提出了 “自适应网页设计” (Responsive Web Design)这个名词,指可以自动识别屏幕宽度、并做出相应调整的网页设计。

即达到——”一次设计,普遍适用”,让同一张网页自动适应不同大小的屏幕,根据屏幕宽度,自动调整布局(layout)。

实现效果:同样的内容,要在大小迥异的屏幕上,都呈现出满意的效果

例如:

在最初提出的自适应是为了实现跨屏展示,以避免需要为pc/平板/手机分别做3套设计和代码。

随着智能手机的发展,尺寸有小到大,分辨率有小到大,品牌繁多,尺寸繁多,因此又衍生出手机端的自适应规则——自动识别屏幕宽度,保持同样的网页设计。关于手机端的自适应,可以参考将px转化成rem—gulp postcss-px2rem

名词分析:

屏幕宽度:


手机的屏幕比较小,宽度通常在600像素以下;PC的屏幕宽度,一般都在1000像素以上(目前主流宽度是1366×768),有的还达到了2000像素。

普遍的像素大小有–百度baike.baidu.com/item/屏幕分辨率/…

屏幕比例4:3,  是最常见 屏幕比例,从电视时代流传下来的古老标准。在近代宽屏幕兴起前,绝大部分的屏幕分辨率都是照着这个比例的。  

 640×480; 800×600;1024×768;1400×1050;1600×1200; 2048×1536;

屏幕比例16:10,  就是常见的「宽屏幕」比例

 800×480;1024×600; 1280×800;1440×900;1680×1050; 1920×1200;2560×1600

屏幕比例16:9 , 主要是HD电视在用的比例。常听到的720p、1080p 都是这个比例。是一种适合视频观赏和办公操作(容纳两个文档并排处理)但对于游戏支持相对差一些(逐渐得到更多的游戏支持)的屏幕格式。

 960 x 540;1280×720;1366×768; 1920×1080;2560 x 1440

根据已有的电脑屏幕尺寸,在没有市场流通尺寸的大数据的支持下,我们无法决定在哪个像素的临界值,调整样式排版,我们可以参考实现了自适应的前端框架(流行度高,大公司手笔)进行参考!

在需要有设计效果图的时候,设计师需要根据当前项目的前端技术选型,根据不同的临界值进行相应的设计。例如element-ui,需要的设计图分别为:1200px,992px,768px时候的样式排版;如果不针对手机端,小于992px的可以不用设计

实现了自适应的前端框架:

 bootstrap  ,其栅格变化控制的像素大小为

// Small devices (landscape phones, 576px and up) @media (min-width: 576px) { ... } 
// Medium devices (tablets, 768px and up) @media (min-width: 768px) { ... } 
// Large devices (desktops, 992px and up) @media (min-width: 992px) { ... } 
// Extra large devices (large desktops, 1200px and up) @media (min-width: 1200px) { ... }

amazeUI, 其栅格变化控制的像素大小为  

尺寸 class 简写 断点区间 描述
small sm 0 – 640px 处理绝大数手机的横竖屏模式(Galaxy Note 2 的视口为 360 * 640
medium md 641px – 1024px 平板的横竖屏模式
large lg 1025px + 桌面设备

基于Vue的UI框架:ElementUI   ,其栅格变化控制的像素大小为 

xs <768px 响应式栅格数或者栅格属性对象 number/object (例如: {span: 4, offset: 4})
sm ≥768px 响应式栅格数或者栅格属性对象 number/object (例如: {span: 4, offset: 4})
md ≥992px 响应式栅格数或者栅格属性对象 number/object (例如: {span: 4, offset: 4})
lg ≥1200px 响应式栅格数或者栅格属性对象 number/object (例如: {span: 4, offset: 4})
xl ≥1920px 响应式栅格数或者栅格属性对象 number/object (例如: {span: 4, offset: 4})

基于React的UI框架:AntDesign ,其栅格变化控制的像素大小为   

xs <576px 响应式栅格,可为栅格数或一个包含其他属性的对象
sm ≥576px 响应式栅格,可为栅格数或一个包含其他属性的对象
md ≥768px 响应式栅格,可为栅格数或一个包含其他属性的对象
lg ≥992px 响应式栅格,可为栅格数或一个包含其他属性的对象
xl ≥1200px 响应式栅格,可为栅格数或一个包含其他属性的对象
xxl ≥1600px 响应式栅格,可为栅格数或一个包含其他属性的对象


二、自适应的实现

在上述的定义里面的前提——自动识别屏幕宽度

实现方法,在网页代码的头部,加入一行viewport元标签

<meta name="viewport" content="width=device-width, initial-scale=1" />

在上述的定义里面的实现效果——样式、排版布局实现相应调整

依据原理:排版设计以及长宽定义,参考百分比设置

1、不能使用绝对宽度——width:xxx px; 只能采用百分比或者auto——width: xx%; width:auto;

2、相对字体大小,em

3、流动布局——各个区块的位置都是浮动的,不是固定不变的

在需要有设计效果图的时候,设计师在排版上面,需要考虑每个模块占据的百分比例,而不能设置具体的px值。

针对需要进行块状区分的组件,可以固定其上下左右padding和margin,让其宽度auto。

如果涉及到需要px定义的地方,最好保证这个px值在各个屏幕下面保持不变。

三、一套完整的自适应UI包含的元素

1、表单——输入框,下拉框,单选,多选,日期

2、表格,分页

3、通用组件——loading,提示框,文本弹框

4、导航,菜单

5、通用动态图文排版——tab切换;下拉展示,收缩隐藏;图文混排快装样式;点击展示

6、基础通用——颜色,字体,按钮,图标

多样性设计原则:

1、在作出每个元素设计界面的同时,需要考虑它在不同屏幕下展现的样式(等比例缩放的样子);

2、针对表单类组件,还需要考虑,在输入正确、错误、选中等情况下的样子,以及文字多、少的样式,以及是否带单位的展现样式;

3、根据使用项目功能,可能继而延伸或增加的样式

四、设计注意事项

1、针对适用于手机端——界面小,排版清晰,突出内容;节省流量,元素尽量瘦身;这也是扁平化流行的背景

2、界面设计能够在不同屏幕下变化顺畅—— 尽量减少“设计元素”——不规则排版设计,大块的图片背景,大量的渐变

五、自适应设计原则

1、不增加模块,比如,本来一页中包含产品展示、新闻资讯两个模块,在小屏下,需要增加 关于我们模块

2、不更改模块内部排版样

3、模块变化仅限于等比例放大或者收缩、换排、换行、隐藏。比如,一张图片宽度永远占据屏幕的总宽度,在小屏下,图片的高度等比例缩短;一排并列4个,在小屏下,一排并列2个;设计中标题展示了一排,在小屏下面,两排展示

4、允许局部小范围模块的排版变化(通过@media针对特定的屏幕范围再写一套排版代码)

     

六、参考

自适应网页设计(Responsive Web Design)   

 bootstrap

基于Vue的UI框架:ElementUI 

基于React的UI框架:AntDesign