缩小至适合视口元属性有什么作用?


143

我在查找有关此文档的过程中遇到了麻烦。它是Safari专用的吗?

iOS 9(此处)中有一个最近的错误,该错误的解决方案是添加shrink-to-fit=no到视口元数据中。

该代码的作用是什么?

Answers:


193

它是Safari特定的,至少在撰写本文时,已在Safari 9.0中引入。来自“ Safari的新功能?” Safari 9.0的文档

视口更改

使用视口元标记"width=device-width"会导致页面缩小以适合超出视口范围的内容。您可以通过添加"shrink-to-fit=no"到元标记来覆盖此行为,如下所示。增加的值将阻止页面缩放以适合视口。

<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">

简而言之,将其添加到视口元标记中可恢复Safari 9.0之前的行为。

这是一个实际的可视示例,显示了在两种配置下加载页面时的区别。

红色部分是视口的宽度,蓝色部分位于初始视口(例如left: 100vw)的外部。请注意,在第一个示例中,如何shrink-to-fit=no省略页面(以显示视口外的内容),页面如何缩放以适合页面大小,而在后一个示例中,蓝色内容仍不在屏幕上。

可以在https://codepen.io/davidjb/pen/ENGqpv中找到此示例的代码。

没有指定收缩配合

没有缩小到适合=否

缩小至适合=否

缩小至适合=否


2
很抱歉,但是我仍然不明白该代码的作用。您可以用其他方式解释吗?谢谢!
丹尼尔·史普林格

3
@Dani默认情况下,Safari将缩小页面以适合任何溢出视口的内容(第一个示例将蓝色区域显示为可见;这是溢出的)。指定shrink-to-fit=no可防止此行为,将缩放级别保留下来,将溢出的内容留在屏幕外。在您的iDevice(或iOS模拟器)上尝试Codepen示例,然后尝试更改设置。交互式地查看更改可能会有所帮助。
davidjb

2
啊,我明白了。但是,为什么有人希望将其部分内容隐藏在较小的屏幕上?
丹尼尔·斯普林格

7
@Dani各种原因,但快速的示例是将内容放置在视口之外的滑块/轮播,或者其他大的无响应内容(例如,图像/表格),否则这些内容会溢出并导致页面的其余部分在默认情况下变小shrink-to-fit行为。使用shrink-to-fit=no,页面保持在预期大小,从而使内容从视口溢出。用户仍然可以(通常)滚动或缩小以查看溢出内容,但初始视口与设备大小匹配。
davidjb

2
@davidjb我认为这已在最新的iOS 11中修复。我无法重现此错误。
Zeel Shah

12

作为iOS使用情况的统计信息,表明iOS 9.0-9.2.x当前使用率为0.17%。如果这些数字确实表明这些版本已在全球范围内使用,则从视口元标记中删除“缩小以适合”的可能性更大。

9.2.x之后 iOS会在其浏览器中删除此标签检查。

您可以查看此页面https://www.scottohara.me/blog/2018/12/11/shrink-to-fit.html

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.