H5端自适应框架 使用方便,设计图的1px对应0.01rem,设计图的字体大小24px对应0.24rem,就是如此简单! 参考页面: https://8.baidu.com/template/index/current.html
###使用方法:
在页面head写入以下代码,实时更新html的fontsize:
<script src="js/adaptive.js"></script> // IOS有缩放,安卓没缩放
<script src="js/adaptive-version2.js"></script> // IOS,安卓都没有缩放,能快速开发的版本
<script src="js/adaptive-version3.js"></script> // 无论iphone还是安卓手机,都能精确还原1px webview中用用尚可,安卓下viewport会有兼容性问题,so,谨慎使用
以上三个版本的js只需引用一个,按项目需求而定
<script>
// 设计图宽度
window['adaptive'].desinWidth = 750;
// body 字体大小 会将body字体大小设置为 baseFont / 100 + 'rem' 750的设计图一般设置为28,640的设计图一般设置为24
window['adaptive'].baseFont = 28;
/*
// 显示最大宽度 可选
window['adaptive'].maxWidth = 480;
// rem值改变后执行方法 可选
window['adaptive'].setRemCallback = function () {
alert(1)
}
*/
// 初始化
window['adaptive'].init();
</script>
##优先加载该JS,并执行
然后在css中设置相应样式即可: 设计图的1px对应0.01rem,设计图的24px对应0.24rem,就是如此简单!
.main-info {
height: 0.88rem;
padding-bottom: 0.24rem;
}
.fund-info {
position: relative;
font-weight: normal;
padding: 0.2rem 0;
padding-right: 1.7rem;
padding-left: 0.23rem;
font-size: 0.32rem;
line-height: 1;
}
字体也推荐使用rem,没有任何问题,开发起来也方便!
新增最大宽度,解决平板或手机横屏时体验不佳的问题
window['adaptive'].maxWidth = 480; // 设置最大宽度,默认540px
需要css配合使用,添加如下代码:
body {
max-width: 6.4rem; // 设计图宽度为640px时为6.4rem ,750时为7.5rem ,以此类推
margin: 0 auto;
}
body * {
max-width: 6.4rem; // 设计图宽度为640px时为6.4rem ,750时为7.5rem ,以此类推
}
// 将1rem转换为像素值
window['adaptive'].remToPx(1)
###adaptivejs原理:
最最理想的解决方案当然是设计图和手机屏幕的像素点一一对应,就像我们在PC端所做的一样。拿750px宽的设计图来说,如果手机屏幕的水平分辨率是750px,那么这样是最理想最完美的,对于水平分辨率不是750px的屏幕呢?这个时候我们把设计图进行缩放,使其宽度刚好与屏幕的分辨率相等,即是等比例缩放设计图,使其宽度刚好覆盖手机屏幕。
如果我们使用<meta content="width=device-width,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no,minimal-ui" name="viewport">这种常用标签,视觉同学经常会抱怨1px过粗的问题,这个时候我们需要缩放viewport来达到真正还原1px的效果。
开发的便捷性也是理想解决方案的一部分,大部分rem解决方案,是把设计图分成100份,1rem等于10份,总宽度10rem。如果设计图是750px,1rem就等于75px,切图的时候需要将px转换为rem,这个时候就需要用设计图的px值除以75得到rem的值,得到的rem值基本都是带几位小数的,虽然我们可以用less,sass这类css预处理语言来统一处理,但是如果我们让1rem等于100px,在切图的时候就可以更加快速方便了。比如设计图宽度为100px,css则书写为1rem即可。
要实现1rem等于设计图100px,页面的总的宽度就不是10rem了,而是随设计图的宽度而变化了。拿750px的设计图来说,总的宽度就是7.5rem。我们先根据设备像素比来缩放viewport,布局视口的宽度就调整好了,布局视口同样的宽度是7.5rem,我们就可以计算出html根元素的像素值,这样就大功告成了。
如果是文字,我们也建议使用rem。
对于iphone的retina高清显示屏,基本版本(adaptive.js)我们做了缩放处理,以达到最佳显示效果。 对于快速开发版本(adaptive-version2.js),viewport的width等于设备宽度,不会缩放
如果只是webview里,可以使用 adaptive-version3.js 在IOS和安卓下都会缩放,否则还是谨慎使用此版本,抱歉
###注意:可能存在0.01rem将小于1px而不显示的问题,故如果设计图是1px,在css中仍然用1px显示。 可用的全局变量:window.devicePixelRatioValue 当前页面设置的设备像素比
<script src="js/adaptive.js"></script> // iphone下缩放,retina显示屏下能精确还原1px
<script src="js/adaptive-version2.js"></script> // 没有缩放,能快速开发的版本
<script src="js/adaptive-version3.js"></script> // 无论iphone还是安卓手机,都能精确还原1px,做到高度还原视觉稿,如果只是在webview里使用,建议使用,否则请谨慎使用
###部分兼容性问题解决方法 1,部分chrome版本局部刷新时字体过大问题 插入数据后调用方法: window.adaptive.reflow(); 2,后端模板渲染是刚开始字体过大问题 可以给body设置一个初始字体大小值,就不会出现此问题了
使用中有问题可以加QQ群讨论:295805025