Open zhh10 opened 4 years ago
根据父级算百分比,需配合其他布局来使用
把所有机型的css像素设置成一致的
- viewport需要通过js动态的设置(不能直接把device的值设置成数值)
- 通过设置比例(初始比例以及缩放比例),把宽度缩放成一致的
公式:缩放比 = css像素/375
(function(){
// 获取css像素(前提:viewport没有缩放)
var curWidth = document.documentElement.clientWidth
// window.innerWidth
// window.screen.width
var targetWidth = 375
var scale = curWidth / targetWidth
var view = document.getElementById('view')
view.content = `initial-scale=${scale},user-scalable=no,minimum-scale=${scale},maximum-scale=${scale}`
})()
问题:
把css像素缩放成与设备像素一样大的尺寸
(function(){
var meta = document.querySelector('meta[name="viewport"]')
var scale = 1 / window.devicePixelRatio
if(!meta){
// 若用户没有写标签
meta = document.createElement('meta')
meta.name = 'viewport'
meta.content = `width=device-width,initial-scale=${scale},user-scalable=no,minimum-scale=${scale},maximum-scale=${scale}`
document.head.appendChild(meta)
}else{
meta.setAttribute('content', `width=device-width,initial-scale=${scale},user-scalable=no,minimum-scale=${scale},maximum-scale=${scale}`)
}
})()
像素概念
window.devicePixelRatio
viewport和meta
viewport
window.innerWidth
方法获取标准viewport设置
移动端浏览器为了内容能够显示全,会自作主张帮我们缩放,当设置
user-scalable=no
就不会缩放了当width和initial-scale同时设置,浏览器取较大的那一位
meta
禁止识别电话与邮箱(但是邮箱没效果)