我在这里建立我的网站:argit.bounde.co.uk
我知道使用 $(window).scroll();
是不好的,因为这会导致某些浏览器出现问题,并且已阅读 at this blog post关于它可能导致的问题。
我有一个函数 navCheck
,它由两部分组成,修复导航(如果你调整浏览器的大小使其变窄,你会看到第二个)和选择哪个导航应该占据“over”状态。
我对 jQuery 很陌生,无法实现 John 的方法,它不喜欢我放置变量的位置。所以我想我会在我的 navCheck 函数中包含一个 setInterval
来控制它触发的次数。但是我不能让左侧导航固定功能的间隔大于 1 毫秒,否则会有明显的跳跃。
我想知道默认情况下 .scroll() 触发的频率以及追求的最佳选择是什么。我是否应该将函数的固定部分移动到一个单独的函数并每 1 毫秒触发一次,然后保留函数的“结束”部分并每 250 毫秒触发一次?或者只是让所有东西每 1 毫秒触发一次?甚至比标准 .scroll() 的性能更高
或者同样,如果您能帮助我实现 John 的解决方案,这也是向前迈出的一步,因为那应该会更好,但我不明白我将如何实现它。
最佳答案
你真的不需要计数。答案是“很多”,并且特定于实现。
您的目标应该是使用滚动设置状态,然后使用 setTimeout 在循环中检查该状态。
如果您的函数精简,在 scroll|resize|mousemove|etc
内部,没有什么可以阻止您使用它们。
但是当我说“精益”时,我的意思是
window.onscroll = function (e) {
screen_obj.x = ...;
screen_obj.y = ... ;
};
在那之外进行投票。将其设置为 60fps,或任何你喜欢的。
郑重声明,一些浏览器实际上不会给您 1 毫秒,它们只会给您最小的时间间隔。
关于javascript - .scroll() 多久触发一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15901598/