ユーザーが#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