【发布时间】:2012-11-06 00:12:08
【问题描述】:
我正在寻找一个可靠的媒体查询规则:
If desktop width < 720px AND devices in portrait mode {}
(也就是说,随着桌面上宽度的减小,媒体查询会在 720 像素处启动。在手机上,这只会在纵向模式下发生 - 横向不应应用媒体查询)
问题是:如何将目标设备与桌面分开。
问题存在是因为:@media handheld 不受支持
另外max-width影响一切,因此不能与max-device-width AND portrait结合使用
好像我只能定位其中一个:
- 所有设备都低于/在设置宽度之间
- 仅限设备(使用 JavaScript shim 修复媒体查询)低于/介于设置宽度和方向之间。
不能单独处理设备和桌面。
是否有现有的 JavaScript 解决方案可以满足我的需求?
注意我在 LESS 中编写我的 CSS,媒体查询嵌套在其中。
背景
我正在开发的网站是响应式的并使用网格系统。在 720px 宽度(当前测试宽度)下,较小设备/分辨率的列使用会发生变化。然而,经过测试,该站点(720px 宽度的完整站点)在横向上可读性很好,即使在我的小屏幕 HTC Desire 上也是如此。当我删除网站的某些部分以便更好地使用媒体查询时,我想为什么不让网站通常可以横向访问。
在没有修改元素列跨度的情况下,在桌面上使用 720 像素会看到一个非常崩溃的网站。但是,由于移动设备的较小性质,它看起来并非如此。然而,随着列跨度的修改,特定元素(例如标题)在手机横向(由于浏览器的高度大大降低)时完全不成比例。
简而言之,仅根据浏览器宽度更改设计并不能像我在其他网站上设法实现的那样在所有设备上均等。
我正在使用以下元标记:
<meta name="viewport" content="width=device-width,
initial-scale=1,
maximum-scale=1,
user-scalable=no" />
尝试过什么
方向与桌面无关。它会根据用户窗口设置、分辨率等而变化。
我已尝试以下方法来定位手机/两者:
@media handheld and (orientation:portrait) { }
似乎没有手机利用 handheld 属性,至少 100% 没有 - 所以它毫无价值。
@media screen and (max-device-width:720px) and (orientation:portrait) { }
会很好用,但 android 2.2 和 2.3(可能还有其他操作系统,更不用说其他操作系统了?)max-device-width 无法正常工作。
@media screen and (max-width:720px) and (orientation:portrait) { }
适用于高分辨率显示器(因为随着窗口宽度的减小,高度会迅速变为 > 宽度)和手机,但不适用于较小的显示器,因为窗口在 720 像素宽度时不会是纵向的(网站不断压缩超过我的限制)想要)。
@media screen and (max-width:720px), screen and (orientation:portrait) { }
先做任何事。没用。
@media screen and (max-width:720px), screen and (max-width:500px) and (orientation:portrait) { }
和
@media screen and (max-width:720px) { }
@media screen and (max-width:500px) and (orientation:portrait) { }
一切都只是使用较大的max-width。
我也对min/max-height 进行了一次尝试,但也没有成功。
【问题讨论】:
-
只是一个先见之明。但是所有现代手持设备都有 html5 标准。因此,如果设备不支持 css3 prop,那么它可能是桌面
标签: javascript css less media-queries