媒体查询不适用于移动设备

Posted

技术标签:

【中文标题】媒体查询不适用于移动设备【英文标题】:Media queries not working on mobile 【发布时间】:2012-07-24 11:59:28 【问题描述】:

以前曾在此处提出过类似问题,但在阅读完这些问题后,我还没有找到适用于我的网站的答案。

我已经围绕 Bootstrap 构建了网站,但添加了一些我自己的媒体查询。现场测试站点在:http://agoodman.com.au

媒体查询更改的部分是“我们的费用”和“地图”叠加层。如果您使用的是笔记本电脑,则调整浏览器的大小会使这些部分显示为块。

我的样式表链接:

    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="css/bootstrap.css" rel="stylesheet">
    <link href="css/user.css" rel="stylesheet">

“User.css”只是一个单独的文件,因为我希望能够根据需要保留和更新引导程序的主框架。 User.css 覆盖引导程序中的样式。我在 user.css 中的媒体查询如下:

@media screen or handheld(max-width: 979px) 
    .fee-buttons 
        height: auto;
        font-weight: 600;
        position: relative;
        padding: 0;
        margin: 0;
        list-style: none;
        

    .fee-buttons .transformation 
        width: 100% !important;
        height: 300px;
        position: relative;
        z-index: 10;
        left:0;
        

    .fee-buttons .hourly, .fee-buttons .membership 
    float: none;
    width: 100% !important;
    

    li.button
    overflow:visible;
    



@media screen or handheld(max-width: 995px) 
    #overlay 
        position: relative;
        display: block;
        width: auto;
        right: 0;
        padding:1em;
    

正如我所说,在桌面浏览器上这工作正常,但在移动浏览器上它根本不工作。我已经在 iPhone 4(使用 safari)和 HTC Desire(使用股票 android 浏览器)上进行了测试,两者都以相同的方式显示 - 忽略媒体查询,只显示包含大量内容的完整网站.

关于我在这里做错了什么有什么想法吗?

编辑:

以下是在小屏幕宽度下应该的屏幕截图:

它目前在 Android 和 iPhone 上的样子,设备忽略了我的媒体查询:

【问题讨论】:

您的网站在我看来在 OS X 上的 Safari 上和在 ios 4.3 模拟器上的 Safari 上完全一样。这些查询对我来说很好。 这是我的 Android 手机上的截图:i.imgur.com/PWmbO.png 在 iPhone 4 上测试时得到了相同的结果 【参考方案1】:

很抱歉回答我自己的问题,但我发现了一些有用的东西。

我设置媒体查询的方式有误。而不是

@media screen or handheld(max-width: 995px)

我把查询改成

@media handheld, screen and (max-width: 995px)

按照这个人的建议:https://***.com/a/996820/556006

它在所有设备上都能完美运行。感谢那些提出建议的人,为大家点赞。

【讨论】:

我现在只是来验证 CSS 并在事后看到了您自己的答案。对于像这种验证这样的情况可能是要走的路,因为很多错误归结为缺少或多余的字符:) jigsaw.w3.org/css-validator【参考方案2】:

显示完整的网站,其中包含许多非常紧凑且不讨人喜欢的内容。

这可能是因为您的媒体查询针对的是宽度为 979 和 995 像素的大屏幕。移动屏幕要小得多。

要定位 iPhone 4 之类的设备,您需要 max-width960px(这就是引导程序默认为 960 的原因)用于横向,480px 用于纵向。

由于您无法针对所有可能的屏幕尺寸,bootstrap 提供了一个合理的默认宽度列表,您也应该坚持使用。

【讨论】:

等一下,我可能对媒体查询的工作方式感到困惑。如果我将查询设置为max-width: 995px,这是否意味着固有样式将适用于宽度等于或小于995px的任何浏览器?这就是我想要实现的目标,以便从 1px 到 995px 的浏览器宽度传递媒体查询。 为了清晰起见,在最初的帖子中添加了一些屏幕截图。 你是对的。查询中的max-width 意味着任何更小的东西都将使用这种样式。有趣的是,在具有小窗口宽度的 Desktop Safari 上,页面看起来像您的第二个屏幕截图。 是的,我也突然注意到了这一点。当我查看 Chrome 的检查元素时,它根本没有显示媒体查询的样式。它肯定会加载正确的 css 表,所以我不知道发生了什么。你可以看这里:agoodman.com.au/css/user.css 看到底部的媒体查询有什么问题吗?

以上是关于媒体查询不适用于移动设备的主要内容,如果未能解决你的问题,请参考以下文章

媒体查询不适用于移动设备 - 电话

媒体查询适用于移动 Firefox,但不适用于移动 Chrome

媒体查询适用于移动版Firefox但不适用于移动版Chrome

媒体查询不适用于横向

基于 EM 的媒体查询不适用于 Android 浏览器 v4.3

移动web开发之媒体查询