0

这是我的代码:

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

function scrollBG( e ) {
  bg_position = $( document ).scrollTop() / 2;
  $( e ).css( 'background-position-y', bg_position );
}

它所做的是在用户滚动时滚动元素的背景。这很好用,唯一的问题是当使用鼠标滚轮滚动时,css 需要几毫秒才能赶上(因为鼠标滚轮一次移动 100 像素)。

有没有办法让css改变瞬间发生?也许原生 JavaScript 更快?

我注意到这个插件没有我面临的问题,但我不想使用它,因为它似乎对我的需求有点过分:http: //johnpolacek.github.io/superscrollorama/

4

2 回答 2

1

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

于 2013-09-18T20:18:40.487 回答
0

几个想法:

  • 您对元素还有其他 CSS 规则要维护吗?如果不直接设置样式属性可能会更快。

  • 正如 Kevin B 在评论中所建议的那样,您可以延迟背景的实际移动,并可能为位置移动设置动画以使移动不那么刺耳。

于 2013-09-18T20:04:09.453 回答