当通过滚动侦听器调整某些div时,Edge浏览器会导致它们出现扭曲。在IE,Chrome,Opera或Firefox中不会出现这种讨厌的声音。

即使Firefox不会引起不必要的干扰,当它检测到首次使用滚动侦听器时,它也会在控制台中引发一个标志,并将我定向到此页面进行说明:

https://developer.mozilla.org/docs/Mozilla/Performance/ScrollLinkedEffects

本文介绍了Edge出现的问题的确切描述:



它仅提供两个解决方案,第一个解决方案(位置:粘性)仅对浏览器提供了有限的支持,第二个解决方案(滚动捕捉)已从网络标准中删除。

进一步深入,我发现Edge的开发团队撰写了一篇有关APZ(异步平移和缩放)的好文章:

https://blogs.windows.com/msedgedev/2017/03/08/scrolling-on-the-web/#ahrEuFu6fybJ1uwj.97

如果可以打开和关闭APZ,那将是理想的选择,但是我找不到解决方法。但是Firefox已经实现了它,这对我的例行程序来说没有问题,但是Edge的实现存在很大问题,尤其是因为它不提供对位置的支持:粘性。

还有其他解决方法吗?这是一个问题。

最佳答案

您可以通过将可滚动元素包装在另一个包装中,迫使该包装元素进入其自己的层,然后最后在该包装中添加另一个虚拟的位置固定元素,来强制edge关闭APZ的实现。

您的HTML如下所示:

// Wrapper element, forced into it's own layer with translateZ.

<div id="wrapper_element" style="transform: translateZ(0);">

    // Dummy position fixed element to force APZ off.
    <div style="top: 0px; width: 1px; height: 1px; position: fixed; z-index: 1;"></div>

    // Your current scrollable element.
    <div id="your_scrollable_element">

         // Your content

    </div>

</div>

这应该可以解决您的问题。

关于javascript - Edge janky中的异步滚动(APZ)和问题;不在IE或其他浏览器中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44634975/

10-12 00:03
查看更多