使用 jQuery 的原型 - 版本 2
我再次解决了这个问题,并使动作更加顺畅。
jQuery 代码如下所示:
init = {
previousTop: 0,
headerHeight: 52
}
$(window).scroll(init,function () {
var currentTop = $(window).scrollTop();
var scrollMax = $(document).height() - $(window).outerHeight(true);
var bodyHeight = $(window).outerHeight(true);
var scrollType = "";
if (currentTop < init.previousTop) {
$(".offset b").text(currentTop);
$(".offset em").text("Up");
scrollUp = true;
} else {
$(".offset b").text(currentTop);
$(".offset em").text("Down");
scrollUp = false;
}
if (scrollUp == true) {
$(".header").css({"color": "blue"});
$(".header").css({"top": currentTop});
} else {
$(".header").css({"color": "yellow"});
if (scrollMax - currentTop < init.headerHeight) {
$(".header").css({"top": 0});
}
}
/* Optional - to display values of various attributes */
$(".previousTop b").text(init.previousTop);
$(".headerHeight b").text(init.headerHeight);
$(".bodyHeight b").text(bodyHeight);
$(".scrollMax b").text(scrollMax);
init.previousTop = currentTop;
});
演示小提琴位于:http: //jsfiddle.net/audetwebdesign/gmkum/
这是如何工作的
这里有四个关键思想可以使这项工作发挥作用。
(1)周围的代码currentTop < init.previousTop
旨在确定您是向上滚动还是向下滚动。这是通过将当前.scrollTop
位置与前一个滚动事件的位置进行比较来完成的。
(2) 如果您向上滚动,则将标题放置在窗口顶部,使其可见。
(3) 向下滚动时,顶部偏移保持不变,并且由于标题是绝对定位的,它只是随着内容滚动离开屏幕顶部。
(4) 在最大滚动位置附近有一个有趣的案例。如果没有足够的滚动位置将标题移出屏幕,请将顶部偏移设置为 0 以将其移开。