基于物理尺寸的响应式设计(转)

两种Queries之间的细微区别

比较如下两个media-query声明:

 @media (min-resolution: 341dpi) and (min-width767px) > { }

 @media (max-resolution: 131dpi) and (min-width767px) > { }

乍一看,是不是没啥子区别?当然不是了。第一段声明是针对HTC Windows Phone 8X,而第二段针对iPad2。通过使用resolution query,可以将大小不同的设备区分开来。

目前看来,@media (min-width: 767px){ }对HTC和iPad而言没有什么区别,因为他们的宽度都是768像素,但是iPad的分辨率比较低(1024*768),而HTC的分辨率比较高(1280*768),最不可思议的是,iPad有10英尺宽,而HTC只有4.3英尺,不到前者的一半大小。

通过Resolution Media Query 和 Width Query 的配合使用,我们能够将具有同样宽度的不同大小的设备区分开,从而来相应的调整设计中的元素布局。前面说过的,我们对屏幕的分辨率并不关心,因为我们在响应式设计中使用断点, 这样可以大致判断一个网站的内容是显示在一个尺寸大的还是小的物理设备上—从而使用合适的字体或者自动调整元素布局。但我们到底该如何准确区分大小设备呢?不好意思,做不到。因为我们必须从每个项目的实际出发,这个设备在这个项目中是小设备,但在另外一个项目中,可能被归类为大设备。不过我按照一个范围,做了一些计算并设计了一个定理,这个定理多少会让你对大小设备的区分有所认识。

物理尺寸调查简单定理(PSINET)

理论:在一个组合的查询中,如果分辨率的宽度和高度中的较小值与PPI的比值大于5,那么基本上可以归属为大设备,如果小于5,基本上可以归属为小设备。如果得分接近于5,那么是一个中等的设备,物理上的尺寸接近于1张A4纸的大小(21*29.7cm)。

下面是一组检测此公式的设备清单。我已根据设备的屏幕尺寸、分辨率、单位像素密度以及PSINET的得分,将它们列表如下:

较大的设备
设备名称屏幕尺寸 (inches)分辨率PPIPSINET 得分
Apple iMac272560 × 144010913.00
Sony Vaio F16.41920 × 10801348.05
Apple MacBook Pro RD132560 × 16002277.04
较小的设备
设备名称屏幕尺寸 (inches)分辨率PPIPSINET 得分
Sony PSP4.3480 × 2721283.75
Kindle Keyboard 3G6768 × 10242123.62
Kindle Fire71024 × 6001693.55
Samsung Galaxy S4480 × 8001603.00
Samsung Galaxy NoteII5.5720 × 12802672.69
Samsung Galaxy S IV51080 × 19204412.62
HTC Butterfly51080 × 19204412.62
Samsung Galaxy Grand I90825480 × 8001872.56
Palm Pre3.1480 × 3201862.5
Sony Xperia Z51920 × 10804432.43
Samsung Galaxy SIII4.8720 × 12803062.35
LG Nexus 4 E9604.7768 × 12803182.41
Nokia Lumia 9204.51280 × 7683322.31
HTC One4.71080 × 19204692.30
HTC One X4.7720 × 12803122.30
HTC Desire HD4.3480 × 8002172.21
BlackBerry Q103.1720 × 7203282.19
BlackBerry Z104.2768 × 12803552.16
Motorola Droid X4.3854 × 4802282.10
Sony Ericsson S4.3720 × 12803422.10
Motorola RAZR i XT8904.3540 × 9602562.10
iPhone 54640 × 11363261.96
Apple iPod Touch3.5960 × 6403261.96
Nokia Lumia 6203.8480 × 8002461.95
HTC Wildfire3.2240 × 3201251.92
Nokia Lumia 7103.7800 × 4802521.90
Motorola Defy3.7854 × 4802651.81
LG Optimus One3.2320 × 4801801.77
Nokia N962.8240 × 3201431.67
Sony Ericsson W810i1.9176 × 2201481.18
中等尺寸的设备
设备名称屏幕尺寸 (inches)分辨率PPIPSINET 得分
Apple iPad (1 & 2)9.71024 × 7681325.81
Apple iPad (3rd Gen)9.72048 × 15362645.81
Amazon Kindle DX9.7824 × 12001505.49
Acer Iconia Tab A50010.1800 × 12801495.36
Samsung Galaxy Tab10.11280 × 8001495.36
Motorola Xoom10.11280 × 8001495.36
Asus Transformer Pad Infinity10.11920 × 12002245.35
Microsoft Surface10.11366 × 7681485.18
Asus VivoTab RT TF600T10.11366 × 7681554.95
iPad Mini7.9768 × 10241624.74
Amazon Kindle Fire HD8.91920 × 12002544.72

确定设备大小就这么简单?那倒不是,这就是之所以称为定理的原因。它基于可靠的推论及经验论证,并且经由科学方法总结得出的。但它并不代表权威,只是通过抓取一小撮盐(也可以是一大堆NaCl)并进行了提炼而已。在resolution media query以及与之相关的工作成为Web重点的未来时代,这个定理将会发挥有价值的一面。

在实际中的应用

除了上述很直观的方式,resolution media query还有很多用法。

输入 Enquire.js。很多人都没听说过,这是一个很棒的javascript库,在匹配media queries的时候,这个库能够提供很特别的脚本。

我们可以使用Enquire.js甚至只用window.matchMedia这个本地javascript方法,就能区分手机,平板和电脑用户,这比只用width queries可靠得多。下面是一个Enquire.js的用法:

enquire.register("screen and max-resolution: 150dpi and max-width: 300px", function() {
    alert('My, what a small screen you have there, Grandma!')
});

结合media query和CSS,并且使用能够识别分辨率的javascript库,就足以赋予我们掌握未来“物理网络”的能力。想像一下,这样我们就能看到跨越半个地球的博物馆里矗立着的雕塑以1:1的比率显示在任何设备上,或者在网上选购订婚戒指时,精确地看到24克拉的钻戒到底有多大。在实际生活中的应用不胜枚举。

我的注解:

  • 设备的尺寸和分辨率层出不穷,响应式设计很难全部覆盖!
  • Enquire.js是个好工具,特别是对于我们公司Google Analysis的分析需求——Google Analysis要求分辨出是点击的desktop页面还是mobile设备的页面,以便追踪分析,对我很有启发,不过反过来一想,其实任何一段辨别手持设备的js代码也可以代替Enquire.js!

 refer:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值