所以,我有一个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');
}
});
答案 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();
要仅在原始代码的滚动点小于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');
在所有情况下,根据需要提供初始top
设置。