当通过滚动侦听器调整某些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/