用scrollTop替换粘性导航条以获得60 FPS的性能
Alternative of swapping out sticky nav bar for 60 FPS performance with scrollTop?
我有一个要求,如果用户向下滚动到某个点,我们的粘性条必须交换为另一个条。我有工作代码,但当我看性能时,它相当慢。我使用Chrome开发工具,有时它会超过30 FPS,这会导致滚动缓慢。
这是我想知道的代码,我该如何编码,而不使用scrollTop
来不断检查滚动条的位置以获得更好的性能?
我已经使用debounce
来减少触发的事件数量,但仍然看到一些性能影响。
if ( this.dom.singleTitle.length ) { // this is to check if the element is present on the page
this.dom.window.on('scroll', $.proxy( debounce( this.toggleNav, 50 ), this ) )
}
toggleNav: function() {
var screenTop = this.dom.document.scrollTop();
if ( screenTop > this.dom.singleTitle.offset().top + 50 ) {
if ( this.dom.mainNav.hasClass('expanded') ) {
this.dom.mainNav.removeClass('expanded');
this.dom.toggleTopbar.toggleClass('icon-menu icon-close');
this.dom.body.removeClass('disable');
}
this.dom.headerShare.fadeIn(600);
}
else {
this.dom.headerShare.fadeOut(600);
}
}
如果可能的话,尽量使用CSS3,只使用jQuery作为后备。CSS3动画要流畅得多。不要使用scrollTop
,而是使用转换translate3d
,您会注意到差异。
要查看css3是否受支持,可以查看此解决方案。
此外,尽量避免fadeIn
或fadeOut
以及使用阴影或带半径的边界。
需要说明的是,图像应该在重量和大小上进行优化,以便在设置动画时获得更好的性能。
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 提高JQuery的性能
- 使用正则表达式评估电子邮件地址时出现性能问题
- React:按键的性能提升
- 在Three.js中导出网格会提高性能吗
- 在javascript中搜索项目列表的性能
- 为什么在许多浏览器中drawImage()的性能略好于createPattern()
- JavaScript数组优化以提高性能
- React+Redux性能优化与组件ShouldUpdate
- 在循环中附加事件处理程序时出现浏览器性能问题
- JavaScript-===vs===运算符性能
- 超时功能的性能
- Pg承诺性能提升:在冲突中
- immutable.js与嵌套映射/对象的比较/相等性能
- NodeJ中的注释会影响性能吗
- 如果条件为循环-性能差异
- <脚本类型=“;模块“>负载性能
- 我应该如何将响应数据保存在对象(json)中以获得更好的操作和性能
- 错误编码的Adsense广告正在扼杀我的网站's的性能
- 用scrollTop替换粘性导航条以获得60 FPS的性能