rem适配
一, 网易适配方法
屏幕宽度/设计稿rem宽度=页面动态font-size值css
(function(doc, win) { var docEl = doc.documentElement; resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize'; recalc = function() { var clientWidth = docEl.clientWidth > 750 ? 750 : docEl.clientWidth; if(!clientWidth) return; docEl.style.fontSize = clientWidth / 7.5 + 'px'; }; if(!doc.addEventListener) return; win.addEventListener(resizeEvt, recalc, false); doc.addEventListener('DOMContentLoaded', recalc, false); })(document, window);
解释:
这样就设置好了每一个页面的根fonts-size,由于rem单位是基于根font-size,所以只要肯定一种设计稿对应手机的换算,其他屏幕尺寸都可自动适配。html
上面咱们得出设计稿换算rem的基准值是100,所以只须要把设计稿上的px值除以100即为咱们要的rem值。sass
> Px/100=rem,因此100px=1rem,25px=0.25rem
二, 手淘适配方法
大名鼎鼎的Flexible
引入: 直接引用阿里的CDN文件(或下载到本地引入)less
<script src="http://g.tbcdn.cn/mtb/lib-flexible/0.3.4/??flexible_css.js,flexible.js"></script>
设定: 页面不要设定 。Flexible会自动设定每一个屏幕宽度的根font-size、动态viewport、针对Retina屏作的dpr。
换算:假设拿到的设计稿和上述网易的同样都是750,Flexible会把设计稿分为10份,能够理解为页面width=10rem,即1rem=75px,因此根font-size(基准值)=75px。以后的css换算rem公式为:
px/75=rem,因此100px=100/75=1.33rem,50px=50/75=0.66rem
换算工具:
显然,能够看出px与rem的换算由于基准值的不一样而有些复杂,甚至须要借助计算器的辅助。在这里推荐一个换算神器:"cssrem"
cssrem: 配值设置
px_to_rem - px转rem的单位比例,假设拿到设计稿750,基准值是75,此处就设75编辑器
max_rem_fraction_length - px转rem的小数部分的最大长度。默认为6。工具
available_file_types - 启用此插件的文件类型。[".css", ".less", ".sass", ".scss"]。flex
(function(doc, win) { var docEl = doc.documentElement, resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize', recalc = function() { var clientWidth = docEl.clientWidth; if (!clientWidth) return; docEl.style.fontSize = 32 * (clientWidth / 320) + 'px'; }; if (!doc.addEventListener) return; win.addEventListener(resizeEvt, recalc, false); doc.addEventListener('DOMContentLoaded', recalc, false); })(document, window);
网易方案
一、拿到设计稿除以100,获得宽度rem值spa
二、经过给html的style设置font-size,把1里面获得的宽度rem值代入x document.documentElement.style.fontSize = document.documentElement.clientWidth / x + ‘px‘;插件
三、设计稿px/100便可换算为remssr
优:经过动态根font-size来作适配,基本无兼容性问题,适配较为精准,换算简便。
劣:无viewport缩放,且针对iPhone的Retina屏没有作适配,致使对一些手机的适配不是很到位。
手淘方案
一、拿到设计稿除以10,获得font-size基准值
二、引入flexible
三、不要设置meta的viewport缩放值
四、设计稿px/ font-size基准值,便可换算为rem
优:经过动态根font-size、viewpor、dpr来作适配,无兼容性问题,适配精准。
劣:须要根据设计稿进行基准值换算,在不使用sublime text编辑器插件开发时,单位计算复杂。
备注:
每一个人评判的标准不一样。