移动端Web系列3 -- viewport

写在前面

  • 这里就跳过了文档申明知识的介绍了,这么好的机会还不用html5的,你还在等什么?
  • 概念了解: device pixels and css pixels

    • css像素: 浏览器使用的抽象单位,主要用来在网页上绘制内容
    • 设备像素: 显示屏幕的最小物理单位,每一个 dp 包含本身的颜色、亮度
    • css 1px != device 1px
  • 概念了解: screen size and window size

viewport

由来

因为手机屏幕相对桌面显示器要小不少,传统网页上的设计在手机上的体验会很糟糕,阅读性很是差。
为了让手机也能得到良好的网页浏览体验,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 的各属性还有不少有趣的知识点。视频中能够揭晓~设计

Tips

  • device-width 查询的是设备像素
  • 不一样浏览器的默认 layout viewport 略有不一样
  • 事件坐标在移动端各类不兼容
  • initial-scale 和 device-width 叠加才能兼容目前的移动设备viewport 匹配
  • 缩放值越大,当前 viewport 的宽度就越小,可是,并非全部设备都能支持 initial-scale=2 的
  • 当前缩放值 = ideal viewport 宽度 / visual viewport 宽度
  • 当设置宽度值冲突时,浏览器会选择最大值

参考文献

相关文章
相关标签/搜索