【问题标题】:Is Chrome rounding media query em units wrong?Chrome 舍入媒体查询 em 单位是否错误?
【发布时间】:2015-04-19 02:09:48
【问题描述】:

我设置了媒体查询断点如下:

@media screen and (max-width:48em){
    /* phone */
}
@media screen and (min-width:48.063em){
    /* tablet*/
}

我从某些 PX 到 EM 计算器中得到了 48.063em 值(有人告诉我出于某种原因使用 em-units,但这不在这个问题范围内),它在 Firefox 中工作正常,但在 chrome 中,它似乎 769px 的浏览器宽度落在这些最大宽度/最小宽度值之间,并且两者都没有应用于页面。我知道这可以通过将最小宽度设置为 48.01em 来解决,不用担心。我在一些教程中也看到了 48.063em。

有人可以确认这是 chrome 中的错误,还是我的逻辑中的错误?

【问题讨论】:

  • em 无法转换为 px - 这取决于字体、字体大小等。为什么在平板电脑和手机有视口时不想使用 px在 px 中定义?
  • 附言。宽度为48.03em 的设备呢?如果你使用的方程太奇怪了。
  • 假设 1 em == 16 像素,769 像素不等于 48.0625 em 吗?我没有看到这里的问题。
  • @BoltClock 哦,天哪,你是对的。我假设 px 到 em 计算器会给出精确的转换。经验教训:自己做数学,或至少仔细检查值。谢谢!
  • 但有趣的是,Firefox 确实对它进行了不同的舍入,因为 769px 确实落在 48.063em 之内。正如我所料,IE 的行为与 Chrome 类似。似乎 Firefox 只是将值四舍五入到低得多的精度。

标签: css google-chrome responsive-design media-queries


【解决方案1】:

我遇到了这个确切的问题,我认为你的宽度在指定值之间是正确的,因此没有应用任何样式。 我认为解决方案是删除您的手机媒体查询,只将手机样式放在顶层,如下所示:

/* phone styles */

@media screen and (min-width:48.063em){
    /* tablet styles */
}

在这种情况下,您的手机样式将被应用,除非宽度为 48.063em 或以上,在这种情况下,手机样式将被媒体查询中的类似样式覆盖(移动优先设计)。这样,您只有一个截止点。 您可以以同样的方式将其进一步扩展到更大的设备:

@media screen and (min-width:100em){
    /* even larger styles */
}

如果您查看 Foundation 的 CSS,您会看到这种方法,这有助于我弄清楚。为什么原始代码似乎可以在 Chrome 以外的浏览器中运行,我不知道。

【讨论】:

  • 阅读有关问题的 cmets,您的小数点与我的错误相同。 .0625 != 0.063
猜你喜欢
  • 2015-02-23
  • 2012-03-08
  • 2021-07-30
  • 1970-01-01
  • 2013-08-19
  • 2012-08-25
  • 2014-04-09
  • 2014-02-20
  • 2011-12-01
相关资源
最近更新 更多