【发布时间】:2016-01-30 05:05:01
【问题描述】:
我想尝试制定一种自适应网页设计方法,以与移动浏览器和桌面浏览器共存。
起初,在 CSS 中使用媒体查询似乎是我需要的,所以我就这样做了,但看起来谷歌浏览器搞砸了我想做的事情。
与大多数浏览器相比,在大多数情况下,只有移动浏览器会响应方向媒体查询,这似乎是定位移动浏览器的好方法,无论屏幕大小如何。但是,由于某种原因,谷歌浏览器不仅会对此做出响应,而且实际上会根据视口(窗口本身)的尺寸选择横向和纵向,而与屏幕本身的位置无关。
这让我想到了另一个潜在的想法。我注意到在我的移动设备上,设备宽度和设备高度将根据横向和纵向模式交换位置,而桌面上的谷歌浏览器总是报告显示器的正确尺寸,即使 Chrome 认为窗口大小符合纵向模式。 我希望做的是找出一种方法来进行媒体查询,以确定设备宽度是否大于设备高度。这应该允许我确定屏幕的真实方向,而不管视口大小和 Chrome 的方向值。
我的最终目标是能够为任何报告方向的设备设计一个特别适合移动设备的布局的页面:纵向和设备宽度小于设备高度,这应该只发生在真正的移动设备上设备处于纵向模式(或罕见的侧面 PC 显示器,我不介意意外瞄准),同时为任何屏幕宽于高的设备提供横向/桌面友好的布局。
我坚决避免使用任何形式的 Javascript、用户代理查询或服务器端脚本来完成此任务。媒体查询似乎是最快且成本最低(处理明智)的方法,它可以让页面主动调整自身以适应当前设备,并且还会随着移动设备在方向之间旋转而实时移动其位置。
我对这篇文章的最终问题是:我能否在 CSS 中的媒体查询中指定某种形式的表达式,它会简单地比较 Device-Width 和 Device-Height 并在宽度大于高度时显示一种样式,反之亦然反之亦然?
类似:
@media screen and (device-width > device-height) //真正的横向模式
@media screen not (device-width > device-height) //真正的竖屏或方屏
【问题讨论】:
-
您可以使用
and (orientation: landscape)或and (orientation: portrait)在此处阅读更多信息:Media queries for standard devices -
正如我在问题中提到的,在桌面系统上考虑 Google Chrome 时,这不起作用。当视口高于宽度时,Chrome 会报告“orientation: Portrait”,错误地暗示屏幕本身已经旋转。我的目标是严格针对纵向模式的移动设备,并在 Google Chrome(桌面)错误地报告纵向时忽略它。
标签: css mobile media-queries