在字体大小为xx的段落中,使用1em作为左边距,比使用16px给我更多的边距。当1em等于16px时,这怎么可能呢?
em
使用所应用元素的font-size
,因此其px
大小不是恒定的。您可以使用rem
单元,它总是使用浏览器的默认font-size
(16px(。
您混淆了em
和rem
。正如其他人已经写过的,em
使用元素的字体大小,而rem
使用基本字体大小。这可以定义为html
标签的字体大小。如果未定义,则返回浏览器设置,默认情况下大多数时间为16px(但用户也可以在浏览器设置中更改(。
EM使用元素字体大小。因为你在段落中给出了font-size: xx-large
,所以字体大小不是16px,而是32px。
使用em
单位作为边距将使用它所应用的元素中的font-size
。除非它恰好是16px
,否则它将不会与显式16px
边距匹配。
p {
margin: 0;
font-size: 20px;
}
.em {
margin-left: 1em;
}
.px {
margin-left: 16px;
}
<p class="em">1</p>
<p class="px">2</p>