这是一篇很棒的文章,将帮助解释px/em/rem之间的区别。
https://www.futurehosting.com/blog/web-design-basics-rem-vs-em-vs-px-sizing-elements-in-css/
此外,以下内容可能会有用:https://css-tricks.com/rems-ems/
编辑
由于@Jesse Kernaghan评论说上面的链接容易损坏,因此我将概述PX与EM与REM之间的差异。
px
像素是绝对测量单位,这意味着它们的大小不受其他任何东西的影响。实际上,它们在各处的长度并不相同,因为特定设备对它们的处理方式不同,但在每个设备上像素始终相同。您笔记本电脑显示器上的16px
与您的iPad上的16px
不同。 像素是绝对的但不一致的。
em
当px
是长度的绝对度量时,em
相对于父元素的字体大小。 以以下示例为例:
div{ font-size: 22px; }
p{ width: 200em; margin: 3em; font-size: 0.8em;}
<div>
<p>Some text</p>
</div>
现在,如果您想将
p
元素的大小减半,只需要将周围的
<div>
的字体大小更改为
11px
即可。这种度量单位在响应式布局中非常有用。
然而,
em
存在问题。因为所有元素都是相对于其父级调整大小,所以随着元素嵌套,
em
的含义也会改变。如果您扩展上面的示例并在
<p>
中嵌套一个具有
0.5em
字体大小的
<blockquote>
,则结果可能不是预期的结果。结果将是
<p>
的字体大小等于
11px
,但是
<blockquote>
的字体大小将再次减半,因为
em
是相对于直接祖先 (
<p>
) 而不是
<div>
的。
rem
Rems(根em)类似于em
,但它们始终相对于<html>
元素的font-size
。不管一个元素嵌套多深都没有关系。
结论
所以,通过简短的解释,Chris Coyier在他的文章https://css-tricks.com/rems-ems/中提出了一个基本概念。它基本上概述了设置基本的html
字体大小,然后使用px
进行媒体查询调整(请记住,这是绝对测量)。在这些媒体查询内,一切您要做的就是缩小字体大小。然后您使用rem
设置主要元素,并使用需要与主要元素一起缩放的元素使用em
。Chris Coyier的代码示例如下:
html {
font-size: 17px;
}
@media (max-width: 900px) {
html { font-size: 15px; }
}
@media (max-width: 400px) {
html { font-size: 13px; }
}
.header {
font-size: 1.5rem;
}
.footer {
font-size: 0.75rem;
}
.sidebar {
font-size: 0.85rem;
}
h1 {
font-size: 3em;
}
h2 {
font-size: 2.5em;
}
h3 {
font-size: 2em;
}