移动WEB基础知识

来源:互联网 发布:ubuntu麒麟 编辑:程序博客网 时间:2024/05/02 02:16

Web前端项目实战
移动Web篇

                 目录

目录                                                                                                                  2
µÚ1    基础知识                                                                                               3
1.1    屏幕                                                                                                   3
1.2    长度单位                                                                                           4
1.3    像素密度                                                                                           5
1.4    设备独立像素                                                                                   6
1.5    像素                                                                                                   8
µÚ2    调试工具                                                                                               9
2.1    模拟调试                                                                                           9
2.2    真机调试                                                                                         10
µÚ3    视口                                                                                                     10
3.1    PC设备                                                                                            10
3.2    移动设备                                                                                         11
3.3    移动浏览器                                                                                     13
µÚ4    屏幕适配                                                                                             13
4.1    Viewport详解                                                                                  13
4.2    控制缩放                                                                                         14
4.3    避免滚动                                                                                         14
4.4    适配方案                                                                                         15
1.1.1.    固定宽度                                                                               15
1.1.2.    百分比宽度                                                                           15
1.1.3.    rem单位                                                                                 16
1.1.4.    100%像素                                                                             16
µÚ5    媒体查询                                                                                             16
5.1    媒体类型                                                                                         17
5.2    媒体特性                                                                                         17
5.3    关键字                                                                                             17
5.4    引入方式                                                                                         18
5.5    常用特性                                                                                         18
µÚ6    网页布局                                                                                             18
6.1    布局方式                                                                                         18
6.2    响应式布局                                                                                     19
µÚ7    CSS框架                                                                                             20
7.1    Bootstrap                                                                                         20
7.2    Amaze UI                                                                                         21
  1. 基础知识

    1. 屏幕

移动设备与PC设备最大的差异在于屏幕,这主要体现在屏幕尺寸屏幕分辨率两个方面。
通常我们所指的屏幕尺,实际上指的是屏幕对角线的长度(一般用英寸来度量)如下图所示
graphic
而分辨率则一般用像素来度量,表示屏幕水平垂直方向的像素数,例如1920*1080指的是屏幕垂直方向和水平方向分别有19201080个像素点而构成,如下图所示
graphic
    1. 长度单位

Web开发中可以使用px(像素)、empt(点)、in(英寸)、cm(厘米)做为长度单位,我们最常用px(像素)做为长度单位。
我们可以将上述的几种长度单位划分成相对长度单位和绝对长度单位。
graphic
如上图所示,iPhone3G/SiPhone4/S的屏幕尺寸都为3.5英寸(in)但是屏幕分辨率却分别为480*320px960*480px,由此我们可以得出英寸是一个绝对长度单位,而像素是一个相对长度单位(像素并没有固定的长度)
    1. 像素密度

DPIDots Per Inch是印刷行业中用来表示打印机每英寸可以喷的墨汁点数,计算机显示设备从打印机中借鉴了DPI的概念,由于计算机显示设备中的最小单位不是墨汁点而是像素,所以用PPIPixels Per Inch值来表示屏幕每英寸的像素数量,我们将PPIDPI都称为像素密度,但PPI应用更广泛,DPIAndroid设备比较常见。
如下图所示,利用 勾股定理 我们可以计算得出PPI
graphic
PPI的越大位尺寸里所能容的像素数量就越多,所能展画面的品也就越精,反之就越粗糙。
Retina网膜屏幕,苹果注册的命名方式,意指具有PPI(大于320)的屏幕。
思考:在屏幕尺寸(英寸)固定时,PPI和像素大小的关系?
结论:当PPI越大,像素的实际大小就会越小,当PPI越小,像素实际大小就越大。
    1. 设备独立像素

