webApp——媒体查询

1.屏幕方向

竖屏
@media screen and (orientation:portrait)
横屏
@media screen and (orientation:landscape)

2.像素,分辨率

@media screen and (-webkit-min-device-pixel-ratio:2)

(1) CSS pixels与device pixels
CSS pixels: 浏览器使用的抽象单位, 主要用来在网页上绘制内容。
device pixels: 显示屏幕的的最小物理单位,每个dp包含自己的颜色、亮度。

等值的 CSS pixels在手机屏幕上占多大的位置,这不是固定的,这取决于很多属性。经过分析和总结,我们可以得出这么一条公式: 1 CSS pixels = (devicePixelRatio)^2 device pixels (^2是平方的意思,至于 devicePixelRatio是什么东西,后面会讲解) 。

(2) PPI/DPI
PPI,有时也叫DPI,所表示的是每英寸所拥有的像素(pixel)数目,数值越高,即代表显示屏能够以越高的密度显示图像。(注:这里的像素, 指的是device pixels。)搞清楚了PPI是什么意思,我们就能很容易理解PPI的计算方式了,我们需要首先算出手机屏幕的对角线等效像素,然后处以对角线(我们平 常所说的手机屏幕尺寸就是说的手机屏幕对角线的长度),就可以得到PPI了。准确的计算公示大家可以参照下图。比较有意思的是,根据公式计算出来的 iPhone 4的PPI为330,要比苹果官方公布的326要高一点点。
这里写图片描述

(3) 密度决定比例
这里写图片描述
由上图可知,PPI在120-160之间的手机被归为低密度手机,160-240被归为中密度,240-320被归为高密度,320以上被归为超高密度(Apple给了它一个上流的名字——retina)。

这些密度对应着一个特定的缩放比例值,拿我们最熟悉的iphone4或4s来说,它们的PPI是326,属于超高密度的手机。当我们书写一个宽度为 320px的页面放到iphone中显示,你会发现,它竟然是满宽的。这是因为,页面被默认放大了两倍,也就是640px,而iphone4或4s的宽, 正是640px。

图中把高密度的一类圈起来,是因为这是android手机的统计数据,在国内安卓手机市场中,高密度的设备占了绝大多数的市场份额,这是很重要的一点,也是我们做安卓端webapp要注意的关键点。

3.js操作兼容判断

1.window.devicePixelRatio//获得设备像素缩放比
2.js操作媒体查询

var mq=window.matchMedia('screen and (min-width: 800px)');

//当媒体查询的状态改变时,例如页面由799变成了801px
mq.addListener(widthWatch);

function widthWatch(){
    if(mq.matches){
        //........满足条件
    }else{
        //........
    }
}
widthWatch();
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章