Javascript 位置:固定的粘性导航中的CLS(累积布局移位)

Javascript 位置:固定的粘性导航中的CLS(累积布局移位),javascript,html,css,web-vitals,Javascript,Html,Css,Web Vitals,随着新的网络重要信息的到来,我的粘性导航/菜单出现了问题。事实上,大多数页面都有:- 问题是,当菜单离开视口时,我使用了一种类似于引导粘贴的方法来使其粘滞。但每次菜单离开视口并同时进入视口,并且位置从相对/静态/绝对设置为固定时,都会增加CLS累积布局偏移。我意识到,将位置更改为“固定”将导致布局移动,因为元素从层中移除,并且所有后续元素都将移动到顶部 但是:这就是为什么我想出了一些解决方案,我认为最好的办法是在菜单周围使用一个特定高度的包装。因此,当菜单的位置更改为“固定”时,包装器仍然存在,

随着新的网络重要信息的到来,我的粘性导航/菜单出现了问题。事实上,大多数页面都有:-

问题是,当菜单离开视口时,我使用了一种类似于引导粘贴的方法来使其粘滞。但每次菜单离开视口并同时进入视口,并且位置从相对/静态/绝对设置为固定时,都会增加CLS累积布局偏移。我意识到,将位置更改为“固定”将导致布局移动,因为元素从层中移除,并且所有后续元素都将移动到顶部

但是:这就是为什么我想出了一些解决方案,我认为最好的办法是在菜单周围使用一个特定高度的包装。因此,当菜单的位置更改为“固定”时,包装器仍然存在,并且位置或高度不变,这意味着不需要移动以下元素。但CLS仍在计算中。我不知道该怎么做才能在不影响CLS的情况下使我的菜单保持粘性,这一点很重要。顺便说一句,我不能使用位置:sticky,因为没有足够的浏览器支持。因为我认为我的建议是正确的:粘性工作不会对CLS产生负面影响,所以我的解决方案不会,尽管用户**根本看不到任何区别**

下面是一些更直观的伪代码:

...
<body>
   <h1>
      Headline
   </h1>

   <p>
      Here is some elements an stuff
   </p>

   <div class="menu-wrapper">
      <div class="menu">
         <ul>...........</ul>
      </div>
   </div>

   <p>
      More elements and stuff. Nothing shifting because the wrapper always has the same height.
   </p>
...
</body>
...

有什么想法吗?多谢各位

这可能固定在铬金丝雀90中

上下文:CLS更改日志报告了这方面的几项改进:

累积布局班次变更日志

这是对的更改列表

度量定义改进: 度量定义改进:。
同一页上列出的Chrome 89的其他修复也可能适用。

这可能在Chrome Canary 90中修复

上下文:CLS更改日志报告了这方面的几项改进:

累积布局班次变更日志

这是对的更改列表

度量定义改进: 度量定义改进:。
同一页面上列出的Chrome 89的其他修复程序也可能适用。

欢迎链接到解决方案,但请确保您的答案在没有它的情况下是有用的:这样您的其他用户就会知道它是什么以及为什么存在,然后引用您链接到的页面的最相关部分,以防目标页面不可用。欢迎链接到某个解决方案,但请确保您的答案在没有它的情况下是有用的:这样您的其他用户就会知道它是什么以及为什么存在,然后引用您链接到的页面的最相关部分,以防目标页面不可用。在添加固定类之前和之后,当我尝试使用位置固定标题时,我遇到了相同的问题,但我的包装器具有相同的高度。被触发的脉冲电流。等待修复:在添加fixed类之前和之后,当我尝试但我的包装器具有相同的高度时,我的位置固定标题也有相同的问题。被触发的脉冲电流。正在等待修复:
.menu-wrapper {
   height: 60px;
   width: 100%;
}

.menu {
   height: 60px;
   width: 100%;
   position: static;
}

.menu.affix {
   position: fixed;
   top: 0;
}