gpt4 book ai didi

javascript - jQuery 视差/滚动事件性能

转载 作者:数据小太阳 更新时间:2023-10-29 05:53:05 32 4
gpt4 key购买 nike

这个问题与其说是视差,不如说是滚动事件。我对我的项目最关心的是视差滚动效果是平滑的而不是抖动的。

那么我的问题是,某些属性的动画/滚动效果是否比其他属性更好?例如,background-position 是否比在滚动时调整 margin-top 效果更好。

最佳答案

我不确定某些属性在设置动画时是否会比其他属性产生更少的开销,但如果有人发布有关该主题的一些有用信息,我将非常感兴趣。话虽这么说,我确实知道一些可以帮助提高性能的事情。

设置 position : absolute 将元素从页面的常规流中移除,因此不需要在动画时重绘整个页面。 position : relative 将强制重绘整个页面,因为祖先和后代元素会受到影响。

此外,您可以限制 scroll 事件并仍然达到 30fps:

var scroll_ok = true;
setInterval(function () {
scroll_ok = true;
}, 33);//33ms is 30fps, you can try changing this to something larger for better performance
$(window).bind('scroll', function () {
if (scroll_ok === true) {
scroll_ok = false;
//now run your code to animate with respect to scroll
}
});

更新::2014-08-26

自最初编写以来,情况发生了变化。一些简短的说明:

  • 现代浏览器现在尝试通过 GPU 加速给定一组特定属性(opacitytransform)的元素绘制。使用这些属性可以大大提高性能,优于其他属性,如 top/left(与使用 transform 相比,它们还需要在更多实例中重绘页面)。

  • will-change 是浏览器刚刚采用的新属性。您基本上可以设置一个可能更改的属性列表,以便浏览器可以提前优化属性更改。

  • requestAnimationFrame 具有强大的 polyfill 和良好的现代浏览器支持。这是一种更好的方式来平滑地为元素设置动画,而不会创建大量的“ block ”,因为浏览器将尽可能地呈现。

关于javascript - jQuery 视差/滚动事件性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8915376/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com