移动端界面的适配

  

<强>阅读目录

  
      <李>   <李>   <李>   <李>   
  

:在进行移动端界面的书写的时候,如果把宽度高度或者字体大小全部写死的话,那么在所有手机上看到的大小都一样,存在的问题就是同样大小的字体,或者一个盒子模型,

  

在大屏幕手机上看起来会有点偏小,比如iphone6PLUS。如果是做成适配的话,就很好的解决了这个问题,大屏幕显示的内容大一点,小屏幕显示的小一点。

  

所以今天做一个移动端页面适配的小小总结

  

<>强适配的要求

  

1,在不同分辨率的手机上,页面看起来是自适应的。整体效果看起来比较和谐。不会说大屏幕上看起来特别小。小屏幕上看起来特别大

  

2,主要是关注字体,宽高,间距,图片大小等。

  

3,所提供的设计图一般是手机分辨率的两倍,才能方便做适配。

  

4,使用快速眼动做单位,而不是传统的px

  

<>强适配的方法,3个步骤

  

  

设置视窗,也就是平时写移动端页面都要加上的:

        & lt;元name=笆哟啊蹦谌?翱矶?设备宽度,初始=1,最大范围=1,user-scalable=没有"在      

  

首先我们在我们的页面引入下面的flexible.js,

  

这段适配的js代码是拿淘宝的来用的。

  

适配的js代码的github地址如下:https://github.com/amfe/lib-flexible/blob/master/src/flexible.js。

  

  

页面上我们的css代码可以这样写,比如设计图给我们的尺寸是750 * 1000的。某个容器在设计图的宽度是150 px * 225 px,那我们在css里面

  

宽度:150 px/750 px/10=150 px/75 px=2快速眼动;

  

高度为:225 px/75 px=3 rem;

  

        div {   宽:2快速眼动;   高度:3快速眼动;   }      

通过上面的3个步骤,我们就可以将我们的移动端页面做成适配的了。

  

  

不过有一点,一直算来算去挺烦的,所以在写css的时候,最好使用css预处理器,比如sass,少来写,这样就方便很多了。

  

或者在sublimeText3中安装cssREM插件,正常书写px单位,然后编辑器自动帮你换算成快速眼动。

  

cssREM插件的安装教程:https://github.com/flashlizi/cssrem

  

  

容器的宽度高度我们用雷为单位,但是字体大小字体大小我们还是用px,而不是用rem

  

原因:   

灵活。js的作者冬天是这样解释的:考虑到字体的点阵信息,一般文字尺寸多会采用16 px 20 px 24 px等值,若以rem指定文字尺寸,会产生诸如21 px, 19 px这样的值,会导致字形难看,毛刺,甚至黑块,故大部分文字应该以px设置。

  

一般标题类文字,可能也有要求随屏幕缩放,且考虑到这类文字一般都比较大,超过30 px的话,也可以用雷设置字体。

  

  

flexible.js         ;(函数(赢,自由){   var doc=win.document;   var docEl=doc.documentElement;   var metaEl=doc.querySelector(“元[name="视窗"]”);   var flexibleEl=doc.querySelector(“元[name=傲榛睢盷”);   var dpr=0;   var规模=0;   var tid;   var灵活=lib.flexible | | (lib.flexible={});   如果(metaEl) {   console.warn(“将根据已有的元标签来设置缩放比例”);   var=metaEl.getAttribute匹配(“内容”).match(/初始\剂量=((\ d \] +)/);   如果(匹配){   比赛规模=parseFloat ([1]);   dpr=方法(1/规模);   }   }else if (flexibleEl) {   var=flexibleEl.getAttribute内容(“内容”);   如果(内容){   var initialDpr=content.match(/初始\ dpr=((\ d \] +)/);   var maximumDpr=content.match(/最大\ dpr=((\ d \] +)/);   如果(initialDpr) {   dpr=parseFloat (initialDpr [1]);   规模=parseFloat ((1/dpr) .toFixed (2));   }   如果(maximumDpr) {   dpr=parseFloat (maximumDpr [1]);   规模=parseFloat ((1/dpr) .toFixed (2));   }   }   }   如果(!dpr,,!规模){   var isAndroid=win.navigator.appVersion.match (/android/gi);   var isIPhone=win.navigator.appVersion.match (/iphone/gi);   var devicePixelRatio=win.devicePixelRatio;   如果(isIPhone) {//iOS下,对于2和3的屏,用2倍的方案,其余的用1倍方案   如果(devicePixelRatio祝辞=3,,(!dpr | | dpr祝辞=3)){   dpr=3;   }else if (devicePixelRatio祝辞=2,,(!dpr | | dpr祝辞=2)){   dpr=2;   其他}{   dpr=1;   }   其他}{//其他设备下,仍旧使用1倍的方案   dpr=1;   }   规模=1/dpr;   }//为html标签添加data-dpr属性   docEl。setAttribute (data-dpr, dpr);   如果(! metaEl) {   metaEl=doc.createElement(元);   metaEl。setAttribute(“名字”,“视口”);//动态设置元   metaEl。setAttribute(“内容”,“初始=' + +”,最大范围=肮婺? +”,最小规模=' +规模+ ',user-scalable=no ');   如果(docEl.firstElementChild) {   docEl.firstElementChild.appendChild (metaEl);   其他}{   var包=doc.createElement (div);   wrap.appendChild (metaEl);   doc.write (wrap.innerHTML);   }   }//根据dpr和物理像素设置快速眼动   函数refreshRem () {//getBoundingClientRect () .width相当于物理像素   var=docEl.getBoundingClientRect宽度().width;//宽度/dpr比;540等于独立像素   如果(宽/dpr祝辞540){   宽度=540 * dpr;   }   var rem=宽/10;//将屏幕宽度分成10份,1份为1快速眼动。rem转化px计算公式=d *(宽/10)   docEl.style。字形大?rem +“px”;   灵活。rem=赢。rem=快速眼动;   }//监听窗口变化,重新设置尺寸   赢了。addEventListener(“调整”,函数(){   clearTimeout (tid);   tid=setTimeout (refreshRem, 300);   },假);//当重新载入页面时,判断是否是缓存,如果是缓存,执行refreshRem ()   赢了。addEventListener (pageshow,函数(e) {   如果(e.persisted) {   clearTimeout (tid);   tid=setTimeout (refreshRem, 300);   }   },假);   如果(doc。readyState==='完成'){   doc.body.style。字形大?12 * dpr +“px”;   其他}{   医生。addEventListener (DOMContentLoaded”内,函数(e) {   doc.body.style。字形大?12 * dpr +“px”;   },假);   }   refreshRem ();   灵活。dpr=赢。dpr=dpr;   灵活。refreshRem=refreshRem;   灵活。rem2px=function (d) {   var val=parseFloat (d) * this.rem;   如果(typeof d==='字符串',,d.match (rem美元/)){   val +=皃x”;   }   返回val;   }   灵活。px2rem=function (d) {   var val=parseFloat (d)/this.rem;   如果(typeof d==='字符串',,d.match (/px/美元)){   val +=翱焖傺鄱?   }   返回val;   }   })(窗口,窗口(“自由”)| |(窗口(“自由”)={}));   

移动端界面的适配