粗俗的理解px、em &rem
相信大家都知道这个单位的概念,很多朋友可能会有点模糊,下面我就简单说一下我的理解。 个人理解仅供参考错误之处望读者批评指出。
首先大家在做网页早期的时候都是使用
px作为单位处理html标签。后面由于移动端的兴起以及响应式的要求引出了em&rem的概念。具体背景有兴趣的读者自己查阅。其次说下三者的差别。大家都知道
px是以像素点为单位一个px就是一个像素点,通常我们在设置网页的时候会设置页面字体为多少个px如12px14px···20px等。那么一旦设置了这些大小之后页面的字体大小就被局限了。比如说我们在做pc端网页的时候设置字体大小为16px因为pc端分辨率较高阅读起来也很好。但是如果是使用 移动端去访问同一个页面的时候16px像素的字体在移动端显得略大,整体的体验感较差。为了适应不同分辨率下的阅读,所以我们就像可不可以引入一个单位根据屏幕的分辨率的大小不同而动态的显示字体的大小。所以就引入em与rem的概念。二者的大小也是相对px而言的。但是两者会根据父节点元素的大小而改变其字体的大小。通常可以这样理解 1em == 1rem == 16px; 其中em的大小是相对于父节点的字体大小而定的如果父节点没有设置字体大小那就会默认逐级往上一级查找,如果都没有设置那么会默认以根节点html的字体大小为父节点大小做参考(html默认字体大小为16px)。而rem则是相对于html根节点的字体大小而定的。怎样理解呢?下面我们举个例子。
<style type='text/css'>
.d1{
font-size:12px;
}
.p1{
font-size:2em; /*由于em 是相对于父节点d1而言所以这里的2em 就相当于font-size:24px; */
}
</style>
<div class='d1'>
<p class='p1'>我的大小是2em</p>
</div>
<style type='text/css'>
.d1{
font-size:15px;
}
.p1{
font-size:2em;/*由于em 是相对于父节点而言,但是父节点d2 未设置字体大小所以会往上逐级查找,找到d1 设置了字体大小,所以以d1为父节点作参考那么这里的2em 就相当于font-size:30px; */
}
</style>
<div class='d1'>
<div class='d2'>
<p class='p1'>我的大小是2em</p>
</div>
</div>
<style type='text/css'>
.p1{
font-size:2em;/*由于em 是相对于父节点而言,但是父节点d2 未设置字体大小所以会往上逐级查找,但是父级节点均为设置字体大小,所以p1 以html根节点(默认为16px)为父级参考元素。那么这里的2em 就相当于font-size:32px; */
}
</style>
<div class='d3'>
<div class='d1'>
<div class='d2'>
<p class='p1'>我的大小是2em</p>
</div>
</div>
</div>
- 说完
em那rem也很好理解,rem相对于html根节点为参考,也就是说如果你的页面内的单位都已rem为单位,那么多有的大小都是参考HTML根节点做参考的如果你改变了HTML根节点的字体大小就会改变全局以rem为单位设置的字体大小。这里也引入了媒体查询的概念,在移动端的设置也就是根据媒体查询改变根节点的字体大小从而改变全局的字体大小以便于在不同的屏幕宽度下给用户一个良好的体验。举个例子:
<style type='text/css'>
.d1{
font-size:12px;/* */
}
.d2{
font-size:10px;/* */
}
.p1{
font-size:2rem;/* 这里由于rem实现对与根节点而言所以这里的2rem就等于32px*/
}
</style>
<div class='d3'>
<div class='d1'>
<div class='d2'>
<p class='p1'>我的大小是2rem</p>
</div>
</div>
</div>
<style type='text/css'>
html{
font-size:62.5%;
}
.d1{
font-size:12px;/* */
}
.d2{
font-size:10px;/* */
}
.p1{
font-size:2rem;/* 这里由于rem实现对与根节点而言,但是根节点的font-size大小设置为62.5% 也就是 16*62.5% = 10px;所以这里的2rem就等于20px, 特别注意这里很多时候会看见很多页面的根节点的font-size都是写为62.5%;这里是以10px 为单位参考的读者一定要注意。*/
}
</style>
<div class='d3'>
<div class='d1'>
<div class='d2'>
<p class='p1'>我的大小是2rem</p>
</div>
</div>
</div>
- 下面给大家做一个参考,如果没有设置
html字体大小,所以默认的16px,那么px与rem换算如下:
| px | <==> | rem |
|---|---|---|
| 12 | 12 / 16 | .75 |
| 14 | 14 / 16 | .875 |
| 16 | 16 / 16 | 1 |
| 18 | 18 / 16 | 1.125 |
| 20 | 20 / 16 | 1.25 |
| 24 | 24 / 16 | 1.5 |
| 30 | 30 / 16 | 1.875 |
| 36 | 36 / 16 | 2.25 |
| 42 | 42 / 16 | 2.625 |
| 48 | 48 / 16 | 3 |
- 如果设置html字体大小为62.5%,所以默认的16px,那么px与rem换算如下:
| px | <==> | rem |
|---|---|---|
| 12 | 12 / 10 | 1.2 |
| 14 | 14 / 10 | 1.4 |
| 16 | 16 / 10 | 1.6 |
| 18 | 18 / 10 | 1.8 |
| 20 | 20 / 10 | 2.0 |
| 24 | 24 / 10 | 2.4 |
| 30 | 30 / 10 | 3.0 |
| 36 | 36 / 10 | 3.6 |
| 42 | 42 / 10 | 4.2 |
| 48 | 48 / 10 | 4.8 |
说明:因为个人知识局限,以上内容有很多不住之处,仅供读者参考,如果意见请批评指出。谢谢…

747

被折叠的 条评论
为什么被折叠?



