移动网页 viewport(视口) 像素密度

文章参考

http://www.cnblogs.com/pigtail/archive/2013/03/15/2961631.html

个人觉得viewport概念非常重要,是理解mobile 网页原理的基础(之一),文字比较多,仅仅作为理论知识储备

什么是像素密度?

像素密度(dpi: dots per inch),即每英寸屏幕所拥有的像素数,像素密度越大,显示画面细节就越丰富。

例如:

iphone3    162dpi    320px * 480px

iphone4    326dpi    640px * 960px

什么是Viewport?

手机浏览器是把页面放在一个虚拟的“窗口”(viewport)中,通常这个虚拟的“窗口”(viewport)比屏幕宽,这样就不用把每个网页挤到很小的窗口中(这样会破坏没有针对手机浏览器优化的网页的布局),用户可以通过平移和缩放来看网页的不同部分。移动版的 Safari 浏览器最新引进了 viewport 这个 meta tag,让网页开发者来控制 viewport 的大小和缩放,其他手机浏览器也基本支持。

个人理解:

1、iphone4 屏幕宽度实际上是640px,这样我可以显示实际宽度是640px的网页

2、iphone4 默认设置的viewport是980px,意思是说,在浏览器中能够显示网页的尺寸是980px,这样,iphone4在实际物理尺寸为320px宽度的情况下面可以显示980px宽度的网页,网页内容成比例的缩小了,相当于1px所显示的内容为640px/980px,也就是说文字的显示内容是缩小了。

如果传统网页宽度小于980px,并且没有设置viewport,则在手机屏幕中能够显示完全,可以通过“放大”功能显示网页。

3、<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">

width=device-width 意思是说iphone4的物理实际尺寸是320px,那么我就设置viewport的尺寸是320px,只能呈现宽度为320px网页。那么网页的内容会等比例的扩大2倍(因为iphone4的物理像素为物理屏幕1px的两倍,不同手机,这个比例是不一致的,苹果手机一般为2倍)

Viewport 基础

一个常用的针对移动网页优化过的页面的 viewport meta 标签大致如下:

<meta name=”viewport” content=”width=device-width, initial-scale=1, maximum-scale=1″>

width:控制 viewport 的大小,可以指定的一个值,如果 600,或者特殊的值,如 device-width 为设备的宽度(单位为缩放为 100% 时的 CSS 的像素)。

height:和 width 相对应,指定高度。

initial-scale:初始缩放比例,也即是当页面第一次 load 的时候缩放比例。

maximum-scale:允许用户缩放到的最大比例。

minimum-scale:允许用户缩放到的最小比例。

user-scalable:用户是否可以手动缩放

viewport并非只是ios上的独有属性,在android、winphone上同样也有viewport。它们要解决的问题是相同的,即无视设备的真实分辨率,直接通过dpi,在物理尺寸和浏览器之间重设分辨率,这个分辨率和设备的分辨率无关。比如,你拿个3.5寸-320 * 480的iphone3 gs、3.5寸-640 * 960的iphone4或者9.7寸-1024*768的ipad2,虽然设备的分辨率不同,物理尺寸也不同,但你可以通过设置viewport让它们在浏览器里有相同的分辨率。比如说,你的网站是800px宽,你可以通过设置viewport的width=800,来让你的网站在这三个不同的设备上都刚好满屏显示你的网站。

如果不显示地设置viewport,那么width的默认为980。如果页面的所有元素宽度都小于980,此时width为980,如果页面最宽的位置超过980,那么width等于最大宽度。总之,默认能将整个页面从左到右显示出来。如果设置了viewport,比如,只单纯地设置了user-scalable=no,例如<meta name="viewport" content="user-scalable=no" />,那么ios下width还是按980显示(即默认就会通过dpi缩放),但android和winphone下却不会再缩放了,浏览器分辨率和真实设置分辨率一致。

猜你喜欢

转载自hbiao68.iteye.com/blog/2305448