你不需要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
在所有情况下,提供适当的初始设置。