尽管<meta name="viewport">
标签没有标准化,但由于事实上的主导地位,“大多数移动浏览器都会尊重它”。
它不是真正的Web标准的一个缺点是详细文档不像其他标准那样容易获得。CSS工作组为此制定了一项规范,因此我主要使用它作为权威工作。
我的主要问题是:
以下声明之间的感知差异会是什么?
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="viewport" content="initial-scale=1.0">
换一种方式问,这两个@viewport CSS at-rules有什么不同:
/* Translated from <meta name="viewport" content="width=device-width, initial-scale=1.0"> */
@viewport {
zoom: 1.0;
min-width: extend-to-zoom;
max-width: 100vw;
}
/* Translated from <meta name="viewport" content="initial-scale=1.0"> */
@viewport {
zoom: 1.0;
min-width: extend-to-zoom;
max-width: extend-to-zoom;
}
我是如何得出那些 @viewport
翻译的:
width=device-width
翻译为 min-width: extend-to-zoom; max-width: 100vw;
width
和height
视口<META>
属性被翻译成width
和height
描述符,将min-width
/min-height
值设置为extend-to-zoom
,将max-width
/max-height
值设置为视口长度。
他们还给出了一个example:
This
<META>
element:
<meta name="viewport" content="width=500, height=600">
translates into:
@viewport { width: extend-to-zoom 500px; height: extend-to-zoom 600px; }
width
shorthand descriptor是描述为:
这是用于设置
min-width
和max-width
的缩写描述符。一个<viewport-length>
值将同时设置min-width
和max-width
。两个<viewport-length>
值将把min-width
设置为第一个值,将max-width
设置为第二个值。
因此,width: extend-to-zoom 500px;
相当于min-width: extend-to-zoom; max-width: 500px;
。
只剩下100vw
部分。在section 10.4中,他们解释道:
device-width
和device-height
分别转换为100vw和100vh
因此,我们最终可以看到width=device-width
如何被转换为min-width: extend-to-zoom; max-width: 100vw;
。
initial-scale=1.0
到zoom: 1.0; width: extend-to-zoom;
这是一个verbatim example:
This
<META>
element:
<meta name="viewport" content="initial-scale=1.0">
translates into:
@viewport { zoom: 1.0; width: extend-to-zoom; }
我在这里有另一个问题,什么是
extend-to-zoom
值?
关于此的文档和其解决方案程序很难理解。如果有人能指向一些更多的例子,那将不胜感激。
除了上述所有内容,我还制作了一个快速站点 - https://romellem.github.io/temp-site/viewport/ - 用于测试一些视口配置。
具体来说:
这可能有助于测试。
viewport
标签属性时,如果没有指定initial-scale
,你可以找到一个感知差异的方法。例如,当你写<meta name="viewport" content="360px">
时,你知道你不能控制初始缩放级别。因此,在我的有限测试中,UA样式总是会缩小(通过一些可能不规范的过程)视口。然而,实际视口的宽度始终保持在360px
,无论初始视口大小如何。 - Richardmax-width
的值大于初始视口宽度时,最小值将是初始视口宽度,最大值将是max-width
的值。extend-to-zoom
在语义上是有意义的,因为对于min-width
上的extend-to-zoom
,当缩放为1.0
时,它可以将该值扩展到视口宽度。这与上面的答案一致,即给定缩放级别,extend-to-zoom
会改变/扩展/延长width
值。 - Richard