一. 相对长度单位
1. em是相对于当前元素的字体大小。(设置font-size
时特殊)
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
div{
font-size:30px;
}
.p1{
font-size:20px;
text-indent:1em;
}
.p2{
font-size:20px;
text-indent:20px;
}
.p3{
text-indent:1em;
}
</style>
</head>
<body>
<div>
<p class="p1">hello world - 设置了自身元素的字体大小</p>
<p class="p2">hello world - 设置了自身元素的字体大小</p>
<p class="p3">hello world - 没有设置自身元素字体大小</p>
</div>
</body>
</html>
- 我们设置父元素
div
字体大小为30px -
p1
设置了自身元素的字体大小为20px
,缩进设置为1em
。 -
p2
设置了自身元素的字体大小为20px
,缩进设置为20px
。 - 最终效果,
p1
和p2
的字体大小都为20px
,缩进都为20px
,和明显text-indent
内的em
是相对于自身元素的字体大小计算的。 -
p3
没有设置自身元素的字体大小,最终效果是:字体大小为30px
,缩进也为30px
。 - 既然如此,那
em
不是相对于父元素字体大小吗?p3
其实是继承了继承了父元素的字体大小,也就是说p3
的font-size
也是30px
,然后text-indent
的em
其实也是根据p3
的自身元素字体大小计算的。
为什么有时候说em是根据父元素的字体大小计算呢?
- 因为在设置
font-size
的时候可以这么理解。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
div{
font-size:30px;
}
p{
font-size:1em;
}
</style>
</head>
<body>
<div>
<p>hello world</p>
</div>
</body>
</html>
- 在给子元素设置
font-size
时发现em
的确是相对于父元素的字体大小。其实也很好理解,因为设置子元素的font-size
时,元素的字体大小还没有,那怎么参考自己呢?答案就是参考父元素。
2. rem是全部的长度都相对于根元素<html>
- em需要考虑父元素的关系,html的结构有时候是比较复杂的,每次使用em都要考虑的话不利于维护。
- rem直接统一参考系为根元素,每次使用rem时先设置
<html>
的字体大小。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style>
html{
font-size:25px;
}
p{
font-size:2rem;
}
</style>
</head>
<body>
<p>hello world</p>
</body>
</html>
网友评论