干货:“一套代码,三屏齐发”——响应式开发浅析

1,433 阅读7分钟

                                                   「~一套代码,三屏齐发~」

作为一个前端开发者,响应式网站开发是必备技能之一。所谓响应式开发,就是指在不同的系统,设备环境,不同的分辨率下,界面进行不同的响应和调整适配。

响应式定义

响应式布局相当于在三个终端:电脑、手机、平板(兼容多个终端),浏览统一网站,并都能完美显示,使用户体验到更加舒适的界面。

响应式网页设计(Responsiveweb design)是基于CSS3的媒介查询(MediaQuery)特性使得网页适应不同设备,即根据设备的分辨率和缩放自动重新布局。响应式设计要以“内容优先”为原则。主要目标要让网站不仅要对用户有限的视口做出响应,还要以最快的时间加载网页。


响应式的特点:

▶优点:面对不同分辨率设备灵活性强;能够快捷解决多设备显示适应问题。

▶缺点:兼容各种设备工作量大,效率低下;代码累赘,会出现隐藏无用的元素,加载时间加长。

响应式与自适应区别

响应式布局

指一个网站能够兼容多个终端,可以根据屏幕的大小自动调整页面的的展示方式以及布局,我们不用为每一个终端做一个特定的版本。

响应式网站的几个标志:

1、同时适配PC + 平板 + 手机等;

2、标签导航在接近手持终端设备时改变为经典的抽屉式导航;

3、网站的布局会根据视口来调整模块的大小和位置;

自适应布局

指网页能够在不同大小的终端设备上自行适应显示,也就是让一个网站在不同大小的设备上显示同一样的页面,让同一个页面适应不同大小屏幕,根据屏幕的大小,自动缩放。

自适应布局的几个标志:

1、大多只是适配单个终端的主流N个主流视口;

2、当视口大小低于设置的最小视口时,界面会出现显示不全,并且出现横向滑动条;

3、总体框架不变,横线布局的版块太多会有所减少。


综上所述,在开发的时候,要从实际的项目出发。

采用响应式布局:对于内容较少、主要为展示类网站。

采用自适应布局:对于内容多,布局较为复杂的情况,管理类的网站采用分开开发的方式。

布局单位

熟悉常用的布局单位还是很重要的,常用的布局单位包括像素(px),百分比(%),em,rem,vw/vh。

像素

网页布局的基础,一个像素表示计算机屏幕所能显示的最小区域。

百分比

当浏览器的宽度或者高度发生变化时,通过百分比单位可以使得浏览器中的组件的宽和高随着浏览器的变化而变化,从而实现响应式的效果。

em和rem

em和rem相对于px更具灵活性,他们都是相对长度单位,而他们之间的区别可以用一句话来概括:em相对于父元素,rem相对于根元素。em是相对于父元素的font-size,rem则是相对于html元素的font-size。

vw/vh

vw/vh是与视图窗口有关的单位,vw表示相对于视图窗口的宽度,vh表示相对于视图窗口高度,除了vw和vh外,还有vmin和vmax两个相关的单位。

响应式开发要素

上面的思维导图是我在工作过程中总结的响应式开发的要素:

1、流式布局:以百分比布局方式的弹性界面,用媒体查询来限制元素的变动范围;

2、弹性图片:根据不同设备,图片大小进行变化。img { max-width: 100%;};

3、媒体查询:根据设备的各种功能特性来设定相应的样式;

4、重置样式:用来覆盖不同浏览器渲染HTML元素时的各种默认样式;

5、视口和屏幕:(视口viewport)

视口是指浏览器窗口内的内容区域,不包含工具栏、标签栏等;

屏幕尺寸指的是设备的物理显示区域;

6、html5shiv主要解决HTML5提出的新的元素不被IE6-IE8识别;

7、使用media-queries.js或者respond.js来为IE添加Media Query支持。

响应式开发常用要点

iOS和android浏览器基于webkit核心。

▶要点一:网页代码的头部

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

viewport是网页默认的宽度和高度,网页宽度默认等于屏幕宽度(width=device-width),原始缩放比例(initial-scale=1)为1.0,即网页初始大小占屏幕面积的100%。

▶要点二:用以声明当前页面用chrome内核来渲染

<metahttp-equiv="X-UA-Compatible" content="IE=edge,chrome=1">

▶要点三:针对IE浏览器比较好的解决方案是html5shiv

html5shiv主要解决HTML5提出的新的元素不被IE6-8识别

html5shiv的使用非常的简单,考虑到IE9是支持html5

<!--[ifltIE9]><scripttype="text/javascript" src="scripts/html5shiv.min.js"></script><![endif]--> 

▶要点四:CSS3 Media Query的浏览器包括IE6-IE8等其他浏览器支持查询

IE8或者更早的浏览器并不支持MediaQuery。你可以使用media-queries.js或者respond.js来为IE添加Media Query支持。

<!--[if lt IE 9]>  
    <script src="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script>  
<![endif]-->
<!--[ifltIE9]>    
    <scripttype="text/javascript"src="scripts/respond.min.js"></script>  
<![endif]-->

▶要点五:不使用绝对宽度

网页会根据屏幕宽度调整布局

width: xx%;或者width:auto;

▶要点六:字体相对大小

字体也不能使用绝对大小(px),而只能使用相对大小(em或rem)。

▶要点七:流动布局

各个区块的位置都是浮动的,不是固定不变的。

绝对定位(position:absolute)的使用,也要非常小心。

▶要点八:选择加载CSS

"自适应网页设计"的核心,就是CSS3引入的Media Query模块。

▶要点九:CSS的@media规则

根据不同的屏幕分辨率,选择应用不同的CSS规则

▶要点十:图片的自适应

img { max-width:100%;}

老版本的IE不支持max-width,所以只好写成:img { width: 100%; }

如何测试

我们可以通过改变浏览器窗口大小就可以完成大多数测试:

1、chrome浏览器:F12 device mode 进行不同设置调试

2、firefox浏览器:开发者 响应式设计视图

在线测试工具:

http://mattkersley.com/responsive/

注意事项

1、固定像素值要少;

2、用padding,margin调整距离;

3、用百分比调整;

4、不同设备适配要考虑代码量;

5、灵活性。


设计页面尺寸

开发响应式页面需要提供三个设计稿件尺寸分别是:640px、960px、1200px。


性能优化

1、图片无损压缩:

通过http://tinypng.org/ 可以通过该网站在线让图片无损压缩

2、在线性能优化:

pagespeed是来自Google的一个工具,可以帮助你分析web页面并且告诉你如何优化来提高效率。当然,你可以作为chrome的扩展来使用。

Google官方网页载入速度检测工具PageSpeed Insights :

http://developers.google.com/speed/pagespeed/insights/

YSLOW是Firefox浏览器的扩展插件,和pagespeed类似,拥有页面评分和等级,并且会提供一些相关推荐和解决方案。


                          觉得本文对你有帮助?请分享给更多人

                         关注「前端学苑」加星标,提升前端技能