当用户向下滚动一定数量的像素时,我修复了标题。但是,有没有办法在用户满足逻辑后停止调用窗口滚动功能?我认为这对性能不利。查看我的控制台的屏幕截图(http://d.pr/i/OHDX)
$window.scroll(function() {
if ($window.scrollTop() > 100) {
$('.header').addClass('fixed');
console.log('fix header');
}
else {
$('.header').removeClass('fixed');
console.log('unfix header');
}
}
答案 0 :(得分:3)
你必须继续检查滚动位置。我假设当用户向上滚动到100时,你会想要解除它吗?
您目前的实施方案很好,性能也很好。您可以添加的一件事是检查是否尚未添加该类,或者保持切换以便知道如果该类在那里(而不是检查)。
$window.scroll((function() {
var fixed = false, elem;
return function () {
var should_fix = $window.scrollTop() > 100;
elem = elem || $('.header');
if (should_fix !== fixed) {
if (should_fix) {
elem.addClass('fixed');
console.log('fix header');
} else {
elem.removeClass('fixed');
console.log('unfix header');
}
fixed = should_fix;
}
};
}()) // immediate invocation, because it's awesome