滚动到某种程度后修复右列顶部

时间:2012-09-18 14:17:22

标签: scroller

当我能看到它的最后一部分时,我想修复“#rightPanelscrl”的位置。我使用下面的代码,它在FF中正常运行,而不是在Chrome中工作..任何人都可以请... ..

 var sidebarScrollTop = 0;

$(window).load(function () {
    sidebarScrollTop = $("#rightPanelscrl").offset();
    if ($("#rightPanelscrl").height() > 500) {
        alert($("#rightPanelscrl").height());
        $(window).scroll(function () {

            var docScrollTop = $('body,html').scrollTop();
            //  alert(docScrollTop);
            if (docScrollTop > 500) {
                $("#rightPanelscrl").css({ position: 'fixed', top: '-500px' });
            }
            else {
                $("#rightPanelscrl").css({ position: 'static' });
            }
        });
    }
    else if ($("#rightPanelscrl").height() < 500) {
        $("#rightPanelscrl").css({ position: 'fixed', top: '35px' });
    }

});

$(window).resize(function () {
    sidebarScrollTop = $("#rightPanelscrl").offset().top;
});

$(document).resize(function () {
    sidebarScrollTop = $("#rightPanelscrl").offset().top;
});

1 个答案:

答案 0 :(得分:0)

我更喜欢通过在某个滚动点添加CSS类而不是使用jQuery来修改定位来实现这一点。它使代码更简单! Check this out

基本上,你有#rightPanelscrl

<ul id="rightPanelscrl">
    <li><a href="#">one</a></li>
    <li><a href="#">two</a></li>
    <li><a href="#">three</a></li>
    <li><a href="#">four</a></li>
    <li><a href="#">five</a></li>
</ul>​

你的CSS:

body {height: 2000px;}    
#rightPanelscrl {
    position:absolute; 
    top:140px; 
    z-index:4; 
    width:100%;  
}    
#rightPanelscrl.fixed {
    position:fixed; 
    top:0px;
}
​

和你的jQuery:

$(document).ready(function() {
    var theLoc = $('#rightPanelscrl').position().top;
    $(window).scroll(function() {
        if(theLoc >= $(window).scrollTop()) {
            if($('#rightPanelscrl').hasClass('fixed')) {
                $('#rightPanelscrl').removeClass('fixed');
            }
        } else { 
            if(!$('#rightPanelscrl').hasClass('fixed')) {
                $('#rightPanelscrl').addClass('fixed');
            }
        }
    });
});