随着技术发展,设备不断更新,出现了不同PPI的屏幕共存的状态(iPhone3G/S163iPhone4/S326),这时像素不再是统一的度量单位,会造成同样尺寸的图像在不同PPI设备上的显示大小不一样。
如下图,假设你设计了一个163*163的蓝色方块,在PPI163的屏幕上,那这个方块看起来正好就是1*1寸大小,在PPI326的屏幕上,这个方块看起来就只有0.5*0.5寸大小了。
graphic
做为用户是不会关心这些细节的,他们只是希望在不同PPI的设备上看到的图像内容差不多大小,所以这时我们需要一个新的单位这个新的单位能够保证图像内容在不同的PPI设备看上去大小应该差不多,这就是独立像素IOS设备上叫PT (Point)Android设备上叫DIP (Device independent Pixel) DP
举例说明就是iPhone 3GPPI1631dp = 1pxiPhone 4PPI3261dp = 2px
graphic
我们也不难发现,如果想要iPhone 3G/SiPhone 4/S图像内容显示一致,可以把iPhone 4/S的尺寸放大一倍(它们是一个2(@2x)的关系),即在iPhone3G/S的上尺寸为44*44px,在iPhone4/S上为88*88px,我们要想实现这样的结果可以设置44*44dp ,这时在iPhone3G/S上代表44*44px,在iPhone4/S上代表88*88px
通过上面例子我们不难发现dppx是有一个对应(比例)关系的,这个对应(比例)关系是操作系统确定并处理,通过window.devicePixelRatio可以获得该比例值。
下图展示了iPhone不同型号间dppx的比例关系
graphic
从上得知dp(或pt)和px并不绝对的倍数关系,而是window.devicePixelRatio ~= 物理像素/独立像素,然而这其中的细节我不必关心,因操作系会自帮我们处理好(保1dp在不同的设备上看上去大小差不多)。
    1. 像素

物理像素指的是屏幕渲染像的最小位,不可人为进行改,其大小决定了屏幕渲染像的品,我以上所讨论的都指的是物理像素
//获取屏幕的物理像素尺寸
window.screen.width;
window.screen.height;
//部分移动设备下获取会有错误
见代码示例1-1.html
CSS像素指的是通CSS行网布局时用到的位,其默认值(PC端)是和物理像素保持一致的(1位的CSS像素等于1位的物理像素),但是我可通缩放来改其大小。
浏览器窗口尺寸CSS像素来度量的,部分浏览器存在兼容问题(IE低版本无此属性),但是可以忽略这些细节。
//获取浏览器窗口尺寸
window.innerWidth;
window.innerHeight;
//此值大小包含滚动条的大小
见代码示例1-2.html
过调浏览器的放比例可以直的理解CSS像素与物理像素之前的对应关系,如下图所示:
graphic
我们需要理解的是物理像素和CSS像素的一个关系,1个物理像素并不总是等于一个CSS像素,通过调整浏览器缩放比例,可以有以上3种情况。
  1. 调试工具

    1. 模拟调试

现代主流浏览器均支持移动开发模拟调试,通常按F12可以调起,其使用也比较简单,可以帮我们方便快捷定位问题。
    1. 真机调试

模拟调试可以满足大部分的开发调试任务,但是由于移动设备种类繁多,环境也十分复杂,模拟调试容易出现差错,所以真机调试变的非常必要。
有两种方法可以实现真机调试:
1、将做好的网页上传至服务器或者本地搭建服务器,然后移动设备通过网络来访问。
2、借助第三方的调试工具,如weinredebuggapghostlab
真机调试必须保证移动设备同服务器间的网络是相通的。
  1. 视口

视口(viewport)是用来约束你网站中最顶级块元素<html>的,即它决定了<html>的大小
    1. PC设备

PC设备viewport的大小取决于浏览器窗口的大小,CSS像素度量单位。
//获取viewport的大小
document.documentElement.clientWidth;
document.documentElement.clientHeight;
//此值并不包含滚动条的大小,这也是与window.innerWidth/Height的差异
见代码示例3-1.html
通过以往CSS的知识,我们都能理解<html>的大小是会影响到我们的网页布局的,而viewport又决定了<html>的大小,所以viewport接的决定并影响了我的布局。
下面我们通过一个代码实例来演示PC设备viewport(浏览器窗口)是如何影响我们的网页布局的,见代码实例3-2.html
当我们调浏览器窗口4个浮的盒子示了,原因是父盒子度不足以容4个子盒子,要解决这个问题可以有两种方法:
1、可以父盒子置一个固定的度,如1280px,见代码实例3-3.html
这样可以解决盒子不行的问题,也可以保的网内容可以正常的示,但是出现了滚动条(后面会引用到)
2、我们可以调整浏览器的缩放比例,这时也可以不换行完整显示网页内容,但是发现网页内容变的非常小
总结:在PC端,我过调浏览器窗口可以改viewport的大小,了保布局不乱,需要元素设定较大固定宽度(固定网页布局),或者调整缩放比例
注:PCviewport不是一个HTML结构,所以我们不能通过CSS来改变它,只是拥有了浏览器窗口的大小而已。
分析完PC端的情况,我们再来看一下移动端会是什么情况呢?
    1. 移动设备

