CSS单位px、em、rem及它们之间的换算关系
作者:
WangMin
格言:努力做好自己喜欢的每一件事
国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem,那么三者的区别与优势是什么?接下来我们就来学习一下吧!

单位px、em、rem分别表示什么?
1、 px(Pixel) 相对于显示器分辨率而言,表示“绝对尺寸”(并非真正的绝对),实际上就是css中定义的像素(这里的像素与设备的物理像素有一定的区别),利用px设置字体大小及元素宽高等比较稳定和精确。px的特点如下:
- IE无法调整那些使用px作为单位的字体大小;
- 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位;
- Firefox能够调整px和em,rem,但是96%以上的中国网民使用IE浏览器(或内核)。
- px不能适应浏览器缩放时产生的变化,因此一般不用于是响应式网站。
2、em 表示相对尺寸,其相对于当前对象内 (父级元素) 文本的字体尺寸 font-size(如当前对行内文本的字体尺寸未被设置,则相对于浏览器的默认字体尺寸。 任意浏览器的默认字体高都是16px。所有未经调整的浏览器都符合:1em = 16px。)。使用em可以较好的相应设备屏幕尺寸的变化,但是在进行元素设置时都需要知道父元素文本的font-size及当前对象内文本的font-size,如有遗漏可能会导致错误。em的特点如下:
- em的值并不是固定的;
- em会继承父级元素的字体大小。
3、rem 为css3新增的一个相对单位,使用rem为元素设定字体大小时,仍然是相对大小,但是rem只相对于HTML根元素的font-size,因此只需要确定这一个font-size。使用rem的好处是只修改根元素就可以成比例的调整所有字体的大小,又可以避免字体大小逐层复合的连锁反应。
目前,除了IE8及更早版本外,所有浏览器均已支持rem。以下是我在 caniuse对rem属性的兼容表:

对于不支持它的浏览器,应对方法也很简单,就是多写一个绝对单位的声明。这些浏览器会忽略用rem设定的字体大小。如下:
元素{
font-size:14px;
font-size:2rem;
}
rem、em与px间的换算关系
1、 px与em之间的换算关系
任意浏览器的默认字体大小16px。所有未经调整的浏览器都符合: 1em=16px。那么12px=0.75em,10px=0.625em,这样换算起来有点麻烦,而且容易换算出错。所以,为了简化font-size的换算,我们可以制定一个单位换算基准:需要在css中的body选择器中声明font-size=62.5%,代码如下:
body{
font-size:62.5% ;
}
这就使em值变为 16px*62.5%=10px, 这样12px=1.2em, 10px=1em, 也就是说只需要将你的原来的px数值除以10,然后换上em作为单位就行了。基准对照表如下图:

总结:我们在写CSS的时候,需要注意以下两点:
1)body选择器中声明font-size=62.5%;
2)将你的需要转换的px数值除以10,然后换上em作为单位;
3)重新计算那些被放大的字体的em数值。避免字体大小的重复声明。
我们来举一个例子来说明一下:
<div>
<p> 你猜我字体是多大?em</p>
</div>
body{
font-size:62.5%;
}
div{
font-size:1.2em; //font-size=10 *1.2 =12px
}
p{
font-size:1.2em; //font-size= 12*1.2=14.4px
}
我们可以的到p的字体大小为14.4px,如下:

