meta viewport 是用来做什么的?怎么用?

2020-03-06  本文已影响0人  饥人谷1904_陈俊锋

题目同样是 面试 会问到的一个常见问题之一,同样我们刚开始还是先 科普 一下 前置知识

viewport

移动设备上的 viewport 是设备屏幕上用来显示网页的那部分区域,再具体一点就是浏览器上用来显示网页的那部分区域,但 viewport 又不局限于浏览器可视区域的大小,它可能比浏览器的可视区域大,也可能比浏览器的可视区域小。在默认情况下,移动设备上的 viewport 都是大于浏览器可视区域的,这是因为移动设备的分辨率相对于PC来说都比较小,所以为了能在移动设备上正常显示那些为PC浏览器设计的网站,移动设备上的浏览器都会把自己默认的 viewport 设为 980px 或 1024px(也可能是其它值,由设备本身决定),但后果是浏览器出现横向滚动条,因为浏览器可视区域的宽度比默认的 viewport 的宽度小。

荷兰前端大神 PPK 关于三个 viewport 的理论

移动设备上的浏览器认为自己必须能让所有的网站都正常显示,即使是那些并不为移动设备设计的网站。因为移动设备的屏幕都不是很宽,所以那些为桌面浏览器设计的网站放到移动设备上显示时,如果以浏览器的可视区域作为 viewport 的话,必然会因为移动设备的 viewport 太窄而挤作一团,甚至布局什么的都会乱掉。

现如今手机分辨率越来越高,比如:768×1024 甚至 1080×1920 等等,分辨率这么高,用来显示为桌面浏览器设计的网站有没有问题呢?答案是肯定的,在前面科普前置知识的时候,我们已经知道了,1px CSS 像素并不一定代表屏幕上的 1px,分辨率越大,CSS 中的 1px 代表的物理像素就会越多,devicePixelRatio 的值也越大。以为分辨率增大了,但是屏幕尺寸并没有变大多少,必须让 CSS 中的 1px 代表更多的物理像素,才能让 1px 的东西在屏幕上的大小与那些低分辨率的设备差不多,步然就会因为太小哦啊二看不清。

如果把移动设备上的浏览器的可视区域设为 viewport 的话,某些网站就会因为 viewport 太窄而显示错乱。所以在默认情况下,移动设备将 viewport 设为一个较宽的值,比如 980px,这样的话即使是那些为桌面浏览器设计的网站也能在移动设备浏览器显示正常了,这个默认的 viewport 值叫做 layout viewportdocument.documentElement.clientWidth

layout viewport 的宽度是大于浏览器可视区域宽度的,所以我们需要一个 viewport 来代表浏览器可视区域的大小:visual viewportwindow.innerWidth Android 2,Oprea mini 和 UC 8 中无法获取。

移动网络普及大众,现在越来越多的网站都会为移动设备进行单独的设计,此时必须有一个能够完美适配移动设备的 viewport。

完美适配:

浏览器所需要的完美适配 viewport,PPK 将它称之为 ideal viewport(移动设备的理想 viewport)。它没有固定尺寸,因为它的宽度就是移动设备的屏幕宽度,不同的设备拥有不同的 ideal viewport。

无论在何种分辨率的屏幕下,针对 ideal viewport 设计的网站,不需要用户手动缩放,也不需要出现横向滚动条,都可以完美得将页面呈现给用户。

meta viewport

要实现 ideal viewport ,需要用到 meta 标签。

在 head 标签中加入 viewport 的 meta 标签:

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0">

该meta标签的作用是让当前viewport的宽度等于设备的宽度,同时不允许用户手动缩放。当然maximum-scale=1.0, user-scalable=0不是必需的,是否允许用户手动播放根据网站的需求来定,但把width设为width-device基本是必须的,这样能保证不会出现横向滚动条。

meta viewport 的六个属性

总结

meta viewport 是用于适配移动设备的,为了使不管是什么宽度的页面都能在移动设备端得到完美适配(不需要用户缩放和滚动横向滚动条并且字体图片等显示正常)。

如果不知道设备的理想宽度就用特殊值 device-width,同时 initial-scale=1 来的到一个理想的 viewport (ideal viewport)。

实际上,现在市面上虽然有那么多不同种类不同品牌不同分辨率的手机,但它们的理想viewport宽度归纳起来无非也就 320、360、384、400等几种,都是非常接近的,理想宽度的相近也就意味着我们针对某个设备的理想viewport而做出的网站,在其他设备上的表现也不会相差非常多甚至是表现一样的。


参考:

移动前端开发之viewport的深入理解

meta viewport 是做什么用的,怎么写?

viewport

上一篇 下一篇

猜你喜欢

热点阅读