响应式媒体查询在 Google Chrome 中不起作用

Posted

技术标签:

【中文标题】响应式媒体查询在 Google Chrome 中不起作用【英文标题】:Responsive media query not working in Google Chrome 【发布时间】:2014-08-12 06:15:42 【问题描述】:

我编写了一段 CSS 代码来根据用户的屏幕宽度流畅地切换我的网站布局的宽度。如果用户可用的屏幕空间较少,则布局的宽度会增加以填充更多的窗口并留下更少的空白,如果用户有更多的空间,则布局会缩小以保持吸引人的外观。

我使用以下代码来实现:

#bg
    background:-webkit-linear-gradient(90deg, #0f0f0f 0%,#222222 400px);
    background:-moz-linear-gradient(90deg, #0f0f0f 0%,#222222 400px);
    background:-o-linear-gradient(90deg, #0f0f0f 0%,#222222 400px);
    background:linear-gradient(90deg, #0f0f0f 0%,#222222 400px);
    margin-left:auto;
    margin-right:auto;
    margin-bottom:1.6rem;
    border-width:0 0.1rem 0.1rem 0.1rem;
    border-style:solid;
    border-color:#303030 #101010 #000;
    border-radius:0.8rem;
    min-width:94.2rem


@media (min-width: 70rem)
    #bg
        border-radius:4px;
        border-radius:0.4rem;
        width:90%
    



@media (min-width: 91rem)
    #bg
        width:80%
    



@media (min-width: 112rem)
    #bg
        width:70%
    


这在 Firefox 30 中运行良好,但谷歌浏览器总是以 70% 的宽度显示元素。

以前,我也在查询中使用了 max-width,在这种情况下 Chrome 会做相反的事情;无论我如何调整浏览器窗口的大小,它都会始终以 90% 的比例显示元素。

规则是使用 SASS 编译的。这里到底有什么问题?如何更改查询以在所有浏览器中工作?

可以在at this link找到受影响的网站。

【问题讨论】:

能否请您显示 DOM 结构的摘录?你看过编译后的 CSS 是否有效? @try-catch-finally 我不确定如何制作网站结构的独立示例,因为它有点复杂,但我已经添加了指向相关网站的链接。此外,您看到的代码是编译后的 CSS。 【参考方案1】:

我的问题是我试图使用@media (width > x) 风格的媒体查询,而不是@media (min-width: x)。 Firefox 正确处理了媒体查询,但 Chrome 忽略了它。

【讨论】:

【参考方案2】:

我遇到了 chrome 的问题,一旦我们越过假设受到影响的像素,它就会加载 css,添加十进制值解决了我的问题。

@media (max-width: 767.98px)...

在 bootstrap 4 css 中也是如此。

【讨论】:

【参考方案3】:

正如上面其他人所说,在桌面上您需要检查缩放设置为 100% 以及使用视口元标记

【讨论】:

【参考方案4】:

试试这个,和哈桑的回复差不多,加minimum-scale=1

<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" />

【讨论】:

【参考方案5】:

如果您在 桌面 上使用 Chrome(或任何浏览器),则 浏览器缩放应为 100%。不多也不少。否则,响应不起作用(在 Windows 中使用 Ctrl + 滚动,或在 Mac 中使用 Cmd +/- 进行调整)。

【讨论】:

这不是真的,缩放选项仅适用于浏览器窗口,不适用于网站内容。 @Dexter 我从来没有说过缩放选项适用于网站内容。 对我有帮助。当缩放不是 100% 时,此百分比将应用于媒体查询。例如,缩放级别为 90% 的 @media (min-width: 768px) 仅应用于 691 像素 (768*0.90)。 是的,省了很多时间!! 必须在定义 CSS 媒体查询之前声明视口。我在标题下面有我的,但没有帮助。【参考方案6】:

您可以根据自己的需要进行调整

// css for mobile here
// ...

/* desktop */
@media (min-width: 900px) and (orientation: landscape)

    // css for desktop here
    // ...

别忘了

<meta name="viewport" content="width=device-width, initial-scale=1">

【讨论】:

对我来说是 【参考方案7】:

请用“;”关闭您的代码试试这个

@media (min-width: 70rem)
#bg
    border-radius:4px !important;
    border-radius:0.4rem !important;
    width:90% !important;

【讨论】:

【参考方案8】:
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <style>
        body
            background:green;
        
        @media only screen and (max-width: 500px) 
            body
                background:yellow;
            
        
    </style>
</head>
<body>

</body>
</html>

【讨论】:

【参考方案9】:

&lt;head&gt;中添加这一行

<meta name="viewport" content="width=device-width,initial-scale=1">

【讨论】:

这对桌面浏览器没有任何影响。 你能把你网站的链接发给我吗 这个问题是 3 年前发布的。我很确定现在他们要么解决了这个问题,要么放弃了这个项目。还有问题中的网站链接。 是的,“视口”元标记!当我的模板由于某种原因缺少“viewport”标签时,我花了一个小时对完美的媒体查询进行故障排除。 您能解释一下为什么这可以解决问题吗?如果我们知道为什么会这样,这个答案会更有用。【参考方案10】:

一切都正确,但切赫this

@media only screen and (min-width : 320px) ...

不是

@media screen and (min-width: 320px) ...

/*==========  Mobile First Method  ==========*/

        /* Custom, iPhone Retina */ 
        @media only screen and (min-width : 320px) 

        

        /* Extra Small Devices, Phones */ 
        @media only screen and (min-width : 480px) 

        

        /* Small Devices, Tablets */
        @media only screen and (min-width : 768px) 

        

        /* Medium Devices, Desktops */
        @media only screen and (min-width : 992px) 

        

        /* Large Devices, Wide Screens */
        @media only screen and (min-width : 1200px) 

        



        /*==========  Non-Mobile First Method  ==========*/

        /* Large Devices, Wide Screens */
        @media only screen and (max-width : 1200px) 

        

        /* Medium Devices, Desktops */
        @media only screen and (max-width : 992px) 

        

        /* Small Devices, Tablets */
        @media only screen and (max-width : 768px) 

        

        /* Extra Small Devices, Phones */ 
        @media only screen and (max-width : 480px) 

        

        /* Custom, iPhone Retina */ 
        @media only screen and (max-width : 320px) 

        

【讨论】:

【参考方案11】:

看看这种更常用的语法是否效果更好:

@media screen and (min-width: 112rem) ... 

【讨论】:

感谢更正确的语法,但这并不能解决 Chrome 上的问题。 刚刚注意到您添加了一个链接。对我来说,这些媒体查询在 Chrome (Mac) 中运行良好。

以上是关于响应式媒体查询在 Google Chrome 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

媒体查询响应式表格设计不响应移动设备

媒体查询在 iframe 中不起作用

带有纯 CSS3 媒体查询的 IE9 响应式图像调整大小问题

媒体查询在 chrome 中不起作用,但在 iphone 上起作用

使用媒体查询时在 Chrome 中出现奇怪的浮动渲染

响应式布局的一些主要内容