Contents
  1. 1. 手机端开发–视口
    1. 1.1. 移动端浏览器
    2. 1.2. viewport
    3. 1.3. layout viewport&ideal viewport

手机端开发–视口

什么是视口?视口(viewport)是用来约束你网站中最顶级块元素的,即它决定了的大小。
pc视口和手机视口的区别:在于这个pc的视口受那个浏览器窗口的限制,手机的视口可以自己设置

移动端浏览器

移动端开发主要是针对IOS和Android两个操作系统平台的,除此之外还有Windows Phone。
移动端主要可以分成三大类,系统自带浏览器、应用内置浏览器、第三方浏览器
系统浏览器:指跟随移动设备操作系统一起安装的浏览器。

应用内置浏览器:通常在移动设备上都会安装一些APP例如QQ、微信、微博、淘宝等,这些APP里往往会内置一个浏览器,我们称这个浏览器为应用内置浏览器(也叫WebView),这个内置的浏览器一般功能比较简单,并且客户端开发人员可以更改这个浏览器的某些设置,在我们理实的开发里这个浏览器很重要。

第三方浏览器:指安装在手机的浏览器如FireFox、Chrome、360等等。
在IOS和Android操作系统上自带浏览器、应用内置浏览器都是基础Webkit内核的。

思考:移动端页面要达到什么效果才最合理?

viewport

我们知道移动设备屏幕普遍都是比较小的,但是大部分的网站又都是为PC设备来设计的,要想让移动设备也可以正常显示网页,移动设备不得不做一些处理,只要viewport足够大(块级元素html就会比较大),就能保证原本为PC设备设计的网页也能在移动设备上正常显示,移动设备厂商也的确是这样来处理的。

在移动设备上viewport不再受限于浏览器的窗口,而是允许开发人员自由设置viewport的大小,通常浏览器会设置一个默认大小的viewport,同时为了能够正常显示那些专为PC设计的网页,一般这个值的大小会大于屏幕的尺寸。 (这个值一般为980px)
这样的会我们网页设计的那些网页在移动端就不会错乱了。但是

在iPhone5s和部分Android中我们发现页面内容(文字、图片)被缩放了(变的非常小),而在部分安卓设备中则出现了滚动条。

layout viewport&ideal viewport

为什么呢? 要解释上面的原因,需要进一步对移动设备的viewport进行分析,移动设备上有2个viewport,分别是layout viewport和ideal viewport。

  1. layout viewport(布局视口)指的是我们可以进行网页布局区域的大小,同样是以CSS像素做为计量单位,可以通过下面方式获取 :
    code block:
    1
    2
    3
    // 获取layout viewport
    document.documentElement.clientWidth;
    document.documentElement.clientHeight;

通过前面介绍我们知道,如果要保证为PC设计的网页在移动设备上布局不发生错乱,移动设备会默认设置一个较大的viewport(如IOS为980px),这个viewport实际指的是layout viewport,我们也可改变这个默认值,后面将会介绍。

  1. ideal viewport(理想视口)设备屏幕区域,以dp(或pt、px)做为计量单位,不同的设备具有不同大小的理想视口,其大小是不可能被改变的,通过下面方式可以获取。
    1
    2
    3
    4
    5
    6
    7
    // 获取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。

Contents
  1. 1. 手机端开发–视口
    1. 1.1. 移动端浏览器
    2. 1.2. viewport
    3. 1.3. layout viewport&ideal viewport