如何信任基于em的媒体查询

时间:2016-04-20 10:02:16

标签: html css responsive-design grid media-queries

有很多资源鼓励在媒体查询中使用ems而不是像素。然而,他们都没有轻易解释对它的明显怀疑:

如果我有两个div并且我想在类似iPhone4的设备上隐藏其中一个div,我该如何使用基于em的媒体查询呢?器件分辨率为640x960像素。

在每篇文章中都注明通常 1em = 16px。但由于不确定,为什么我要转换为ems并冒险破坏我的设计?如果用户将其默认字体更改为20px,该怎么办?还是10px?我的div会隐藏太快或太晚。

基金会的例子:

/* min-width 641px, medium screens */
@media only screen and (min-width: 40.063em) { }

我怎么能确定它真的是641px而不是1282px?为什么有人会使用那些不值得信赖的东西而不是旧的好像素?

2 个答案:

答案 0 :(得分:0)

首先,用户无法更改em中的大小调整,因为这是一个无法更改的浏览器设置。所以充其量它可能会因浏览器而异,但我不知道有什么不同于这个标准。因此,可以认为使用起来非常安全。

但对于媒体查询,我建议使用rem unitsem单元最常用于组件中的字体大小调整,因为它相对于父DOM元素进行相对缩放。虽然rem单位适用于调整根元素(宽度,高度......)的大小。

答案 1 :(得分:0)

  • px 是一个绝对的度量单位(如in,pt或cm) 恰好是1/96的单位。因为它是 绝对测量,可以在您想要定义的任何时候使用 某种特定尺寸,而不是成比例 其他类似于浏览器窗口的大小或字体大小。

  • em 不是绝对单位 - 它是一个相对于的单位 目前选择的字体大小。除非你已经覆盖了字体样式 用绝对单位(例如px或pt)设置字体大小 将受到用户浏览器或操作系统中字体选择的影响 如果他们已经制作了一个,那么使用em作为一个没有意义 长度的一般单位,除非您特别希望它按比例缩放 随着字体大小的扩展。

基于此,最准确的选项是根据您的要求使用px而不是em,但您可以随时重新定义字体并使用rem代替,这是更好地响应网站,以及百分比。这是你在网站上添加的每一个元素的判断问题,当然还有很多测试,以确保它看起来很好,并且在任何分辨率和设备上都能完美无瑕。

我个人更喜欢这样做:

  • 我定义了我的字体和字体大小(这会覆盖默认字体)
  • 我使用百分比作为块元素
  • 我使用rem进行字体和媒体查询

但当然有时我必须使用像素或更改我的一些"默认"规则取决于我的需要。正如我之前所说,这也是对你需求的判断,最好是。

注意:em单位相对于父级的字体大小。 rem单位相对于root或html元素。这意味着我们可以在html元素上定义单个字体大小,并将所有rem单位定义为该单位的百分比。