移动端rem响应式布局

手机页面设计稿一般是640px,但是,手机屏幕大小确是不确定的,想做出适应所有手机的手机页面解决方案有两种,rem布局和百分比布局。


这里介绍用rem布局来制作手机页面:

rem是css3中新增加的一个单位值,他和em单位一样,都是一个相对单位。不同的是em是相对于元素的父元素的font-size进行计算;rem是相对于根元素htmlfont-size进行计算。

原理:

(1)首先根据设计稿的宽度和默认的字体大小(一般是100px)计算出一个比例rem,

(2)然后用js根据默认最大屏幕宽度(一般是640px)和当前设备宽度算出需要缩放的倍数,根据这个倍数值改变html默认的字体大小。

例:

设默认最大屏幕宽度(最大屏宽)为640px, 默认字体大小(默认fz)为100px, 设默认设计稿宽(默认物宽)为106px

则:rem=默认物宽/默认fz=106/100=1.06rem

设当前屏宽320px, 当前设计稿宽(当前物宽)为x, 当前字体大小(当前fz)为y

则:默认物宽/默认fz==当前物宽/当前fz=x/y=1.06rem , 

     最大屏宽/当前屏宽=默认物宽/当前物)=640/320=106/x

解:y=(106*320)/(640*1.06rem)=(100*320)/640=50 , 即 当前fz=(默认fz*当前屏宽)/默认屏宽

js代码:

 1 <script type="text/javascript">
 2 new function (){
 3 var _self = this;
 4 var deviceWidth=screen.width; //设备宽度
 5 _self.width = 640; //设置默认最大宽度
 6 _self.fontSize = 100; //默认字体大小
 7 
 8 //如果当前设备宽度大于默认最大宽度,则返回默认最大宽度
 9 _self.actualWidth = function(){
10 if(_self.width<deviceWidth){return _self.width;}
11 else{return deviceWidth;}
12 };
13 
14 //根据计算公式改变html默认字体大小
15 document.getElementsByTagName("html")[0].setAttribute("style","font-size:"+(_self.actualWidth()*_self.fontSize)/ _self.width+"px !important");
16 };
17 </script>

 sass中rem的使用:

在CSS中,实现pxrem转换非常简单,但每次使用都需进行计算,所以接下来介绍如何使用Sass实现pxrem之间的计算。

首先声明变量: $browser-default-font-size: 100px !default;

然后在html根元素中显示的声明font-sizehtml font-size: $browser-default-font-size; }

接着然后通过@function来实现px转为rem计算:

@function rem($px) {
@return $px / $browser-default-font-size * 1rem;
}

在需要转换时调用函数:height: rem(106px);

猜你喜欢

转载自www.cnblogs.com/lwyKunKun/p/11853595.html