虚拟视口

Author Avatar
Miaoxingren 6月 01, 2017

本文根据 Matt Gaunt 的 What the Virtual Viewport? 翻译,无法保证译文完全正确。

Chrome M40对viewport做了一个非常微妙的更改,但对用户来说应该有很大的不同。

移动浏览器启动时,缺少viewport元标签意味着浏览器会让网页认为它有大约980px的屏幕空间,并以这个大小呈现。如果使用viewport元标签,则开发人员可以定义宽度,通常定义为device-width设备宽度,这会将屏幕大小设置为设备大小。可以在Web基础上了解更多信息。

Rick Byers是这样描述虚拟视窗的:虚拟视口的概念旨在将“视口”的概念分成两个,“布局视口”(position属性为fixed的元素将附着到该视口)和“视觉视口”(用户实际上看到的)。

一个超级简单的例子

videojs.com网站是一个很好的例子,因为它的应用程序栏appbar固定在顶部,并且在应用程序栏的左右两边都有链接。

下面的图片展示了在一个网站上放大和尝试左右平移的结果。

上面的设备是Chrome M39,它没有虚拟视口,下面的设备是来自于Chrome M40,它有虚拟视口。

pixelated rendering

pixelated rendering

在Chrome M39中,放大后会看到应用程序栏,但是滚动到右边看不到应用程序栏右边的链接,只会看到logo。

比较可以发现,Chrome M40(有“虚拟视口”)中,“视觉视口”可以滚动在“布局适口”里的所有东西,从而可以查看右边的链接。

IE浏览器已经有了这种行为,这些变化使我们与他们更加一致。

html { overflow: hidden; }

开发人员面临的唯一的主要变化是,在M39中,可以对html元素使用overflow: hidden,页面仍然会滚动;在M40中,则不再支持,使用该属性页面将不会滚动。

更可靠的信息

你想学更多吗?

那么,你可以查看下面的幻灯片,或者看看Rick的Google+ Post,你真的应该这么做,因为他在这方面比我在行得多。