【问题标题】:Stuck on media queries卡在媒体查询上
【发布时间】:2013-04-12 18:27:13
【问题描述】:

我一直在尝试扩展几个媒体查询。

我有一个基于最大宽度的查询和一个基于最小宽度的查询,如下所示:

@media only screen and (max-width: 600px) {
/* styling goes here */
}

@media only screen and (min-width: 600px) {
/* styling goes here */
}

我想扩展第一个查询以使其在识别为纵向的任何设备上也启用它,并同样扩展第二个查询以在具有非纵向模式的设备时触发。

无论设备宽度如何,第二个媒体查询(基于最小宽度)都不应在纵向模式下应用。

【问题讨论】:

    标签: css media-queries


    【解决方案1】:

    我认为您不是在寻找 AND 运算符,而是在寻找 OR 运算符,它在 CSS 世界中只是一个逗号。因此,您可以执行以下操作:

    @media only screen and (max-width: 600px),
    screen and (orientation:portrait) {
         /* styling goes here */
    }
    

    但是,为了获得您希望的结果,您必须颠倒查询的顺序,以便它们可以正确地级联。这是因为,例如,在 iPad 中,即使在 纵向 方向,您也会有一个 min-width: 600px,将两个语句之一评估为 true,从而触发媒体查询。

    通过将portrait 媒体查询放在landscape 下方,您实际上可以确保当orientation 查询计算结果为TRUE 时,您将覆盖之前的样式。

    您可以在此处查看 JSBin 的修改工作版本:

    Working example

    在 iPad 上试试这个。虽然在竖屏模式下大于 600px,但仍会显示:小屏幕

    【讨论】:

    • 我认为这基本上就是我想要的。感谢您的解释!
    【解决方案2】:

    您可以将and (orientation:portrait)and (orientation:landscape) 添加到您的媒体查询中。

    例如:

    @media only screen and (max-width: 600px) and (orientation:portrait) {
       /* styling goes here */
    }
    
    @media only screen and (min-width: 600px) and (orientation:landscape) {
       /* styling goes here */
    }
    

    已编辑 根据您的 JS Bin 示例,虽然我仍然不能 100% 确定您的问题是什么,但您可以通过从第二个查询中删除 (orientation: Landscape) 来删除“空白间隙”。 我怀疑第一个没有在您的 ipad 中触发,因为 max-width 是错误的,我认为 ipad 应该是 768px(请参阅The Responsinator 获取指南)。

    【讨论】:

    • 是的,但同时我希望没有获得方向查询的设备应用查询的样式。这可能吗?
    • 我不确定您所说的“无法获得方向查询的设备”是什么意思?
    • 我整理了一个演示以使这更容易掌握:jsbin.com/ikovud/1 第一个查询应该始终在任何能够做到这一点的设备上以纵向模式触发,并且它也应该在最大-宽度为 600 像素。第二个应始终以横向模式或 600 像素的最小宽度触发。例如,在高分辨率 iPad 上尝试一下,我想你应该能够理解我的要求。
    • 这没有用,我不确定你在找什么?
    • 在高分辨率 iPad 上,肖像查询未触发。在桌面浏览器中,我想消除某些分辨率下的“白色间隙”(尝试在 Chrome 中调整页面大小)。
    猜你喜欢
    • 1970-01-01
    • 2019-03-03
    • 2022-01-25
    • 2021-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-15
    • 2023-03-12
    相关资源
    最近更新 更多