当用户滚动到 #expand 元素的“顶部”时,您希望在position: fixed, top: 0
和之间切换。position: absolute, top: <the current scroll position>
下面的代码使用一个(不完全是)全局变量来跟踪此切换应该发生的位置。如果你愿意,你可以使用$("#expand").data(...)
或其他东西,但你明白了。
(function () {
var expandY = 0;
$("a[name=somelink]").click(function (e) {
e.preventDefault(); // Keep from following link.
expandY = $(window).scrollTop();
$("#expand").css({position: "fixed", top: 0});
});
$(window).scroll(function () {
var $expand = $("#expand");
if($expand.css("position") === "fixed") {
if($(window).scrollTop() > expandY) {
$expand.css({position: "absolute", top: expandY});
}
}
else {
if($(window).scrollTop() < expandY) {
$expand.css({position: "fixed", top: 0});
}
}
});
})();
这是小提琴:
http://jsfiddle.net/rkp5x/3