Viewport的概念

Viewport

电脑上面的Viewport概念

电脑上面的viewport概念比较简单,就是可视化区域。
里面有几个关键点

screen.width,screen.height:
屏幕的宽高(设备像素)

下面的单位都是像素。
window.innerWidth,
window.innerHeight:视窗内部宽(包含滚动条),视窗内部高(包含滚动条)

window.pageXoffset,
window.pageYoffset:文档的偏移

document.documentElemnet:就是HTML元素,
document.documentElement.clientWidth,
document.documentElement.clientHeight:可视化区域也就是视窗(viewport)的宽,视窗的高

document.documentElement.offsetWidth,
document.documentElement.offsetHeight:文档的宽高。

像素是逻辑单位。例如视窗宽高400px,当缩放200%的时候,视窗宽高200px。因为缩放两倍的时候,一像素扩充覆盖了两倍像素的大小。

事件里面的像素

事件里面包含了不少于5个关于位置的属性。常用的是

pageX,pageY:文档中的坐标
screenX,screenY:屏幕中的坐标
clientX,clientY:视窗中的坐标
其中pageX,pageY可以满足90%的需要,剩下用一下clientX,clientY就足够了。

手机上面的Viewport概念

手机里面的Viewport概念比较复杂。有 LayoutViewportVisualViewport。LayoutViewport是浏览器虚拟的一个视窗用来兼容显示桌面网站。苹果开始以一个扩展的方式引入了这个概念,手机上的safari默认宽为980px,后来其他浏览器也引入了此概念,只不过viewport宽度有些不同。

参考链接

像素不是像素,对手机和电脑的viewport有深入讲解

上篇文章的翻译

stackoverflow上面对viewport的讨论

苹果开发中心对viewport的解释和使用

原文地址:https://www.cnblogs.com/diaoxiong/p/5673839.html