应用此段代码需注意
- x5内核浏览器不支持,比如微信内要再写一套,详见这里:
JS 控制VIEWPORT在微信上正常显示 - viewport只在移动端设备生效,所以不适配pc
原理
viewport里的缩放比例:initial-scale。也就是ui稿大小/设备屏幕宽度,再按照比例缩放。
<meta name="viewport" id="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
var ua = navigator.userAgent.toLowerCase();
var isWeixin = ua.indexOf('micromessenger') != -1;
if (!isWeixin) {
// 适配viewport
const deviceWidth = (window.innerWidth > 0) ? window.innerWidth : screen.width;
const scale = (deviceWidth / 414).toFixed(3)
const content =
`target-densitydpi=target-densitydpi,width=deviceWidth, initial-scale=${scale}, maximum-scale=1.0, user-scalable=no`
document.getElementById('viewport').content = content
}
``