网页并非仅仅因为视觉上已渲染就固定不变。媒体资源(如图像)可能会出现并导致布局发生偏移,因为它们的尺寸通常在流体布局中直到渲染后才确定。或者字体可能会加载并重新调整布局。或者 XHR 可能会引入更多内容放置到页面上。我们一直在尽最大努力防止布局发生偏移——这就是我所说的布局卡顿。它很笨拙,没有人喜欢它。最好的情况是,它会导致你在阅读时失去位置;最糟糕的情况是,它可能意味着点击了你实际上并不想点击的内容。

当我试图理解新的 布局不稳定性 API 并与朋友们讨论时,Eric Portis 说了一些非常有见地的话。基本上,布局卡顿确实是一个问题,并且正在多方面进行解决
- 从内容/创作层面解决问题:我们现在有了
intrinsicsize
作为 HTML 属性 和aspect-ratio
作为 CSS 属性。两者都是为解决这个问题而设计的,尽管它们目前还没有很好的浏览器支持,需要使用 DIY 纵横比盒子 代替。此外,像这样的想法 更改为 UA 样式表以扩大纵横比的有效性。 - 从浏览器行为层面解决问题:滚动锚定 也旨在解决此问题。它现在默认启用是一个很大的进步。如果您需要,也可以通过 CSS 控制它,方法是使用
overflow-anchor
。 - 测量问题和原因:布局不稳定性 API 旨在用于此目的,大概是为了启用监控它的工具。
五年后,这个问题将不复存在,我们将讲述网络过去是如何卡顿和抖动的。
不,五年后它会变得更加普遍。
对于某些用户体验,卡顿将被完全消除,而其他用户体验则会因开发人员试图使用 Houdini 布局 API 创建自己的显示布局模式而加剧卡顿,方法是在每次滚动事件触发时都触发昂贵的计算,而不是遵循适用于除 Safari 之外的所有内容的一套既定的准则。