滚动时固定元素?

时间:2013-11-09 20:16:36

标签: javascript jquery scroll

所以,我有一个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');
}
});

1 个答案:

答案 0 :(得分: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设置。