まず、CSS を次のように変更します。
.holder span.top{
display:block;
z-index:999;
right:0;
float:right;
}
お気づきの場合は、上記の宣言からposition:absolute
andを削除しました。top:0
これは、要素がまだドキュメントのフロー内に存在し、その親を超えないようにするために行われます。一番右に行くために、単純に を追加しましfloat:right
た。
次に、jQuery を次のように変更します。
$('document').ready(function(){
var spanOffset = $('.top').offset();
$(window).scroll(function() {
if($(window).scrollTop() < spanOffset.top) {
$('.top').css({ 'position': 'static'});
} else {
$('.top').css({ 'position': 'fixed', 'top': '0px'});
}
});
});
上記のスニペットの背後にあるロジックは非常に簡単です: の現在の Y オフセットを取得し、.top
それを変数に格納します。ウィンドウがスクロールするとき、スクロールされた距離に対して Y オフセットをチェックします。ウィンドウがスクロールしない場合、 の値$(window).scrollTop()
は基本的に 0 であるため、.top
変更されずに親内に残ります。ウィンドウがスクロールし、 で計算されたスクロール距離$(window).scrollTop()
が の現在の Y オフセットを超えると.top
、 の CSS.top
が変更され、ウィンドウの上部に「固定」されます。
実際の例については、 http://jsfiddle.net/Jzz76/20/を参照してください。