本文来源:http://www.cnblogs.com/lyzg/p/4877277.html?utm_source=caibaojian.comcss
若是设计稿的宽度为640pxhtml
将设计稿分为100份
var a = 640 / 100 = 6.4;git
根据js计算html中的font-size的大小github
deviceWidth = 320,font-size = 320 / 6.4 = 50px deviceWidth = 375,font-size = 375 / 6.4 = 58.59375px deviceWidth = 414,font-size = 414 / 6.4 = 64.6875px deviceWidth = 500,font-size = 500 / 6.4 = 78.125px
deviceWidth经过document.documentElement.clientWidthapi
<meta name="viewport" content="initial-scale=1,maximum-scale=1, minimum-scale=1">
当deviceWidth大于设计稿的横向分辨率时,始终遵循设计稿布局
github地址:https://github.com/amfe/lib-flexible/字体
无flex
完整引用举例:设计
<script src="http://g.tbcdn.cn/mtb/lib-flexible/{{version}}/??flexible_css.js,flexible.js"></script>
建议对于js作内联处理,在全部资源加载以前执行这个js。code
执行这个js后,会在html(也就是document.documentElement)上增长一个data-dpr属性,以及font-size样式。
以后页面中的元素,均可以用rem单位来设置。html上的font-size就是rem的基准像素。
首先,目前视觉稿大小分为640,750以及,1125这三种。
当前方案会把这3类视觉稿分红100份来看待(为了之后兼容vh,vw单位)。每一份被称为一个单位a。同时,1rem单位认定为10a。拿750的视觉稿举例:
1a = 7.5px 1rem = 75px
所以,对于视觉稿上的元素的尺寸换算,只须要原始px值除以rem基准px值便可。例如240px * 120px的元素,最后转换为3.2rem * 1.6rem。
字体的大小不推荐用rem做为单位。因此对于字体的设置,仍旧使用px做为单位,并配合用data-dpr属性来区分不一样dpr下的的大小。
例如:
div { width: 1rem; height: 0.4rem; font-size: 12px; // 默认写上dpr为1的fontSize } [data-dpr="2"] div { font-size: 24px; } [data-dpr="3"] div { font-size: 36px; }
引入执行js以前,能够经过输出meta标签方式来手动设置dpr。语法以下:
<meta name="flexible" content="initial-dpr=2,maximum-dpr=3" />
其中initial-dpr会把dpr强制设置为给定的值,maximum-dpr会比较系统的dpr和给定的dpr,取最小值。注意:这两个参数只能选其一。
输出以下css样式便可:
html {font-size: 60px!important;}
[Number] lib.flexible.dpr
当前页面的dpr值
[Number] lib.flexible.rem
当前页面的rem基准值
[Number|String] lib.flexible.rem2px([Number|String digital])
把rem转换为px
[Number|String] lib.flexible.px2rem([Number|String digital])
把px转换为rem
lib.flexible.refreshRem()
刷新当前页面的rem基准值
<script src="http://g.tbcdn.cn/mtb/lib-flexible/{{version}}/makegrid.js"></script>
lib.flexible.makeGrid(params)
经过传入视觉的栅格规范定义,能够输出对应的css样式。
lib.flexible.makeGridMode(modeName)
方案还预置了几个默认的栅格规范,分别是750-12,750-6,640-12,640-6。
<meta content="designWidth=750, desginUnit=6, columnCount=12, columnXUnit=7, gutterXUnit=3, edgeXUnit=4" name="grid" />
或
<meta content="modeName=750-12" name="grid" />
<div class="grid"> <div class="col-4"></div> <div class="col-4"></div> <div class="col-4"></div> </div> <div class="grid"> <div class="col-6"></div> <div class="col-6"></div> </div> <div class="grid"> <div class="col-3"></div> <div class="col-4"></div> <div class="col-5"></div> </div>