我知道,如有可能,应避免监听滚动事件。但是有时候很难避免。
我想通过切换位置来使元素发粘:在我滚动过去时固定在其上。不能使用位置:粘性,单独的讨论。
这是我想做的简化版:如果滚动到200px以上,我想应用该类。
我知道我每次滚动时都要执行(> 200){...}检查,但是此检查实际上会影响性能吗?我尝试对其进行反跳操作,但即使在50毫秒时,我也可以滚动经过该元素并在它变得粘滞时变混浊。
即使50ms的抖动消除在视觉上也起作用,我仍然每隔50ms运行一次此功能。...这可能也很糟糕。
有什么想法吗?
window.addEventListener( 'scroll', () => {
if ( 200 > window.pageYOffset ) {
document.body.classList.remove( 'search-filters-sticky' );
} else {
document.body.classList.add( 'search-filters-sticky' );
}
} );