什么是REM?
在rem之前,我们知道em是相对于父元素的字体来设置字体大小的,这样就会存在一个问题,进行任何元素设置,都有可能需要知道他父元素的大小,在我们多次使用时,就会带来无法预知的错误风险。而rem是相对于根元素,这样就意味着,我们只需要在根元素确定一个参考值,,在根元素中设置多大的字体,这完全可以根据您自己的所需。
浏览器的兼容性?
虽然rem是CSS3新引进来的一个度量单位,但是它支持的浏览器还是挺多的,比如:Mozilla Firefox 3.6+、Apple Safari 5+、Google Chrome、IE9+和Opera11+。只是可怜的IE6-8无法,你们就把他们当透明了吧,我向来都是如此。
不过使用单位设置字体,可不能完全不考虑IE了,如果你想使用这个REM,但也想兼容IE下的效果,可你可考虑“px”和“rem”一起使用,用”px”来实现IE6-8下的效果,然后使用“Rem”来实现代浏览器的效果,就让IE6-8不能随文字的改变而改变吧,现在基本要抛弃这些古老的浏览器了。
首先我们来看看使用 rem 实现手机屏幕适配的常用方案。
以设计稿的宽度为640px,即:designWidth = 640,同时设定在640px屏宽下 1rem=100px ,即:rem2px = 100。
设置 1rem=100px 的优点不言而喻。前端开发者在切图、重构页面的时候,通过直接位移小数点的方式,就可以将UI图中测量到的 px 值换算成对应的 rem 值,方便快捷。
此外,在 head 中我们还设置了:
|
|
先来看看具体方案
方案1:
|
|
方案2:
|
|
方案3:
|
|
注:目标屏幕宽度和设计稿的宽度的比:
|
|
方案4:
|
|
注:由于浏览器默认字体大小为 16px,所以当我们使用百分比作为根节点 html 的字体大小时,即html元素的font-size值设置为一个百分比值,rem 的计算方式就会改为:
|
|
同样的可以得到所有屏幕大小下,html 的 font-size 值的计算公式,即为方案4:
|
|
方案5:
|
|