REM与EM:如何选择正确的CSS单元

REM与EM:如何选择正确的CSS单元

你可能不会在晚上梦到 CSS 元素的大小,但如果你正在构建一个网站或应用程序,这个话题绝对值得思考。

有些 CSS 单元能很好地配合你的响应式设计,而另一些则可能表现出反叛的倾向。如果能分辨出不同的字符,就能省去很多麻烦。

比如 REM 和 EM 的搭配。你应该使用哪一种,为什么?

在接下来的几段中,我们将为您揭晓答案!

REM 与 EM 简述

如果您想快速找到答案,这里有一个简短的答案

  • REM:该单元基于根元素(通常是 <html> 标签)。无论页面上发生了什么,你的尺寸都将保持一致。
  • EM:该单元向上寻求指导。如果父元素发生变化,你的尺寸也会跟着变化。

如果你想记住两者的区别,请记住 REM 中的 “R” 代表根。

REM 与 EM 简述

:为什么两个单位都以 “EM” 结尾?这不是缩写。早在所有文字都是印刷品的时候,排字工人就用大写字母 M 的宽度作为文字大小的基准。很有趣吧?

那么,你应该使用哪一个呢?

这要看情况。

如果你想让文字适应周围的环境,EM 可能是更好的选择。但如果你希望整个网站的文字大小保持一致,就应该改用 REM。

为什么?

  • EM:更灵活,但一不小心就会乱套。
  • REM:大小一致,非常适合响应式设计。

还在困惑吗?别担心,我们马上会深入探讨。

现在只需记住这一点: 对于大多数网站来说,REM 通常是更安全的选择

了解 REM 和 EM

好吧,让我们来深入了解一下。

REM 和 EM 都是相对单位。这意味着它们 相对 于特定的尺度保持相同的大小 。

这种尺寸在响应式设计中起着关键作用。

绝对尺寸(如 px)始终保持不变,这意味着文字在台式机上看起来很小,而在手机上却很大。相比之下,相对单位可以适应不同的设备和布局。

在数字环境中,REM 和 EM 仍主要用于测量文本。不过,您也可以将这些单位用于以下方面

  • 边距
  • 填充
  • 宽度和高度
  • 行高
  • 边框属性
  • 框阴影
  • 定位
  • 媒体查询

换句话说,只要你想在设计中灵活调整大小,REM 和 EM 就能派上用场。

好了,这两个单元的共同点就介绍到这里。

现在,让我们仔细看看它们各自的独特之处。

了解 REM

REM 代表 “root em”。使用该单位时,您要定义的是相对于根元素(通常是 <html> 标记)的字体大小而言,某些内容应该有多大。

大多数浏览器默认根元素的字体大小为16px。不过,最好使用 CSS 来定义默认字体大小。

您可以这样做

html { font-size: 16px; /* Your base font size */ }

无论您选择的字体大小是多少,都会变成 1rem。这就是整个页面的新基线。

相对于您选择的默认值,任何增大或减小的数字都会改变目标元素的大小。

要解释清楚有点复杂,下面是一个简单的例子:

html { font-size: 16px; /* Your base font size */ }
body { font-size: 1.2rem; /* 19.2px */ }
h1 { font-size: 2.4rem; /* 38.4px */ }

在这种情况下,我们将 <html> 标记的字体大小定义为 16px。这就是我们的基准值 1rem

我们希望正文文本比它大一点。因此,我们将 <body> 字体大小设置为 1.2rem。这就是基线的 120%。

页面的主标题需要大一些。通过将 <h1> 字体大小设置为 2.4rem,我们可以使标题的大小达到基线的 240%。

最终的结果会是这样的:

REM中的字体大小

为什么使用 REM?

该系统有哪些优势?

在 CSS 中,REM 设备具有一些相当不错的优点:

  • 真正的一致性:所有内容都会根据根大小按比例缩放,因此您的设计在任何设备上都会呈现您想要的效果。
  • 响应性:按比例缩放意味着您的网站或应用程序可以适应各种设备。
  • 易于维护:当您的所有样式都基于相同的根设置时,就很容易根据需要进行全面更改–您不需要访问每一个元素并手动更改字体大小。这也为您节省了大量时间。
  • 极大的可访问性:很多人实际上都会更改浏览器的默认字体大小,以方便阅读文本。通过使用 REM 大小,您的设计可以适应这些用户的偏好。

当然,这并不全是阳光和彩虹。也有一些缺点:

  • 第三方通配符:如果你的网站包含嵌入式内容,你可能会发现文本和其他元素并不遵循你的 REM 规则。
  • 计算困难:要计算出 1.2rem 究竟有多大,需要一些数学计算。
  • 权力越大,责任越大:当你可以如此轻松地改变整个网站的文字大小时,你需要谨慎编辑,以避免整个网站的设计灾难!

一般来说,大多数项目都应使用 REM。它比 EM 大小更容易处理,结果也更容易预测。

不过,有时 EM 也很有用。

了解 EM

EM 是一个棘手的东西。该单元基于其父元素的字体大小–就像变色龙适应周围环境一样。

当你开始嵌套时,混乱就开始了。大多数元素都会从父元素那里继承默认字体大小。但如果父元素也使用 EM 大小呢?很容易就会出现比例混乱的情况。

下面是一个简单的例子:

