当咱们对移动端进行页面适配时,咱们首先应该了解到meta viewport,media query,以及动态rem。css
手机浏览器会把页面放入到一个虚拟的“视口”(viewpoint)中,但viewport又不局限于浏览器可视区域的大小,它可能比浏览器的可视区域大,也可能比浏览器的可视区域小。一般这个虚拟的“视口”(viewport)比屏幕宽,会把网页挤到一个很小的窗口。
若是不显示地设置viewport,那么浏览器就会把width默认设置为980。但后果是浏览器出现横向滚动条,由于浏览器可视区域的宽度比默认的viewport的宽度小。
而后浏览器引进了 viewport 这个 meta tag,让网页开发者来控制 viewport 的大小和缩放。css3
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!--[if lt IE 9]>
<script src="http://css3-mediaqueries-js.googlecode.com/svn/trunk/css3-mediaqueries.js"></script>
<![endif]-->
(1)layout viewport浏览器
若是把移动设备上浏览器的可视区域设为viewport的话,某些网站会由于viewport太窄而显示错乱,因此这些浏览器就默认会把viewport设为一个较宽的值,好比980px,使得即便是那些为PC浏览器设计的网站也能在移动设备浏览器上正常显示。这个浏览器默认的viewport叫作 layout viewport。layout viewport的宽度能够经过 document.documentElement.clientWidth来获取。iphone
(2)visual viewportide
layout viewport的宽度是大于浏览器可视区域的宽度的,因此还须要一个viewport来表明浏览器可视区域的大小,这个viewport叫作 visual viewport。visual viewport的宽度能够经过 document.documentElement.innerWidth来获取。svn
(3)ideal viewport网站
ideal viewport是一个能完美适配移动设备的viewport。首先,不须要缩放和横向滚动条就能正常查看网站的全部内容;其次,显示的文字、图片大小合适,如14px的文字不会由于在一个高密度像素的屏幕里显示得过小而没法看清,不管是在何种密度屏幕,何种分辨率下,显示出来的大小都差很少。这个viewport叫作 ideal viewport。google
ideal viewport并无一个固定的尺寸,不一样的设备有不一样的ideal viewport。例如,全部的iphone的ideal viewport宽度都是320px,不管它的屏幕宽度是320仍是640。idea
ideal viewport 的意义在于,不管在何种分辨率的屏幕下,针对ideal viewport 而设计的网站,不须要缩放和横向滚动条均可以完美地呈现给用户。spa