我们知道移动设备屏幕普遍都是比较小的,但是大部分的网站又都是为PC设备来设计的,要想让移动设备也可以正常显示网页,移动设备不得不做一些处理,通过上面的例子我们可以知道只要viewport足够大,就能保原本PC设备设计的网页也能在移动设备上正常示,移动设备厂商也的确是这样来处理的。
在移动设备上viewport不再受限于浏览器的窗口,而是允许开发人员自由设置viewport的大小,通常浏览器会设置一个默认大小的viewport,同时为了能够正常显示那些专为PC设计的网页,一般这个值的大小会大于屏幕的尺寸。
如下图为常见默认viewport大小(供参考)
 graphic
统计数我得知不同的移厂商分别置了一个默认的viewport的值大部分网页可以正常在移动设备下浏览。
下面我们通过一个小示例来验证上述结论,执行环境为iPhone5s
在示例中我们设定.box{width: 490px;}了,发现两个盒子正好一行显示,见示例代码3-5.html
设定了.box{width: 491px;},则换行显示了,见示例代码3-6.html
验证了iPhone5sviewport的默认宽为980px这样便可以保原本PC设计的网,在移端上也不会生布局的
我们再做另一个测试,见代码3-7.html
iPhone5s和部分Android中我们发现页面内容(文字、图片)被缩放了(变的非常小),而在部分安卓设备中则出现了滚动条
产生缩放和滚动条的原因是什么呢?
要解释上面的原因,需要进一步对移动设备的viewport进行分析,移动设备上有3viewport,分别是visual viewportlayout viewportideal viewport
1visual viewport(可视化视口)通俗visual viewport 就是我们视觉上可的网区域,以CSS像素做为计位,可以通下面方式取。
//获取visual viewport
window.innerWidth;
window.innerHeight;
visual viewport对于我们的实际价值并不高,由于他的计量单位是CSS像素,所以值会因缩放比例变化页发生变化。
见示例代码3-8.html
2layout viewport(布局视口)指的是我们可以进行网页布局区域的大小,同样是以CSS像素做为计量单位,可以通过下面方式获取
//获取layout viewport
document.documentElement.clientWidth;
document.documentElement.clientHeight;
ͨǰ������֪�#�����Ҫ��证为PC设计��������动设备�ϲ��ֲ����ң���动设备��Ĭ����һ������viewport����IOS980px������viewport实际ָ����layout viewport,我们也可改变这个默认值,后面将会介绍。
见示例代码3-9.html
3ideal viewport(理想视口)设备屏幕区域,以dp(或pt)做为计量单位,不同的设备具有不同大小的理想视口,其大小是不可能被改变的,通过下面方式可以获取。
//获取ideal viewport有两种情形
//新设备
window.screen.width;
window.screen.height;
//老设备
window.screen.width / window.devicePixelRatio;
window.screen.height / window.devicePixelRatio;
并不总是正确的,然而在实际开发我们一般无需获取这个值具体大小。
在理解了上述三个viewport后我们来解释为什么网页会被缩放或出现水平滚动条,其原因在于移动设备浏览器会默认设置一个layout viewport,并且这个值会大于ideal viewport,那么我们也知道ideal viewport就是屏幕区域,layout viewport是我们布局网页的区域,那么最终layout viewport最终是要显示在ideal viewport里的,而layout viewport大于ideal viewport时,于是就出现滚动条了,那么为什么有的移动设备网页内容被缩放了呢?移动设备厂商认为将网页完整显示给用户才最合理,而不该出现滚动条,所以就将layout viewport进行了缩放,使其恰好完整显示在ideal viewport(屏幕)里,其缩放比例为ideal viewport / layout viewport
    1. 移动浏览器

端开主要是针对IOSAndroid两个操作系平台的,除此之外Windows Phone
端主要可以分成三大类,系带浏览器、用内置浏览器、第三方浏览器
系统浏览器:指跟随移动设备操作系统一起安装的浏览器。
应用内置浏览器:通常在移动设备上都会安装一些APP例如QQ、微信、微博、淘宝等,这些APP里往往会内置一个浏览器,我们称这个浏览器为应用内置浏览器(也叫WebView),这个内置的浏览器一般功能比较简单,并且客户端开发人员可以更改这个浏览器的某些设置,在我们理实的开发里这个浏览器很重要。
第三方浏览器:指安装在手机的浏览器如FireFoxChrome360等等。
IOSAndroid操作系统上自带浏览器、应用内置浏览器都是基础Webkit内核的。
思考:移动端页面要达到什么效果才最合理?
  1. 屏幕适配

