0

当我看到“#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;
});
4

1 回答 1

0

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

本质上,你有你的#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');
            }
        }
    });
});
于 2012-09-18T14:44:27.750 回答