在Web开发中使用什么单位来定义页面的字体大小,至今天为止都还在激烈的争论着,有人说px好,有人说em的优点多,,也有人说百分比方便,但说到底,都是各有利弊,但在开发中又不得不用。那么有什么好的解决方案呢,说到这就要进入本文的正题 CSS3中引入的单位rem。
那么rem是什么?
rem(font size of the root element)是指相对于根元素的字体大小的单位。简单的说它就是一个相对单位。看到rem大家一定会想起em单位,em(font size of the element)是指相对于父元素的字体大小的单位。它们之间其实很相似,只不过一个计算的规则是依赖根元素一个是依赖父元素计算。
rem的优点
这个单位与em有什么区别呢?区别在于使用rem为元素设定字体大小时,仍然是相对大小,但相对的知识HTML根元素。这个单位可谓集相对大小和绝对大小的优点于一身,通过它可以做到只修改根元素就成比例地调整所有字体大小
。
em单位是相对于父节点的font-size,会有一些组合的问题,而rem是相对于根节点(或者是html节点),也就是说你可以在html节点定义一个单独的字体大小,然后其他元素使用rem相对于这个字体的百分比进行设置,这样就意味着,我们只需要在根元素确定一个参考值,在根元素中设置多大的字体,这完全可以根据自己的需求
浏览器兼容性
除了IE6-8无法兼容外几乎适用于市面上所有浏览器。
rem的使用
在我看来rem的主要作用就是为了让元素在不同屏宽下相对于设备等比例显示,在实际开发中,我们可以按照一个标准尺寸进行设计,使用rem单位进行网页的制作,然后控制根节点的font-size实现完美响应。
好了上面全是废话,下面我给出两种方案
1.统计自己网站有哪些主流的屏幕设备,然后去针对那些设备去做media query设置根节点html的font-size实现适配,例如下面这样:
html {
font-size : 20px;
}
@media only screen and (min-width: 401px){
html {
font-size: 25px !important;
}
}
@media only screen and (min-width: 428px){
html {
font-size: 26.75px !important;
}
}
@media only screen and (min-width: 481px){
html {
font-size: 30px !important;
}
}
@media only screen and (min-width: 569px){
html {
font-size: 35px !important;
}
}
@media only screen and (min-width: 641px){
html {
font-size: 40px !important;
}
}
2.通过JS实现全适配
function adaptable(){
var pw = $(window).width();
var size = pw*16/350;
$('html').css('font-size',size+'px');
}
方案一当然是不能所有设备全适配,但是用JS可以实现全适配。具体用哪个就要根据自己的实际工作场景去定了。