因为手机屏幕相对桌面显示器要小不少,传统网页上的设计在手机上的体验会很糟糕,阅读性很是差。
为了让手机也能得到良好的网页浏览体验,Apple 在移动版 Safari 中定义了 viewport meta 标签(若是没记错最先提出的话),用于建立一个虚拟窗口(layout viewport),这个虚拟窗口的分辨率接近于桌面显示器,Apple 将其定义为980px。而后将虚拟窗口映射到移动设备的屏幕上,按比例缩放并从新渲染网页。css
虚拟窗口(layout viewport)
移动浏览器默认状况下把 viewport 设置为一个比较宽的值(防止太窄而在可视区域中显示错乱)。该默认的 viewport 称为 layout viewport。
宽度可经过 Js 获取(基本全部设备都支持)html
document.documentElement.clientWidth document.documentElement.clientHeight
视觉窗口(visual viewport)
浏览器可视区域大小。可理解为手机物理屏幕。html5
宽度可经过 Js 获取(不支持Android2, Opera Mini, UC8)浏览器
window.innerWidth window.innerHeight
ideal viewport
由Peter-Paul Koch提出的一种概念,一个完美适配移动设备的 viewport。理想状态是不须要用户缩放和横向滚动条就能正常查看,显示的文字大小合适,不区分分辨率,屏幕密度等。ide
meta viewport
移动端默认使用的是 layout viewport ,而咱们想要达到相似 ideal viewport 的效果的话,能够经过 meta 标签来对 viewport 进行控制。ui
移动开发中必出场的定义:google
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">
用来实现 ideal viewport 的效果。idea
meta viewport 标签属性说明scala
width: 320 // 设置 layout viewport 的宽度,device-width 为设备宽度 height: 800 // 和 width 对应,通常不多用 initial-scale: 1 // 设置页面初始缩放值, minimum-scale: 1 // 容许用户的最小缩放值 maximum-scale: 1 // 容许用户的最大缩放值 user-scalable: yes/no // 是否允能够手动缩放
关于 meta viewport 的各属性还有不少有趣的知识点。视频中能够揭晓~设计