jQuery固定的侧边栏在滚动时闪烁

时间:2018-12-04 16:31:02

标签: jquery scroll sidebar sticky

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

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

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

JS:


    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 >= (jQuery("#sidebar").offset().top + jQuery("#sidebar').height())) {        
            jQuery('#sidebar').addClass('sticky');
        } else {
            jQuery('#sidebar').removeClass("sticky");
        }
    }

CSS:


    .sticky {
        position: fixed;
        top: 0;
    }

1 个答案:

答案 0 :(得分:0)

已修复:

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");
    }
}