假设你有一个包含 <div> 的页面在该框内,我们有一个 <p> 标签,其中包含一些文本。

<html>
<div>
<p>Some text here.</p>
</div>
</html>

现在,看看这个 HTML 代码段的 CSS:

html { font-size: 16px; /* Starting default size */ }
div { font-size: 1.2em; /* 19.2px */ }
p { font-size: 1.2em; /* 23.04px */ }

我们首先定义了整个页面的默认字体大小。到目前为止,一切顺利。

接下来,我们规定 <div> 内容的字体大小应为 1.2em。换句话说,我们的文本应该是父元素默认值的 120%。

最后,我们还将 <p> 的字体大小设为 1.2em

RM中的字体大小

等一下!以像素为单位,文字大小明显增大。

这是为什么呢?

<p> 元素查看了其父 <div> 的字体大小 19.2px,并将其作为默认大小。因为我们要求的是 1.2em,所以我们得到的文字是默认大小的 120%。

使用 EM 单元时很容易出现这类错误。

EM 非常适合特定尺寸

除了缺点之外,EM 单元对于特定组件的大小也非常有用。

假设您想创建一个按钮,它在父元素中占据的空间始终大致相同。

您的 HTML 代码可能是

<button class='button'>Click Me</button>

要设置按钮的样式,您可以使用 EM 单位来设置 font-sizepadding

CSS 将如下所示:

.button {
    font-size: 1em; /* Size relative to the parent text size */
    padding: 0.5em 1em; /* Padding scales with the font size */
}

上面的代码为我们提供了一个简单的按钮,并在文字周围加了一点衬垫。

EM 非常适合特定尺寸

如果父元素的字体大小向上缩放,按钮的字体大小和填充也会跟着向上缩放。

这样,即使改变设备或缩放级别,也能在父元素中保持相同的视觉平衡。

为什么要使用 EM?

既然有这么多困惑,为什么还要使用 EM 呢?

嗯,它确实有一些好处:

  • 上下文缩放:元素根据其父元素的大小进行缩放,让你对整个设计的大小控制更加细致入微。
  • 基于组件的设计:EM 单元非常适合创建独立的、可重复使用的、保持相同比例的组件。
  • 精确控制:您可以在每个文档结构层次上对尺寸进行微调,而无需进行全面更改。
  • 反应灵敏:与 REM 一样,EM 单元可以让你的设计适应不同的屏幕尺寸和用户偏好。

正如我们所看到的,它也有一些缺点:

  • 复合效应:嵌套元素可能会导致意想不到的尺寸,因为 EM 值会开始叠加。
  • 维护难题:更改父元素的字体大小会影响所有子元素,这可能会导致意想不到的后果,例如正文文字过大,标题过小。
  • 大型项目的复杂性:随着项目的增长,跟踪所有相对大小可能会变得非常具有挑战性。

总之,EM 对于基于组件的设计以及需要精确控制元素关系时非常有用。它比基于像素的尺寸更灵活,但需要比 REM 更仔细的规划。

REM 还是 EM:您应该使用哪一种?

好了,以上就是很多有趣的信息。不过,如果你正在制作一些东西,你只需要知道该使用哪个 CSS 单元。

以下是我们的结论:

  • 对于大多数项目来说,REM 是更好的选择,因为它更具可扩展性,也能提供更好的控制。
  • 对于涉及嵌套样式的特定情况,EM 是一种有价值的工具

值得注意的是,REM 和 EM 一般都比 px 等绝对单位更适合现代设计。

与视口单位(vh/vw)和百分比(%)等其他相对单位相比,REM 和 EM 也更适用于调整文字大小。

让我们从鹰眼的角度来看看 REM 与 EM 的对比:

特征 REM EM
继承性 与 root 要素保持一致 相对于父元素
可扩展性 优秀 更有限
复杂性 较低,因为一致性 由于上下文大小的影响而更高
可维护性 简单–根元素尺寸的变化是级 嵌套元素可能更棘手
可访问性 与用户偏好配合良好 可能需要调整
最适合 全局间距和布局 特定组件缩放

常见问题解答

本指南应该已经消除了围绕这两个非常相似的单位的大部分困惑。

但如果你仍有疑问,这里有你需要知道的!

响应式设计应该使用 REM 还是 EM?

对于响应式设计来说,REM 通常是更好的选择,因为它可以让你创建适应不同屏幕尺寸的一致且可扩展的布局。

唯一的例外是当你想创建离散单元时,所有元素都保持相同的尺寸比例。

使用 EM 单元时如何避免复杂性?

为避免 EM 单元的复杂性,请尽量限制元素的嵌套。在全局大小调整中使用 REM,而在特定组件内的细微调整中使用 EM。

REM 有推荐的基本字体大小吗?

虽然没有严格的规定,但 REM 的常用基本字体大小为 16px。不过,您也可以根据自己的设计偏好和可访问性要求选择任意值。

深入了解 CSS

想进一步了解数字设计?我们有大量优秀的 CSS 学习资源:

响应式设计的重要性

正如我们在本指南开头提到的,CSS 单元是一个经常被忽视的组件。

然而,如果你想创建一个在任何设备上都美观大方、适合所有用户使用的网站或应用程序,那么考虑设计细节就显得尤为重要。

REM 还是 EM 的争论最终并不重要–最重要的是您的网站易于访问、响应迅速且易于使用!

评论留言