上一篇博文,可算把像素这个东西讲清楚了。在这篇博文里面,将继续介绍viewport相关的内容。

很多博客都会提到PPK所讲的三个viewport,有的讲的比较复杂,看的云里雾里,我这里也大概介绍一下,三个viewport主要是相对于移动端而言的。

visual viewport

这个是浏览器给我们用的、能真正用来显示网页内容的区域,可以通过下面的js命令获取:

window.innerWidth
window.innerHeight

正如上篇博客所说的,前端里面能获取到的像素基本上都是CSS像素,所以这个的单位也是CSS像素。对于iPhone X,浏览器全屏状态下,其window.innerWidth的值为375。

上篇博客中还提到screen.widthscreen.height,主要是用来获取整个屏幕的大小的,而window.innerWidthwindow.innerHeight只是获取浏览器可用显示区域的大小,也就是浏览器中间负责显示的部分。当浏览器全屏时,要去掉状态栏、标签栏、任务栏等区域,当浏览器非全屏时,其值更小。由于在移动端,浏览器一般都是全屏的,所以大多数情况下screen.widthwindow.innerWidth的值相等,也有的博客中说用screen.widthscreen.height来获取visual viewport的大小,就是这个原因。

visual viewport是我们可以直观看到的,不严谨的说,就是差不多等于手机屏幕的大小,偏向于一个物理概念。

layout viewport

网页最早是出现在电脑上的,上一篇博客中提到,电脑的物理像素可能比手机还要低,但是电脑的设备无关像素(或者说是分辨率吧,更严谨一些)是明显大于手机的设备无关像素的,毕竟电脑的屏幕尺寸远比手机大啊。那些在电脑上的网页,如果没有经过专门的优化,直接搬到手机上看,那么问题就来了,网页会被挤得变形,相信这种问题大家都遇到过。所以呢,手机厂商为了解决这个问题,设置了一个layout viewport。

这是一个虚拟的窗口,其大小比手机屏幕大,加载网页时,直接把HTML渲染在这个虚拟的窗口中,这样就不会样式错乱了。在查看的时候,毕竟手机的visual viewport小啊,那就只能通过滚动条来看了。

做个比喻,layout viewport就是一张大白纸,HTML的内容就写在这个大白纸上,visual viewport就是一个放大镜,上下左右移动,可以显示其中的一部分。

Layout viewport的大小可以通过document.documentElement.clientWidthdocument.document.clientHeight,实际使用中可能会有一些兼容问题,这跟DOCTYPE声明有关。不同浏览器的layout viewport大小不同,常见的有980px、1024px。

ideal viewport

Layout viewport是为了能将电脑上的网页正确的显示到手机上。当浏览器拿到一个网页时,首先会渲染到这个layout viewport里面。可是现在有很多网页会针对手机做专门的设计,比如现在的一些H5活动页,设计的尺寸就是在手机上看的。此时如果还是把网页渲染到这个大的layout viewport上,实在是有点不合适了。所以,还应该有个ideal viewport,这个ideal viewport应该与手机屏幕大小的相同,确切来说,等于visual viewport的大小。把页面渲染到这个ideal viewport里面,就能在visual viewport中完美显示。

小结

根据我的理解小结一下:

首先,我们可以假想,layout viewport和ideal viewport都是用来渲染页面的两个盒子,HTML页面渲染在盒子里面,而visual viewport用来查看渲染后的结果的,相当于一个窗口。我们设置HTML的body为width:100%,那么盒子有多宽,HTML页面就有多宽。layout viewport用来渲染电脑上的页面,所以比较大,而ideal viewport较小,用来渲染专门针对手机设计的页面。

然而,在浏览器的实现中,其实并没有那么多盒子。就只有一个layout viewport的盒子,页面就渲染在这个盒子中。layout viewport默认是比较大的。如果我们希望渲染到ideal viewport的盒子里面,那就只要调整这个layout viewport的大小即可,具体如何调整,将在下一节中介绍。

综上,layout viewport用来承载HTML的渲染,visual viewport是查看渲染结果的窗口,而ideal viewport可以理解成是一种尺寸,其大小等于visual viewport。调整layout viewport的大小,让其在visual viewport的查看下有最佳效果,就是我们想要的移动端适配。