p的字体大小是怎么计算的呢?因为em相对于当前对象内 (父级元素) 文本的字体尺寸,p是div的子元素,div是body的子元素,要想的到p的字体大小就要先的到div的字体大小,因为body选择器中声明了font-size=62.5%,所以div的字体大小为1.2*10=12px,相当于div声明了font-size=75%(1em=12px),因为p:1.2em,所以p的字体大小转换为px:12*1.2=14.4px。这里就应证了em单位的缺点。
2、 px与rem之间的换算关系
从上面可以得到rem是一个相对大小的值,它相对于根元素,浏览器的默认字体尺寸也是16px。这时 px与rem之间的换算是1rem=16rem。下面是默认16px与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的字体大小的值为html{font-size: 87.5%;}(也就是1rem=14px)。然后其他的字体大小就是将你要的值除以14得到的值加上 rem 单位。上面的14是个变量,相对于你对根元素html字体大小的设定,如果你设定的是62.5%,那除数就变成10了。如果你根元素的字体大小选62.5%,那px和rem之间的换算就是px直接除以10就得到rem了。为了简化font-size的换算,我们在html中也可以写入以下代码:
html{
font-size: 62.5%; /* 公式16px*62.5%=10px */
}
此时,上面示例中所示的值将会改变:
| 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 |
我们来举一个例子来说明一下:
<div>
<p> 你猜我字体是多大?rem</p>
</div>
html{
font-size: 62.5%; /* 公式16px*62.5%=10px */
}
div{
font-size:2rem;
}
p{
font-size:2rem;
}
我们可以得到p的字体大小转换为px为:20px

