仍然有关系吗?


16

我从读线程就好理解了这一个是EMS的一点是要确定所有的测量在您的网页,通过该基地的字体大小,可以通过浏览器进行设置。

例如,在Chrome中,您可以转到settings -> show advanced settings -> web content -> font size: very large。如果我使用的是大型高分辨率显示器,那可能会很远。

我创建了一个插件,演示了ems和px在大小调整方面的区别。

#div1 {
  width: 320px
}

#div2 {

  width: 20em;
}

如果在浏览器中将字体大小设置为中,则这些div的大小相同,基本字体大小为16px,因此20em = 320px。

在此处输入图片说明

但是,当我将浏览器字体大小更改为非常大时,可以看到以ems为单位的div大小增加了。

在此处输入图片说明

但是,例如,如果我在body标签中定义字体大小,这种效果将被消除。

body {
  font-size: 16px;
}

因为现在我的CSS覆盖了浏览器设置的字体大小。

我了解到,在较旧的浏览器时代,ems非常重要,因为放大页面只会放大字体。但是如今,现代浏览器同时放大像素和字体,使缩放问题变得毫无意义。

环顾网络-许多网站的确在其body标签中设置字体大小。

例如,堆栈溢出,在body标签中将font-size设置为13px。在浏览器中设置字体大小丝毫不会影响Stack Overflow的布局。

在此处输入图片说明

Google搜索结果无法执行此操作。

在此处输入图片说明

(这两个屏幕截图都是将chrome字体设置为非常大的,并且100%缩放)。

因此,您可能会争辩说,在body标签中设置字体大小是一个坏主意,因为它会阻止用户自己的辅助功能设置。但是,考虑到用户可以缩放以增加大小(这也会成比例地增加所有像素),这似乎并不是一个真正的问题。


用户仍然可以body { font-size: XYZ; }通过body { font-size: ZYX !important; }
Peter Taylor

Answers:


25

但是,例如,如果我在body标签中定义字体大小,这种效果将被消除。

body {
  font-size: 16px;
}

因为现在我的CSS覆盖了浏览器设置的字体大小。

您忘记了可访问性

C14:使用EM单位的字体大小Web内容无障碍指南(WCAG 2.0)。

将浏览器的字体大小选项设置为“ 非常大”。现在访问诸如W3C的网站。文字看起来如何?

这就是该选项的含义。StackExchange和许多其他网站的开发人员认为,他们的选择比可能有视觉障碍的用户的选择更为重要。这个选择是对还是错在这个问题的范围之外,答案不一定是直接的。

但是,您可能被迫(包括某些网站的法律)做出不同的决定,并让用户选择其字体大小。在这里,您可以选择:以像素为单位指定图像的大小和页面的不同区域,在这种情况下,浏览器的字体大小选项将对版面产生有趣的效果,或者将em这些元素用作好。

另请注意,如果您在主体级别指定以像素为单位的字体大小,则em至少在所有位置都坚持使用字体大小。例如,Google不一致地指定了字体大小,并且他们的搜索页面看起来很奇怪,尤其是标题看起来比普通文本小。另一方面,em只要指定了字体大小,维基百科就可以出色地工作。以下是Chromium渲染的两个网站的屏幕截图,其中字体大小选项设置为“ 非常大”

在此处输入图片说明

在此处输入图片说明

因此,您可能会争辩说,在body标签中设置字体大小是一个坏主意,因为它会阻止用户自己的辅助功能设置。但是,考虑到用户可以缩放以增加大小(这也会成比例地增加所有像素),这似乎并不是一个真正的问题。

这是一个真正的问题,原因有两个。

首先,大多数浏览器都按站点存储缩放因子。如果您有视觉障碍,则将不得不在您访问的每个站点上一次又一次地缩放。糟透了 考虑到Web设计人员和开发人员当前对可访问性的漠不关心,视障人士无论如何都必须这样做,但这并不意味着它应该保持这种状态。

其次,太多的网站在缩放时都无法在视觉上表现良好。响应式网站的效果不错,但非响应式网站将显示水平滚动或某种“您的屏幕太小”的行为。

对于开发人员而言,缩放和文本缩放之间也存在根本的区别。虽然em表示“根据用户的文本大小首选项进行调整”,但缩放是关于上下缩放整个页面,而不仅仅是文本。

以网站菜单为例(在页面顶部,链接位于一行中)。通过缩放,您知道菜单的高度将与其他元素成比例地变化。使用文字大小选项,由您决定行为。您可能会假设视障人士50px在所有情况下都能看到您的-height菜单:没有人会错过白色背景上的黑色菜单。或者,例如,您可以决定其高度应与文本成比例1.5em


13

ems的要点是根据基本字体大小定义网页中的所有度量

这可能是我对术语的误解,但需要澄清的em是:相对于“当前元素”的字体大小。rem相对于根字体大小。

我了解到,在较旧的浏览器时代,ems非常重要,因为放大页面只会放大字体。

这不是我使用em的原因。实际上,当您使用相对度量单位时,您的缩放体验是我心中的最后一件事。我的关注有两个方面。

首先,我通常对简单地以相对术语定义布局感兴趣。我担心的是,我的容器彼此之间以及其中的文本看起来都很好。而且,当我更改字体或调整链中的内容时,我不想手动重新计算和更新所有内容以保持要拍摄的比例。让浏览器进行数学运算...

其次,我只想用我能理解的简单术语来表示字体大小。如果我用表示pts的基本字体,而用rems或ems表示的其他字体,则对我来说比较容易。我不必知道设备的分辨率,也不必缩放。您的浏览器知道要使用多少像素。我们俩都不必考虑这一点。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.