为什么我的CSS3媒体查询在移动设备上不起作用?

250
在 styles.css 文件中,我使用了媒体查询,其中两个使用了以下变体:
/*--[ Normal CSS styles ]----------------------------------*/

@media only screen and (max-width: 767px) {

    /*--[ Mobile styles go here]---------------------------*/
}

在常规浏览器(Safari、Firefox)中,当我缩小窗口时,网站会按照我想要的布局进行调整大小,然而,在手机上根本没有显示移动端的布局。相反,我只看到默认的CSS。

有人能指点一下我应该怎么做吗?


3
什么手机?CSS中的媒体查询是一项新特性,不是所有移动电话浏览器都支持它。 - Sparky
1
iPhone 4,我还在一台安卓手机(2.2 Froyo)上进行测试,分辨率为320 x 480。 - redconservatory
实际上,我在 iPhone 4 上切换到了以下媒体查询,并且它可以正常工作(但我必须更改我的 CSS 来适应更高的分辨率)@media only screen and (-webkit-min-device-pixel-ratio: 2) { }。 - redconservatory
24个回答

3

我最近也遇到了这个问题,后来发现是因为我在and(之间没有加空格导致的。这就是错误的原因。

@media screen and(max-width:768px){
}

然后我将其更改为以下内容以进行更正

@media screen and (max-width:768px){
}

2
如果浏览器缩放级别不正确,也可能会发生这种情况。您的浏览器窗口缩放应该是100%。在Chrome中,使用Ctrl + 0重置缩放级别。"最初的回答"

2

在这里提供另一个答案。如果您试图使用 CSS 变量,那么它将会静默地失败。

翻译后:Throwing another answer into the ring. 如果你想使用CSS变量,它将会悄悄地失败。

@media screen and (max-device-width: var(--breakpoint-small)) {}

CSS变量在媒体查询中不起作用(设计上如此)。

注:原回答为"Original Answer"。


这更适合作为注释,因为它只是问题的附属信息。 - TylerH

2

我从未见过的奇怪原因:如果你在媒体查询之外使用“父级 > 子级”选择器(在Firefox 69中),它可能会破坏媒体查询。我不确定为什么会发生这种情况,但对于我的情况,这种方法不起作用...

@media whatever {
    #child { display: none; }
}

但是,如果将父级元素添加到页面上方的其他CSS匹配项中,这样就可以正常工作...
#parent > #child { display: none; }

似乎指定父级不应该影响结果,因为ID非常具体,不应该存在歧义。也许这是Firefox的一个bug?


1

在编写 CSS 时,@media screen 必须放在最后面是非常重要的。


0
@media all and (max-width:320px)and(min-width:0px) {
  #container {
    width: 100%;
  }
  sty {
    height: 50%;
    width: 100%;
    text-align: center;
    margin: 0;
  }
}

.username {
  margin-bottom: 20px;
  margin-top: 10px;
}

7
请为您的代码添加一些解释,说明它是如何解决问题的 - 这将有助于未来的他人,并且您的答案更有可能得到赞同。 - Our Man in Bananas
2
虽然这段代码片段可能解决了问题,但包括解释真的有助于提高您的帖子质量。请记住,您正在为未来的读者回答问题,而这些人可能不知道您的代码建议原因。 - Ferrybig

0

你们需要的唯一解决方案是:

将所有媒体查询放在 .CSS 文件的末尾

它有效,试试吧


0

由于只是拼写错误,导致代码无法正常工作。在@media screen and (max-width: 930px)中,需要在(and)和开括号之间加上空格,即@media screen and (max-width: 930px)。


请您尝试编写正确的句子以提高可读性。 - jhinghaus

0

我使用几种不同的方法。在同一个样式表中,我使用@media (max-width: 450px);或者如果是分开的话,请确保头部链接正确。我看了一下你的fixmeup网站,发现你有一堆混乱的CSS链接。这也会影响到HTC Desire S。


会再看一下 CSS,谢谢...知道它能在某些东西上运行是很好的。 - redconservatory

-1
你是否在使用HTML的viewport meta标签?例如
<meta name="viewport" content="width=device-width, initial-scale=1" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接