javascript – 没有onScroll更快的滚动?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 没有onScroll更快的滚动?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1615字,纯文字阅读大概需要3分钟。
内容图文
![javascript – 没有onScroll更快的滚动?](/upload/InfoBanner/zyjiaocheng/735/92a35d92a35d4d368c1bf63fa35d1986.jpg)
在阅读this article关于更快的滚动效果后,我感到非常兴奋.我使用了Warry的方法,看看我是否能发现性能上的任何差异 – 与使用scroll事件监听器相比:
window.addEventListener('scroll', function() {
console.log('Scrolling: ' + window.pageYOffset);
});
文章代码:
function loop() {
if (lastPosition == window.pageYOffset) {
requestAnimationFrame(loop);
return false;
} else lastPosition = window.pageYOffset;
console.log('Scrolling: ' + window.pageYOffset);
// make sticky calculations...
requestAnimationFrame(loop);
}
loop(); // start loop
这两段代码输出相同的(Y)偏移量,并且在性能方面似乎相同.所以我的问题是:这篇文章是对的吗?
另外,requestAnimationFrame如何适合这张图片?我知道它告诉浏览器它希望执行重新绘制.或者…位置固定的方式去了吗?我对这个主题感兴趣,因为我正在开发一个关于粘性元素的插件.
任何信息或建议表示赞赏!
解决方法:
由于滚动事件可以以高速率触发,因此事件处理程序不应执行计算上昂贵的操作,例如DOM修改.相反,建议使用requestAnimationFrame,setTimeout或customEvent来限制事件.
It’s important to not only use requestAnimationFrame for your animations, but also to use it in the right way. – html5rocks
另见https://developer.mozilla.org/en-US/docs/Web/Events/scroll
这是获得正确浏览器前缀的一小段代码.如果requestAnimationFrame不受支持,我们将回退到setTimeout(function(){},0).
var requestAnimationFrame = window.requestAnimationFrame
|| window.webkitRequestAnimationFrame
|| window.mozRequestAnimationFrame
|| window.msRequestAnimationFrame
|| window.oRequestAnimationFrame
|| function(callback){ setTimeout(callback, 0) };
// Usage
window.addEventListener('scroll', function() {
requestAnimationFrame(this.scroll); // call scroll event handler
});
内容总结
以上是互联网集市为您收集整理的javascript – 没有onScroll更快的滚动?全部内容,希望文章能够帮你解决javascript – 没有onScroll更快的滚动?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。