经过分析我们得到,移动页面最理想的状态是,避免滚动条且不被默认缩放处理,我们可以通过设置<meta name="viewport" content="">来进行控制,并改变浏览器默认的layout viewport的宽度。
    1. Viewport详解

viewport 是由苹果公司了解决移动设备浏览器渲染面而提出的解决方案,后来被其它移动设备厂商采,其使用参数如下:
//通过设置属性content=""实现,中间以逗号分隔
//例如<meta name="viewport" content="width=device-width">
width设置layout viewport宽度,其取值可为数值或者device-width
见代码示例4-1.html
height设置layout viewport高度,其取值可为数值或者device-height
见代码示例4-2.html
initital-scale设置页面的初始缩放值,为一个数字,可以带小数。
见代码示例4-3.html
maximum-scale允许用户的最大缩放值,为一个数字,可以带小数。
见代码示例4-4.html
minimum-scale允许用户的最小缩放值,为一个数字,可以带小数。
见代码示例4-5.html
user-scalable是否允许用户进行缩放,值为"no""yes"
见代码示例4-6.html
注:device-widthdevice-height实为ideal viewport的宽高。
经过测试(iPhone5s)见代码4-7.html,我们发现一些细节:
initial-scale取值范围0.25 ~ 5
maximum-scale / minimum-scale取值范围0 ~ 10
当同时设置了minimum-scaleinitial-scale时,initial-scale将失效
    1. 控制缩放

1、设置<meta name="viewport" content="initial-scale=1">��这时我们发现网页没有被浏览器设置缩放。见代码示例4-3.html
2、设置<meta name="viewport" content="width=device-width">��这时我们发现网页也没有被浏览器设设置缩放。见代码示例4-1.html
当我们设置width=device-width��也达到了initial-scale=1的效果,得知其实 initial-scale = ideal viewport / layout viewport
    虽然我们能过设置<meta name="viewport" content="">,可以控制网页的默认缩放,但是会出现滚动条。
两种方式都可以控制缩放,开发中一般同时设置width=device-widthinitial-scale=1.0(为了解决一些兼容问题)参见移动前端开发之viewport深入理解,即<meta name="viewport" content="width=device-width, initial-scale=1.0">
    1. 避免滚动

我们知道,滚动条是 layout viewport 相对于 ideal viewport 的,所以只要设置 layout viewport 小于或等于 ideal viewport,即<meta name="viewport" content="width=device-width">
经测试发现我们并没有完全的解决滚条的问题,原因在于我示例里的.box {width: 490px;}置了一个绝对造成的,要解决这个问题我们可以设置一个百分比(100%)的宽度,见代码示例4-7.html
    1. 适配方案

掌握了以上的技术细节后我们可以总结出以下几种适配方案:
      1. 固定宽度

