【问题标题】:CSS: media query CSS not working 50% of the time (Chrome)CSS:媒体查询 CSS 在 50% 的情况下无法正常工作(Chrome)
【发布时间】:2017-05-12 04:15:43
【问题描述】:

我有一个网站,当浏览器的宽度低于某个像素宽度时,我正在使用媒体查询链接元素应用一些覆盖的 CSS。

<link rel="stylesheet" href="css/main.css" />
<link rel="stylesheet" media='screen and (max-width: 960px)' href='css/mainNarrow.css' />

问题是,在 50% 的情况下,当浏览器的宽度发生变化时,第二个样式表似乎没有启动。我正在使用 Chrome 58.0.3029.96(64 位)。检查元素,第二个样式表似乎甚至不存在,所以我不认为这是一个优先问题。

这里是网站,您可以刷新和调整大小以自己试验。在我刷新的一半时间里,调整大小的行为是不同的。您可以通过将顶部菜单替换为汉堡菜单按钮来判断第二个样式表何时启动:

http://www.multipleorganics.com

任何想法为什么会发生这种情况?

【问题讨论】:

  • 是否有可能两个链接都需要媒体属性?
  • @Niles Tanner 指出的是正确的。我只是测试它并工作。
  • @dqhendricks 应该只是media='screen'
  • @NilesTanner 我刚试过media='screen',结果相同。第二个样式表没有启动。
  • 不保证加载顺序。在两个链接上使用媒体属性是在黑暗中拍摄的。在我的测试中,这似乎是一个异步问题,当页面完全加载时会自行解决

标签: html css


【解决方案1】:

您可能应该只将该 CSS 添加为辅助样式表并删除该媒体属性。在您的风格中,您将代码包装在媒体查询中,例如:

@media screen and (max-width: 960px) { /*960*/
  // Put your CSS code here...
}

【讨论】:

  • 但我必须这样做吗?我宁愿这些是单独的文件。为什么其他方法不起作用?据我了解,它应该在功能上是相同的。
  • @Adrianopolis 这个方法理论上应该和OP的方法一样。
  • 这通常是更好的方法,因为它减少了需要为页面加载而发出的 HTTP 请求的数量,这将导致整体加载时间更快。
  • @freginold 好吧,由于加载时间和潜在的 HTTP 资源排队,第二个文件可能无法及时加载以响应它旨在支持的查询。
  • @ScottMarcus 在调整大小之前等待多长时间似乎并不重要。这不是我要解决的延迟问题。这是机械的。
猜你喜欢
  • 2016-01-22
  • 2014-07-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多