CSS3 media
查询功能在开发可适应许多不同屏幕尺寸和设备的网站方面带来了许多有趣的可能性。
但是,实际上,我开始意识到CSS3 media
查询功能以及整个“响应式Web设计”运动可能无法实现其承诺。
我看到的问题是,归根结底,Web开发人员最关心的是他们的用户是通过台式机,平板电脑还是移动设备查看内容。但是CSS3只提供一种检测屏幕分辨率的方法。从理论上讲,检测屏幕分辨率似乎是针对各种不同设备进行调整的好方法。但是实际上
假设我们有一个简单的Javascript函数,它仅输出屏幕宽度:
function foo()
{
alert(screen.width);
}
在我的Blackberry Touch上,输出:
768
在我的三星Galaxy上,输出:
800
所以...在这一点上,主流智能手机的分辨率已经非常接近台式机级别的分辨率。如果只需要屏幕分辨率,那么检测用户是否正在通过智能手机,平板电脑或台式机查看您的网站的能力似乎变得越来越困难。
这使我质疑基于媒体查询的整个CSS3“响应式Web设计”运动背后的全部智慧。似乎media
查询功能更适合于适应桌面屏幕上调整大小的浏览器窗口,而不是各种移动设备。
用于检测移动设备或平板设备的另一种可能的技术是通过检查ontouchstart
事件是否受支持来使用功能检测。但是,随着许多桌面屏幕开始支持触摸,即使这样也变得越来越不可靠。
问题:因此,作为一名Web开发人员,如果我不能依靠RWD或功能检测,用户代理嗅探(一如既往地不可靠)是否真的是检测移动设备的最佳选择?
device-width
很糟糕吗?