0

所以,我有一个 div,我试图在滚动时将 100px 从页面顶部保持到页面点之间。目前,我的代码工作正常,但 div 并没有保持在距离顶部 100px 的位置,而是在 0px - 200px 之间变化

这是我正在使用的atm:

$(window).scroll(function(){
var tpxl = $(window).scrollTop();
if( tpxl<100) {
$('#div').css('top',-Math.abs(tpxl)+100 + 'px');
}
else if(tpxl>700) {
$('#div').css('top',-Math.abs(tpxl)+800 + 'px');
}
});
4

1 回答 1

1

你不需要Math.abs(),因为tpxl它总是一个正数。要将 div 的位置设置为距窗口当前顶部 100px,请使用$(window).scrollTop() + 100 + 'px'.

我真的不明白为什么你有if/else if结构。以下将始终保持 div 固定在 100px:

$(window).scroll(function () {
    $('#div').css('top', $(window).scrollTop() + 100 + 'px');
}).scroll();

演示:http: //jsfiddle.net/G5BVU/

要仅在滚动点小于 100 或大于 700 时设置“固定”位置,就像您的原始代码一样,请尝试以下操作:

$(window).scroll(function () {
    var tpxl = $(window).scrollTop();
    if (tpxl < 100 || tpxl > 700) {
        $('#div').css('top', tpxl + 100 + 'px');
    }
}).scroll();

演示:http: //jsfiddle.net/G5BVU/1/

编辑:要让元素正常滚动,除非在这两点之间滚动窗口时,只需反转if我之前示例中的条件:

if (tpxl > 100 && tpxl < 700)
    $('#div').css('top', tpxl + 100 + 'px');

http://jsfiddle.net/G5BVU/2/

top在所有情况下,提供适当的初始设置。

于 2013-11-09T20:33:25.060 回答