2013-11-09 109 views
0

所以,我有一个div,我试图保持从页面顶部到滚动页面之间的100px。此刻,我的代码工作十岁上下,但股利不保持在从顶部正好100像素,而不是改变0像素之间 - 200像素固定元素,而滚动?

这里是我使用的是什么大气压:

$(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

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

我不明白你为什么拥有if/else if结构。下面将保持固定的股利为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/

编辑:通常有元素,除了滚动窗口时SC这两个点之间的压延距离我以前的例子扭转if条件:

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

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

在所有情况下提供初始top设定适当。

+0

我应该更好地解释这一点;我需要元素与其余元素一起滚动,直到窗口滚动距离达到100px,然后我希望元素从顶部保持100px,直到窗口滚动距离达到700px为止 –

+0

请参阅我的更新和最终演示 - 它可能不会相当你在找什么,但我希望它能给你足够的想法来完成它自己。无论你在做什么,你都不需要否定'tpxl'的值或使用'-Math.abs(tpxl)'。 – nnnnnn

+0

这可能是我的浏览器/硬件的问题,但元素在滚动时仍然抖动 –