Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 是否可以提高.scroll事件中.css方法的速度?_Jquery_Performance - Fatal编程技术网

Jquery 是否可以提高.scroll事件中.css方法的速度?

Jquery 是否可以提高.scroll事件中.css方法的速度?,jquery,performance,Jquery,Performance,这是我的代码: $( window ).scroll( function () { scrollBG( '#about' ); } function scrollBG( e ) { bg_position = $( document ).scrollTop() / 2; $( e ).css( 'background-position-y', bg_position ); } 它所做的是在用户滚动时滚动元素的背景。 这很好,唯一的问题是当使用鼠标滚轮滚动时,css需要几毫秒才

这是我的代码:

$( window ).scroll( function () {
    scrollBG( '#about' );
}

function scrollBG( e ) {
  bg_position = $( document ).scrollTop() / 2;
  $( e ).css( 'background-position-y', bg_position );
}
它所做的是在用户滚动时滚动元素的背景。 这很好,唯一的问题是当使用鼠标滚轮滚动时,css需要几毫秒才能跟上(因为鼠标滚轮一次移动100像素)

有没有办法使css的更改瞬间发生? 也许本地JavaScript更快

我注意到这个插件没有我所面临的问题,但我不想使用它,因为它似乎过度满足了我的需要:

一些想法:

  • 在元素上有其他css规则需要维护吗?如果不直接设置样式属性,则可能会更快

  • 正如Kevin B在评论中所建议的,您可以延迟背景的实际移动,并可能设置位置移动的动画,以减少移动时的震动


实际上没有,滚动事件每秒仅触发有限次。 首先-尝试将背景附件设置为固定。
第二,最好尽可能使用requestAnimationFrame,而不是jQuery$(window).scroll方法。

您可以使用节流阀和可能的增量检查来避免每次移动时更改css,而不是在滚动位置每x ms和/或每z更改一次。我尝试了.style方法,但没有区别。关于延迟css更改,我不能这样做-更改需要在完全相同的时间发生。只需将元素的后台附件属性设置为fixed就可以了!使用鼠标滚轮滚动时不再紧张。:)我想知道为什么?我的函数以完全相同的方式工作。。无论如何,这是因为当后台附件未设置为“固定”时,浏览器会重新计算(并应用)其位置,然后应用新位置,由js重新计算。