像素和viewport的理解

物理像素、css像素

物理像素:屏幕中,实际上用来显示图像的像素,客观存在的。css

css像素:浏览器使用的抽象单位, 主要用来在网页上绘制内容。html

如今的手机屏幕有各类不一样的分辨率,例如iphone5(1136x640)、iphone6(1344x750)、Samsung Galaxy S4(1920x1080)。物理像素值相同的元素在各个屏幕上的显示就会有很大的差别。浏览器

下图是宽高尺寸相同、分辨率为2X2和4X4的屏幕。绿色为物理像素分布,红色矩形为1物理像素的元素。能够发如今低分辨率下,红色矩形面积比较大。iphone

      

若是css像素和物理像素等价,即1css像素=1物理像素,则<div style="width=1px;height=1px"><div>的显示状况会如上图,这样是不可取的。为了解决这种问题,设备独立像素产生了。网站

设备独立像素

各类屏幕中,它的宽或高包含某种像素的数目都相等。则绘制页面内容时,以这种像素为基础单位,各类屏幕的显示效果是否是都一致了。scala

这种神奇的像素就是设备独立像素,是抽象的,实际上不存在。htm

 

              ,         blog

前两图:分辨率为2X2的屏幕的物理像素和设备独立像素分布。后两图:分辨率为4X4的屏幕的物理像素和设备独立像素分布。绿色为物理像素,橙色为设备独立像素。ip

两个屏幕的宽或高,拥有相等独立像素数目的前提下,即便物理像素数目不一样,1x1独立像素表示的面积是同样的。it

可知物理像素和设备独立像素的关系:物理像素=设备独立像素x设备像素比   或     设备像素比=物理像素/设备独立像素

手机类型 分辨率 物理像素 设备像素比 设备独立像素
例1 2x2 2x2 1 2x2
例2 4x4 4x4 2 2x2
         
         

 

 

 

 

 

通常状况下,设备独立像素是针对屏幕的宽来讲的。目前大部分手机屏幕宽的独立像素数目为320左右。

 
手机类型 分辨率 宽的物理像素 宽的设备像素比 宽的设备独立像素值
iphone5 1136x640 640 2 320
iphone6 1344x750 750 2 375
iphone4 960x640 640 2 320
         

 

 

 

 

 

 

1单位设备独立像素在各屏幕显示效果够差很少,由于各屏幕(大部分手机)的宽都是320的独立像素。

那是否是1css像素等于1独立像素呢?这样,<div style="width=1px;height=1px"><div>就能适应各类分辨率了。

其实不是!!设备独立像素数目=css像素数目x页面缩放比例。

页面缩放比例都为100%时,可知1css像素等于1独立像素,即1px=1dip。用户对页面进行缩放时,页面缩放比例在变化,单位css像素表示的独立像素的数目也在变化。

缩放比例是怎么计算和产生的呢,这样不得不提viewport了。

viewport

viewport是虚拟窗口,用于放置页面。viewport能够比屏幕的可见区域大。

 

在html页面中添加元信息能够设置viewport的初始大小,大小的单位为独立像素。例如:

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">

该meta标签的做用是让当前viewport的宽度等于设备的宽度(也能够填数值),同时不容许用户手动缩放。也许允不容许用户缩放不一样的网站有不一样的要求。若是不对viewport进行设置,就会给予一个默认值,通常是980,可是不必定。

页面缩放时就是在调整viewport的区域大小,页面缩放比例=调整前区域大小/调整后区域大小。区域里面的页面内容也会跟着缩放,这时每单位css像素对应的设备独立像素数目也在变化。

总结

物理像素数目=设备独立像素数目x设备像素比

      =(css像素数目x页面缩放比例)x设备像素比

      =(css像素数目x(viewport调整前区域/调整后区域))x设备像素比

相关文章
相关标签/搜索