css中的px、em、rem的区别----整理
PX:
PX实际上就是像素,用PX设置字体大小时,比较稳定和精确。但是这种方法存在一个问题,当用户在浏览器中浏览我们制作的Web页面时,如果改变了浏览器的缩放,这时会使用我们的Web页面布局被打破。这样对于那些关心自己网站可用性的用户来说,就是一个大问题了。因此,这时就提出了使用“em”来定义Web页面的字体。
EM:
EM就是根据基准来缩放字体的大小。EM实质是一个相对值,而非具体的数值。这种技术需要一个参考点,一般都是以<body>的“font-size”为基准。如WordPress官方主题Twenntytwelve的基准就是14px=1em。
另外,em是相对于父元素的属性而计算的,如果想计算px和em之间的换算,这个网站不错,输入数据就可以px和em相互计算。狠击这里:px和em换算
所以我们在写CSS的时候,需要注意两点:
- body选择器中声明Font-size=62.5%;
- 将你的原来的px数值除以10,然后换上em作为单位;
- 重新计算那些被放大的字体的em数值。避免字体大小的重复声明。
也就是避免1.2 * 1.2= 1.44的现象。比如说你在#content中声明了字体大小为1.2em,那么在声明p的字体大小时就只能是1em,而不是1.2em, 因为此em非彼em,它因继承#content的字体高而变为了1em=12px。
Rem:
EM是相对于其父元素来设置字体大小的,这样就会存在一个问题,进行任何元素设置,都有可能需要知道他父元素的大小。而Rem是相对于根元素<html>,这样就意味着,我们只需要在根元素确定一个参考值。
例如:根节点设置font-size:625%;那么100px大小的就是1rem,现在谷歌浏览器字体的最小标准,一般是12px,所以要想根节点以10的倍数来计算rem的值,就得把原来的62.5%(这里的62.5%是根据浏览器的默认大小来计算,浏览器默认大小是16px,这里的62.5%是根据10/16得到的。这里的10是你想要设置的字体大小)扩大10被!也就是100px,所以100px大小的rem的值是1rem!
当然,这只是其中的一种方法!
现在来补充一下,根据这段时间的实践!rem中的html根节点定义可以是font-size:20px;所谓的font-size:10px or 62.5%,扩大两倍!就是font-size:20px;意思就是大一点又不会死,所以决定还是是用font-size:20px;当然根据项目需要,可以定义任意数值!但是不要低于浏览器的最低字号!!!
浏览器的兼容性
除了IE6-IE8r,其它的浏览器都支持em和rem属性,px是所有浏览器都支持。
因此为了浏览器的兼容性,可“px”和“rem”一起使用,用"px"来实现IE6-8下的效果,然后使用“Rem”来实现代浏览器的效果。
一个例子:
p {font-size:14px; font-size:.875rem;}
特别注明一下,浏览器字体的默认大小是16px;
比如假设,我们设置html的字体大小的值为 html{font-size: 87.5%;}(也就是14px)。然后其他的字体就是将你要的值除以14得到的值;比如宽度是960px;换算成rem就是960/14=68.57142857142857rem;