我正在寻找一种技术,仅当当前设备(我的 web 应用程序运行的地方)具有“小”屏幕时才允许我应用特定的 CSS——例如小于 5 英寸。
一些注释使我的问题更清楚:
它不应该基于屏幕分辨率或密度,因为有些平板电脑的分辨率很小,有些智能手机的分辨率很高。
它也不应该取决于当前浏览器的窗口大小。如果它是桌面,那么即使窗口很小,也不应该应用 CSS。
我的网络应用程序有两种布局。一种是默认设置,针对台式机和平板电脑进行了优化。另一种布局针对智能手机进行了优化,只能在智能手机上打开。
就我而言,在服务器端什么都做不了。每个变体的不同域不是一种选择。
先感谢您!
更新
这是我最好的尝试的测试页面:http: //jsbin.com/uXULOpe/2/
对于三星 Galaxy Nexus i9250(4,5" 屏幕),它启用了错误的样式(".pad")...对于 iPad 和 WindowsPhone,它似乎正在工作。Android 似乎认为它的宽度至少为 8 英寸。
资源:
<!DOCTYPE html>
<html>
<head>
<title>M-Q test</title>
<style>
.always,
.desktop,
.pad,
.smart{
display: none;
}
.always{
display: inline-block;
}
@media only screen and (min-device-width : 10in) {
.desktop{
display: inline-block;
}
}
@media only screen and (min-device-width : 5in) and (max-device-width : 10in) {
.pad{
display: inline-block;
}
}
@media only screen and (max-device-width : 5in) {
.smart{
display: inline-block;
}
}
</style>
<meta name="viewport" content="initial-scale=1.0, width=device-width, height=device-height, maximum-scale=1.0; user-scalable=0;"/>
<meta name="HandheldFriendly" content="true" />
</head>
<body>
<ul>
<li>Always: <span class="always">x</span></li>
<li>Desktop: <span class="desktop">x</span></li>
<li>Pad: <span class="pad">x</span></li>
<li>Smartphone: <span class="smart">x</span></li>
</ul>
</body>
</html>