css中px、em、rem的区别是什么?


本文摘自PHP中文网,作者青灯夜游,侵删。

区别:px表示像素,是相对长度单位,是相对于显示器屏幕分辨率来设置字体大小的,不支持IE的缩放;em是相对长度单位,是相对于其父元素来设置字体大小的,支持IE的缩放;rem是相对长度单位,是相对HTML根元素来设置字体大小的。

推荐教程:CSS视频教程

PX,EM和REM的定义

px表示像素,不会因为其他元素的尺寸变化而变化。

像素的大小是会“变”的,也称为“相对长度”,越高位的像素,其拥有的色板也就越丰富,越能表达颜色的真实感。

em表示相对于父元素的字体大小,em是相对单位,没有一个固定的度量值,而是由其他元素尺寸来决定的相对值。

em是相对长度单位,相对于当前对象内文本的字体尺寸,如当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸,国外使用比较多。

任意浏览器的默认字体高都是16px,所有未经调整的浏览器都符合:1em=16px。那么12px=0.75em;10px=0.625em;为了简化font-size的换算,需要在css中的body选择器中声明Font-size=62.5%,这就使em值变为:16px*62.5%=10px;这样12px=1.2em;10px=1em,也就是说只需要将你的原来的px数值除以10,然后换上em作为单位就行了。

REM是相对单位,是相对HTML根元素。这个单位可谓集相对大小和绝对大小的优点于一身,通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。

CSS样式表中px、em和rem单位的特点

一般情况下,我们平时都是用px来定义字体,所以无法用浏览器字体放大的功能,而国外大多数网站都可以在IE下使用,这主要是因为:

(1)、IE无法调整那些使用px作为单位的字体大小;

(2)、国外的大部分网站能够调整的原因在于其使用了em作为字体单位;

(3)、Firefox能够调整px和em,但是96%以上的中国网民使用IE浏览器(或内核)。

那么,css单位px、em和rem的特点分别是什么呢?

1、px的特点

PX实际上就是像素,用PX设置字体大小时,比较稳定和精确。

但是这种方法存在一个问题,当用户在浏览器中浏览我们制作的Web页面时,如果改变了浏览器的缩放,这时会使用我们的Web页面布局被打破,这样对于那些关心自己网站可用性的用户来说,就是一个大问题了。

因此,这时就提出了使用“em”来定义Web页面的字体。

2、em的特点

EM就是根据基准来缩放字体的大小,EM实质是一个相对值,而非具体的数值,这种技术需要一个参考点,一般都是以<body>的“font-size”为基准,如WordPress官方主题Twenntytwelve的基准就是14px=1em。

通常来说,em有如下特点:

(1)、em的值并不是固定的;

(2)、em会继承父级元素的字体大小。

所以,我们在写CSS的时候,需要注意以下3点:

(1)、body选择器中声明Font-size=62.5%;

(2)、将你的原来的px数值除以10,然后换上em作为单位;

如果只需要以上两步就能解决问题的话,可能就没人用px了。经过以上两步,你会发现你的网站字体大得出乎想象,因为em的值不固定,又会继承父级元素的大小,你可能会在content这个div里把字体大小设为1.2em, 也就是12px。

然后你又把选择器p的字体大小也设为1.2em,但如果p属于content的子级的话,p的字体大小就不是12px,而是1.2em= 1.2 * 12px=14.4px,这是因为content的字体大小被设为1.2em,这个em值继承其父级元素body的大小,也就是16px * 62.5% * 1.2=12px,而p作为其子级,em则继承content的字体高,也就是12px,所以p的1.2em就不再是12px,而是14.4px。

(3)、重新计算那些被放大的字体的em数值,避免字体大小的重复声明。

也就是避免1.2 * 1.2 = 1.44的现象,比如说你在#content中声明了字体大小为1.2em,那么在声明p的字体大小时就只能是1em,而不是1.2em,因为此em非彼em,它因继承#content的字体高而变为了1em=12px。

但是12px汉字例外,就是由以上方法得到的12px(1.2em)大小的汉字在IE中并不等于直接用12px定义的字体大小,而是稍大一点。这个问题已经解决,只需在body选择器中把62.5%换成63%就能正常显示了,原因可能是IE处理汉字时,对于浮点的取值精确度有限,不知道有没有其他的解释和优化方法(关于更多细节的优化,可查看马海祥博客《看看那些能提高效率却容易被人忽略的CSS细节》的相关介绍)。

3、rem的特点

rem是CSS3新增的一个相对单位(root em,根em),这个单位引起了广泛关注。

EM是相对于其父元素来设置字体大小的,这样就会存在一个问题,进行任何元素设置,都有可能需要知道他父元素的大小,而Rem是相对于根元素<html>,这样就意味着,我们只需要在根元素确定一个参考值。

目前,除了IE8及更早版本外,所有浏览器均已支持rem。

对于不支持它的浏览器,应对方法也很简单,就是多写一个绝对单位的声明。这些浏览器会忽略用rem设定的字体大小。

下面就是一个例子:

1

p {font-size:14px; font-size:.875rem;}

CSS样式表中px、em和rem单位的区别

通常情况下,我们区分px和em的差异就是说:px是绝对单位,不支持IE的缩放,em是相对单位,支持IE的缩放,其实,css单位em、px和rem的区别,详细来说,有以下几点:

1、PX:像素

PX是相对长度单位,它是相对于显示器屏幕分辨率而言的。

优缺点:比较稳定和精确,但在浏览器中放大或缩放浏览页面时会出现页面混乱的情况。

2、EM

EM:是相对长度单位,EM是相对于父元素来设计字体大小的。如果当前对行内文本的字体尺寸未被人为设置,则相对于浏览器的默认字体尺寸。

优缺点:EM的值并不是固定的,它会继承父级元素的字体大小。

PX和EM的之间的相互转换:

1.png

任意浏览器的默认字体高都是16px。所有未经调整的浏览器都符合:1em=16px。那么,12px=0.75em,10px=0.625em。

为了使用方便,用em时,我们通常在CSS中的body选择器中声明font-size=62.5%(使em值变为:16px*62.5%=10px),之后,你只需要将你使用的px值除以10,即可得到em值,如:12px=1.2em,10px=1em。

3、REM

REM是CSS3新增的一个相对单位,REM是相对单位,是相对HTML根元素。

这个单位可谓集相对大小和绝对大小的优点于一身,通过它既可以做到只修改根元素就成比例地调整所有字体大小,又可以避免字体大小逐层复合的连锁反应。

目前,除了IE8及更早版本外,所有浏览器均已支持rem。

更多编程相关知识,请访问:编程教学!!

以上就是css中px、em、rem的区别是什么?的详细内容,更多文章请关注木庄网络博客

相关阅读 >>

css怎么设置文字1行

css transition-delay属性怎么用

css设置字体大小的属性名是什么

css阴影效果如何实现

css怎么让两个div在同一行显示

css定位方式有哪几种

css实现页面底部固定的方法介绍(附代码)

css中内边框是什么

css不可能实现的功能是什么

css实现小箭头或三角形标志

更多相关阅读请进入《css》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...