我们有一个类似以下规则的CSS文件:
.directory-result ul
{
margin-top: 20px;
width: 60em;
}
.about-text
{
margin-top: 1em;
margin-bottom: 1em;
}
一切正常运作,但我们特别关注margin-top值之间的不一致性。其中一个是20px,另一个是1em。
应该使用哪个最好?在决定使用哪个时需要考虑哪些因素?谢谢。
我们有一个类似以下规则的CSS文件:
.directory-result ul
{
margin-top: 20px;
width: 60em;
}
.about-text
{
margin-top: 1em;
margin-bottom: 1em;
}
一切正常运作,但我们特别关注margin-top值之间的不一致性。其中一个是20px,另一个是1em。
应该使用哪个最好?在决定使用哪个时需要考虑哪些因素?谢谢。
em
单位用于在页面的缩放比例变化时更好地实现页面元素的可伸缩性,特别是对于旧浏览器(如IE6)和移动平台来说尤为重要。
px
单位用于表示绝对值,而em
相对于特定元素的字体大小。 1em
表示一行字体,例如你有一个字体大小为12px
的框,那么1em将等于12px
。px
似乎更容易,因为您知道确切的值,但是em
单位会继承其容器的值。<p>Text</p>
<div class="box">
<p>Lorem</p>
</div>
p {
font-size: 1.2em;
}
.box {
font-size: 1.2em;
}
在这种情况下,第一个<p>
的字体大小将等于基本字体大小*1.2,而第二个<p>
将以字体大小*1.2*1.2显示。EMS单位相对于浏览器中的当前字体大小。因此,如果用户增加字体大小*,或者您在CSS中更改元素的字体大小,则边距应该仍然与文本成比例地看起来“正确”。
*(如果用户缩放页面而不是增加文本大小(在Firefox和Chrome中现在是默认选项,在IE中也是一个选项),则这将不再重要)。
如果您使用边距来使某些内容与其他内容保持固定像素距离,则显然应该坚持使用像素。
directory-result ul
代表一个块 - 类似于列表/菜单,像素尺寸非常重要。我们不能总是依赖定义文本大小的em
,因为如果由于某些背景图像需要20px空间-好吧,我们需要20px,没有妥协。em
- 我说的是文本块。我猜测在您的代码中,about-text
放置在其他文本中,其中添加1em(文本高度)的顶部/底部边距是有意义的。就像在任何文本编辑器(例如MS Word中的行距)中一样- 当行之间的间距由文本高度乘以定义时,文本看起来最好pixels
。
无论何时您在文本块内处理文本,并且希望在文本节点之间添加均匀的间距-请使用em
。