1、设置<meta name="viewport" content="width=device-width, initial-scale=1">
2、设置内容区域大小为320px
3、设置内容区域水平居中显示
见代码示例4-11.html
关于手机尺寸(ideal viewport
graphic
更多ideal viewport参考
通过汇总对比我们知道移动设备的屏幕尺寸虽然庞杂,但有几个主要尺寸,分别为320px360px480px,这三个尺寸占了绝大部分,并且以320px最多,所以我们移动网页如果设计成320px宽,则可以保证在绝大多数设备里正常显示,此方案已经很少采用了。
      1. 百分比宽度

1、设置<meta name="viewport" content="width=device-width, initial-scale=1">
2、设置页面宽度为百分比
见代码示例京东商城
关于百分比
我们需要重新认识CSS里百分比的使用,见代码示例4-12.html
//测试下列属性设置为百分比
width       参照父元素的宽度
height            参照父元素的高度
padding   参照父元素的宽度
border      不支持百分比设置
margin     参照父元素的宽度
我们发现这种方案最容易理解,但是在设置无素大小时有非常大的局限性。
      1. rem单位

1、设置<meta name="viewport" content="width=device-width, initial-scale=1">
2.设置页面元素宽度单位为remem
注:此方案比较灵活,我们的案例将采用这种方案
关于emrem
em相对长度单位,其参照当前元素字号大小,如果当前元素未设置字号则会继承其祖先元素字号大小例如.box {font-size: 16px;}1em = 16px .box {font-size: 32px;}1em = 32px0.5em = 16px
rem相对长度单位,其参照根元素(html)字号大小例如html {font-size: 16px;}1rem = 16px html {font-size: 32px;}1rem = 32px0.5rem = 16px;  注:所有浏览器默认字号都是16px(某些安卓手机可以调置系统字号后,浏览器默认字号会受影响)
      1. 100%像素

1、设置网页宽度等于设备物理像素
2、设置初始化缩放比例(值为1 / window.devicePixelRatio
淘宝针对iPhone设备采用的这种方案
  1. 媒体查询

设备终端的多样化,直接导致了网页的运行环境变的越来越复杂,为了能够保证我们的网页可以适应多个终端,不得不专门为某些特定的设备设计不同的展示风格,要实现这个目标的前提是必须有能力了解当前网页是运行什么终端设备,通过媒体查询可以做到这一点。
    1. 媒体类型

可以通过媒体类型对不同的设备指定不同的样式,一般我们使用screen
graphic
    1. 媒体特性

graphic
    1. 关键字

1and可以将多个媒体特性连接到一起,相当于“且”的意思。
2not排除某个媒体类型,相当于“非”的意思,可以省略。
3only指定某个特定的媒体类型,可以省略。
    1. 引入方式

1link方法,见代码示例5-1.html
<link href="./5-1.css" media="only screen and (max-width: 320px)">
2@media方法(写在CSS里),见代码示例5-2.html
graphic
    1. 常用特性

1width / height 完全等于layout viewport,见代码示例5-3.html
2max-width / max-height 小于等于layout viewport,见代码示例5-4.html
3min-width / min-height 大于等于layout viewport,见代码示例5-5.html
4device-width / device-height 完全等于ideal viewport,见代码示例5-6.html
5orientation: portrait | landscape 肖像/全景模式,见代码示例5-7.html
.....还有其它
  1. 网页布局

    1. 布局方式

1、固定宽度布局:页设置一个固定的度,通常以px为长位,常PC端网
2、流式布局:为网页设置一个相对的宽度,通常以百分比做为长位。
3、栅格化布局:将网页宽度人为的划分成均等的长度,然后排版布局时则以这些均等的长度做为度量单位,通常利用百分比做为长度单位来划分成均等的长度。
4、响应式布局:通过检测设备信息,决定网页布局方式,即用户如果采用不同的设备访问同一个网页,有可能会看到不一样的内容,一般情况下是检测设备屏幕的宽度来实现。
注:以上几种布局方式并不是独立存在的,际开发过程中往往是相互合使和的。
    1. 响应式布局

Responsive design,意在实现不同屏幕分辨率的终端上浏览网页的不同展示方式。通过响应式设计能使网站在手机和平板电脑上有更好的浏览阅读体验。
graphic
如上图所示,屏幕尺寸不一样展示给用户的网页内容也不一样,我们利用媒体查询可以检测到屏幕的尺寸(主要检测宽度),并设置不同的CSS样式,就可以实现响应式的布局。
我们利用响应式布局可以满足不同尺寸的终端设备非常完美的展现网页内容,使得用户体验得到了很大的提升,但是为了实现这一目的我们不得不利用媒体查询写很多冗余的代码,使整体网页的体积变大,应用在移动设备上就会带来严重的性能问题。
响应式布局常用于企业的官网、博客、新闻资讯类型网站,这些网站以浏览内容为主,没有复杂的交互。
一般我们会对常见的设备尺寸进行划分后,再分别确定为不同的尺寸的设备设计专门的布局方式,如下图所示
graphic
以上是我们对常见的尺寸进行分类后的结果,下图是与之对应的媒体查询条件。
graphic
微金所为例我们来实现一个响应式布局。
  1. CSS框架

随着Web应用变的越来越复杂,在大量的开发过程中我们发现有许多功能模块非常相似,比如轮播图、分页、选项卡、导航栏等,开发中往往会把这些具有通用性的功能模块进行一系列封装,使之成为一个个组件应用到项目中,可以极大的节约开发成本,将这些通用的组件缩合到一起就形成了前端框架
    1. Bootstrap

简洁、直观、强悍的前端开发框架,让web开发更迅速、简单。
来自Twitter,粉丝众多,是目前最受欢迎的前端框架。
开始使用吧!
    1. Amaze UI

Amaze ~妹子UI,国人开发,后起之秀!
开始使用吧!
�� 2ҳ

传智播客 前端与移动开发学院     http://web.itcast.cn
0 0
原创粉丝点击