在各种屏幕大小手机上实现自适应效果,用rem单位,根据手机屏幕大小自动改变(包括横屏和竖屏时):文字大小,图片大小,布局宽度大小等!
rem是 css3一种新的长度单位。它是相对于html标签的字体大小的单位(注意这里泛指是相对于html中的根元素标签也就是html)。
一般用于在移动端H5页面中解决各种机型适配问题的。
由于在移动端开发时,开发人员为了适配不同的机型,常用mediaQue(媒体查询)依据每种机型写多套适配代码,这种方法是能解决适配问题,但代码量太多了不利于维护。
所以就用rem来解决这个问题(当然现在有很多UI框架、js脚手架、插件等都有多端适配方案这里就不涉及了)。
rem的本质是等比例缩放,一般是基于页面宽度,其核心就在刚打页面时,通过css、js等方式动态改变根元素html标签的font-size 字体大小样式属(因rem是以根元素html标签的font-size大小变化面变化的)。
这里我们是用js方式动态改变根元素html标签的font-size样式属性,这样页面就可以根
;(function (doc, win) {
var docEl = doc.documentElement,
resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize',
recalc = function () {
var clientWidth = docEl.clientWidth;
if (!clientWidth) {
return false;
}
docEl.style.fontSize = 100 * (clientWidth / 750) + 'px';
/*
* 使用说明:
* 750 表示:UI设计稿的宽度(移动端一般都以750为标准,当然这是根据你的设计稿宽是多少,这里就写多少)。
* 100 表示:换算比例,这里写100是为了在根据设计稿写css样式时好计算(如,用PS测量某元素的宽度是100px,那样式就写为width: 1rem,如果是16px 就width: 0.16rem,如果是1px 就width: 0.01rem )
* rem不仅仅用于设置宽和高,它可以用来设置所有可设置的属性单位大小,如padding: 1.2rem; font-size: 1rem; border-radius: 0.5rem 等等;
* */
};
if (!doc.addEventListener) {
return false;
}
win.addEventListener(resizeEvt, recalc, false);
doc.addEventListener('DOMContentLoaded', recalc, false);
})(document, window);
这个js文件一定要放在html页面<head>标签中,并且是第1个<script src="./js/rem.js" >标签,不然在打开页面时由于rem.js对html标签的font-size字体大小没还设好,
就会出现闪一下屏的情况!!!