【问题标题】:jQuery fixed sidebar flickering on scrolljQuery修复侧边栏在滚动时闪烁
【发布时间】:2026-01-14 21:05:02
【问题描述】:

我正在尝试使页眉和侧边栏在滚动时保持粘性。标题很好。侧边栏也会粘住,但会不断闪烁。我在某处读到这是由于 Chrome 错误,但这个问题是普遍的。

当我尝试通过开发人员工具进行调试时,我可以看到“sticky”类被不断添加和删除到侧边栏,这与标题不同。

任何见解都将受到高度赞赏。

JS:

函数 ScrollFunc() { /* 导航栏 */ if (window.pageYOffset >= (jQuery('#nav-wrapper').height()) { jQuery('#nav-wrapper').addClass("sticky"); } 别的 { jQuery('#nav-wrapper').removeClass("sticky"); } /* 侧边栏 */ if (window.pageYOffset >= (jQuery("#sidebar").offset().top + jQuery("#sidebar').height())) { jQuery('#sidebar').addClass('sticky'); } 别的 { jQuery('#sidebar').removeClass("sticky"); } }

CSS:

.粘性{ 位置:固定; 顶部:0; }

【问题讨论】:

    标签: jquery scroll sidebar sticky


    【解决方案1】:

    固定:

    jQuery(window).load(function() {
        crazyOffset = jQuery('#sidebar').offset().top + jQuery('#sidebar').height();
    });
    
    function ScrollFunc() {
        /* navbar */
        if (window.pageYOffset >= (jQuery('#nav-wrapper').height()) {
            jQuery('#nav-wrapper').addClass("sticky");
        } else {
            jQuery('#nav-wrapper').removeClass("sticky");
        }
    
        /* sidebar */
        if (window.pageYOffset >= crazyOffset) {        
            jQuery('#sidebar').addClass('sticky');
        } else {
            jQuery('#sidebar').removeClass("sticky");
        }
    }
    

    【讨论】: