移动端适配方案

舍弃flexible.js,使用vw+rem进行适配

由于viewport单位得到众多浏览器的兼容,lib-flexible这个过渡方案已经可以放弃使用,不管是现在的版本还是以前的版本,都存有一定的问题。建议大家开始使用viewport来替代此方案。(来自lib-flexible团队)

vw+rem适配

  • 要点:移动端使用rem布局需要通过JS设置不同屏幕宽高比的font-size,结合vw单位和calc()可脱离JS的控制
  • 场景:rem页面布局(不兼容低版本移动端系统)
  • 兼容:vw、calc()
	/* 基于UI width=750px DPR=2的页面 */
	html {
	    font-size: calc(100vw / 7.5);
	}

什么是vw和vh?

vw : 1vw 等于视口宽度的1%
vh : 1vh 等于视口高度的1%
vmin : 选取 vw 和 vh 中最小的那个
vmax : 选取 vw 和 vh 中最大的那个

如何使用

用视口单位度量,视口宽度为100vw,高度为100vh

例如,在桌面端浏览器视口尺寸为650px,那么 1vw = 650 * 1% = 6.5px(这是理论推算的出,如果浏览器不支持0.5px,那么实际渲染结果可能是7px)

注意:这里的1%是指占视口的1%,而不是我们定义的div的1%

如何利用rem+vw进行屏幕适配呢?我们以设计稿为750px为基准

第一步:设置meta标签
<meta name="viewport" content="width=device-width, initial-scale=2.0, maximum-scale=2.0, minimum-scale=2.0, user-scalable=no">

因为iPhone6以及大多数的dpr为2,为了第二步的方便进行换算

第二步:设置html的font-size大小
html{font-size:13.33333333vw}

为什么font-size=13.33333333vw?

下面分析下原理吧, 上面我们说了vw表示1%的屏幕宽度,而我们的设计稿通常是750px的,屏幕一共是100vw,对应750px,那么1px就是0.1333333vw,。

所以,我们让1rem=100px=13.333333vw

div {
  width: 1.7rem;
  height:1.37rem;
}

但是注意,这是针对于dpr=2的适配,至于其他dpr适配,要根据设计师的设计稿规定
1)如果你的设计图是640px或者750px,那么dpr的取值就是2,meta如下设置

<meta name="viewport" content="width=device-width, initial-scale=2.0, maximum-scale=2.0, minimum-scale=2.0, user-scalable=no">

2)如果你的设计图是1080px,那么css像素就是1080px,那么dpr的取值就是3,这个时候,meta要如下设置

<meta name="viewport" content="width=device-width, initial-scale=3.0, maximum-scale=3.0, minimum-scale=3.0, user-scalable=no">

然后rem的计算方法和dpr=2时一样。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值