移动端适配之二:visual viewport、layout viewport和ideal viewport介绍相关推荐

  1. 移动端适配之二:visual viewport、layout viewport和ideal viewport介绍 1

    上一篇博文,可算把像素这个东西讲清楚了.在这篇博文里面,将继续介绍viewport相关的内容. 很多博客都会提到PPK所讲的三个viewport,有的讲的比较复杂,看的云里雾里,我这里也大概介绍一下, ...

  2. 移动端适配viewport的概念与理解

    一.基本概念 首先,viewport指视口,浏览器上(或一个app中的webview)显示网页的区域.PC端的视口是浏览器窗口区域,而移动端的则存在三个不同的视口: layout viewport:布 ...

  3. layout viewport visual viewport ideal viewport

    我们经常见到用 K和 P这个单位来形容屏幕: P代表的就是屏幕纵向的像素个数, 1080P即纵向有 1080个像素,分辨率为 1920X1080的屏幕就属于 1080P屏幕. 我们平时所说的高清屏其实 ...

  4. 前端面试之移动端适配篇(转载)

    文章目录 关于像素,括号中为别名 设备像素(物理像素) 设备无关像素(设备独立像素) 设备无关像素与CSS像素之间的关系 -- 页面缩放比 设备像素与设备无关像素之间的关系 -- DPR 设备像素与C ...

  5. 从淘宝适配布局谈移动端适配

    一.        首先我们先来看看淘宝不同分辨率下的适配页面 可以看出来,淘宝在不同的分辨率下,页面的尺寸和模块间的间距会发生变化,这是因为淘宝采用了rem,这篇文章会简单介绍淘宝的布局思路以及具体 ...

  6. 移动端布局三种视口_移动端适配之视口和meta标签

    这是关于移动端适配的第一篇文章,这篇文章主要介绍视口以及和视口有关的meta标签的使用. 不管三七二十一,我们先新建一个页面: 这不是一个demo *{margin: 0; padding: 0;} ...

  7. 作为前端的你不能不知道的知识,总结物理像素,像素密度,分辨率,CSS像素,设备像素比,二倍图,layout viewport、visual viewport 、ideal viewport、meta。

    此篇文章总结物理像素,像素密度,分辨率,CSS像素,设备像素比,二倍图,layout viewport.visual viewport .ideal viewport.meta. 首先我们来谈谈最基础 ...

  8. 【移动端适配 视口viewport】移动端meta属性设置的理想视口是什么

    1.看一下我的代码 <!DOCTYPE html> <html lang="en"> <head><meta charset=" ...

  9. Vue笔记 (二) 如何做移动端适配 让你只用关心设计稿

    一. 移动端基础知识 在移动端开发时,我们经常发现出现布局后有不兼容的问题,如何在不同设备上进行适配呢,希望康完这边,你能从原理到应用彻底熟悉移动端适配. 1.1 手机屏幕现状 移动端设备屏幕尺寸非常 ...

最新文章

  1. js中修改this的指向方法整理
  2. 通过tomcat实现多域名配置
  3. 【Ansible】3个让Ansible性能飞起的简单优化方案!
  4. 逆向寒假生涯(27/100)
  5. 根据json文件读取json信息
  6. 开始学习VS2008+.net3.5咯 :)
  7. php请求api获取返回值,我用curl请求接口获取返回值,但是不成功,大神给看看怎么调取?...
  8. Open vSwitch 概述
  9. Kaldi 语音识别基础教程
  10. ios手机Safari本地服务连不上
  11. 警告!不要购买安桥Htx22hdx直到你读这
  12. 双色球机器人博客博客,双色球预测程序算法
  13. fdfs文件服务环境搭建详细教程
  14. 经典网络结构梳理:SSD目标检测算法。
  15. Windows批处理添加注释
  16. Spring Boot Admin 发送监控邮件
  17. 游标v_cur的%notfound
  18. C/C++编译器并行优化技术:并行优化针对多核处理器和多线程环境进行优化,以提高程序的并行度
  19. 计算机二级c 在线模拟考试,全国计算机等级考试二级C考试模拟题
  20. Flag Engine(动画系统)学习笔记(六)——动画片段

热门文章

  1. 测试一下StringBuffer和StringBuilder及字面常量拼接三种字符串的效率
  2. 20道常见初级Java面试题
  3. 看初中生如何高薪就业
  4. 了解过去与理解现在的一把钥匙
  5. 利用frp进行内网穿透
  6. java fx alert_javaFx:使用弹出对话框 Alert
  7. 多节锂电串联保护板ic_两节锂电池保护IC,芯片电路图如何设计
  8. 教你如何运用golang 实现数组的随机排序
  9. android怎么模拟返回,Android中障蔽返回键,HOME键以及模拟HOME键返回效果的方法...
  10. 服务器开启虚拟机就死机,解决ESXi服务器上磁盘锁导致虚拟机卡死的问题