p的字体大小是怎么计算的呢?因为rem只相对于HTML根元素的font-size,所以rem 以html{ font-size: 62.5%; }为转换基准 公式16px*62.5%=10px相当于1rem=10px,然后就可以得到p的字体大小:10*2rem=20px。
注意:
- 若没有在根元素(html字体)指定参照值,那浏览器默认1rem 就是16px,若指定值,则1rem就是指定值 。
- html设置为62.5%或者10px 时会失效,是因为小于12px或者75%的字体大小不支持换算。这可能与有些浏览器不支持12px 以下的大小有关。所以,使用rem单位,html的字体默认字体大小必须设置为12px或以上。若小于12px则浏览器换算时自动默认字体为12px。
总的来说,为了简化font-size的换算,我们通常将rem与em的换算基准设置为 font-size : 62.5%; ,则此时1rem=1em = 16px * 62.5% = 10px, 这样10px = 1em=1rem,方便于我们使用。
以上仅是个人见解,若有不足之处欢迎在下方评论指出,那就先分享到这里!! 后续继续更新!!
CSS单位px、em、rem及它们之间的换算关系的更多相关文章
- css单位px,em,rem区别
在css中单位长度用的最多的是px.em.rem,这三个的区别是: px是固定的像素,一旦设置了就无法因为适应页面大小而改变. em和rem相对于px更具有灵活性,他们是相对长度单位,意思是长度不是定 ...
- css 单位 px em rem
http://www.cnblogs.com/leejersey/p/3662612.html
- css大小单位px em rem的转换和详解
css大小单位px em rem的转换和详解 PX特点1. IE无法调整那些使用px作为单位的字体大小:2. 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位:3. Firefox能 ...
- css中px,em,rem,rpx的区别
今天看到一个面试题为 px,em的区别,为了更好地让读者区分css的长度单位,我总结下css中常用的长度单位: px,em,rem,rpx 像素px是我们在定义CSS中经常用到的尺寸大小单位,而em在 ...
- 详细讲解css单位px,em和rem的含义以及它们之间的区别
一.首先介绍一下px px就是css中最基本的长度单位了,用px做单位基本上没什么问题,可以做到让页面按套路精确的展现! 可但是!但可是!如果全篇用px布局会暗藏一个蛋疼的问题,就是当用户和Ctrl滚 ...
- css里px em rem特点(转)
1.px特点: 1.IE无法调整px作为单位的字体大小: 2.Firefox能够调整px.em和rem. px是像素,是相对长度单位,是相对于显示器屏幕分辨率而言的. 2.em特点: 1.em的值并不 ...
- 搞清css的单位 px,em,rem的区别
前言:现在上大街一眼望去,基本上90%的人都拿着手机,走路,逛街,吃东西都不停着,所以对于我们这种前端开发的程序猿来说,让网页适应于移动端可以说是必须要满足的.所以最近也是一直在学习和实践.然后就接触 ...
- CSS尺寸单位 % px em rem 详解
在CSS中,尺寸单位分为两类:相对长度单位和绝对长度单位.相对长度单位按照不同的参考元素,又可以分为字体相对单位和视窗相对单位.字体相对单位有:em.ex.ch.rem:视窗相对单位有:vw.vh.v ...
- Css单位px,rem,em,vw,vh的区别
px px就是pixel像素的缩写,相对长度单位,网页设计常用的基本单位.像素px是相对于显示器屏幕分辨率而言的 em em是相对长度单位.相对于当前对象内文本的字体尺寸(参考物是父元素的font-s ...
- css中px em rem vw vh vmax vmin等单位的区别--转载
px:绝对单位,页面按精确像素展示 em:相对单位,基准点为父节点字体的大小,如果自身定义了font-size按自身来计算(浏览器默认字体是16px),整个页面内1em不是一个固定的值. rem:相对 ...
随机推荐
- DDD架构为什么应该首选六边形架构?
一.传统分层架构 分层架构的一个重要原则是:每层只能与位于其下方的层发生耦合. 分层架构分两种:一种是严格分层架构,规定某层只能与直接位于其下方的层发生耦合:另一种是松散分层架构,允许任意上方层与任意 ...
- while(1) ; CPU 会一直等下去吗
标题答疑 不会,计算机从外部设备读取数据到存储器,每读取1word的数据,CPU对外设状态进行一次检查. 可能有小伙伴看到这就要退出了,别急,看下去或许会有收获. 首先解决第一个问题:一个字是多少字节 ...
- 面试再也不怕问ThreadLocal了
要解决多线程并发问题,常见的手段无非就几种.加锁,如使用synchronized,ReentrantLock,加锁可以限制资源只能被一个线程访问:CAS机制,如AtomicInterger,Atomi ...
- 代码随想录算法训练营第八天| LeetCode 344.反转字符串 541. 反转字符串II 151.翻转字符串里的单词
344.反转字符串 卡哥建议: 本题是字符串基础题目,就是考察 reverse 函数的实现,同时也明确一下 平时刷题什么时候用 库函数,什么时候 不用库函数 题目链接/文章讲解/视频讲解:https: ...
- 配置MySQL主从复制(一主一从)
前言 MySQL主从复制简介 MySQL主从复制的目的是实现数据库冗余备份,将master数据库的数据定时同步到slave库中,一旦master数据库宕机,可以将Web应用数据库配置快速切换到slav ...
- GitOps 与 DevOps:了解关键差异,为企业做出最佳选择
在软件开发领域,GitOps 和 DevOps 是加强协作和实现软件交付流程自动化的重要技术.虽然这两种模式都旨在提高软件开发生命周期的效率,但它们的核心原则和实施方式却各不相同. 本篇文章将帮助您了 ...
- 深入探讨安全验证:OAuth2.0、Cookie与Session、JWT令牌、SSO与开放授权平台设计
什么是认证和授权?如何设计一个权限认证框架? 认证和授权是安全验证中的两个重要概念.认证是确认身份的过程,用于建立双方之间的信任关系.只有在认证成功的情况下,双方才可以进行后续的授权操作.授权则是在认 ...
- 《Kali渗透基础》04. 主动信息收集(一)
@ 目录 1:主动信息收集 2:发现 3:二层发现 3.1:arping 3.2:nmap 3.3:netdiscover 3.4:Scapy 4:三层发现 4.1:ping 4.2:Scapy 4. ...
- Iphone常用工具
iFunBox itools 百度助手 崩溃日志的路径 /var/mobile/Library/Logs/CrashReporter
- redis单机、主从、哨兵、集群以及redisson分布式锁
1.搭建集群 Linux系统的Redis各版本下载路径:https://download.redis.io/releases/,建议下载5.0以上的版本,下载后进行解压安装 (1)单机版 安装环境 y ...