0

そのため、スクロール中にページのポイント間でページの上部から 100 ピクセルを維持しようとしている div があります。現時点では、私のコードは動作しますが、div は上から正確に 100 ピクセルに保持されず、代わりに 0 ピクセルから 200 ピクセルの間で変更されます。

ここに私が使用しているものがあります:

$(window).scroll(function(){
var tpxl = $(window).scrollTop();
if( tpxl<100) {
$('#div').css('top',-Math.abs(tpxl)+100 + 'px');
}
else if(tpxl>700) {
$('#div').css('top',-Math.abs(tpxl)+800 + 'px');
}
});
4

1 に答える 1

1

常に正の数になるMath.abs()ため、必要ありません。tpxldiv の位置をウィンドウの現在の上部から 100 ピクセルに設定するには、 を使用します$(window).scrollTop() + 100 + 'px'

if/else if構造を持っている理由がよくわかりません。次の例では、div を常に 100px に固定します。

$(window).scroll(function () {
    $('#div').css('top', $(window).scrollTop() + 100 + 'px');
}).scroll();

デモ: http://jsfiddle.net/G5BVU/

元のコードのように、スクロール ポイントが 100 未満または 700 を超える場合にのみ位置を「固定」に設定するには、次のようにします。

$(window).scroll(function () {
    var tpxl = $(window).scrollTop();
    if (tpxl < 100 || tpxl > 700) {
        $('#div').css('top', tpxl + 100 + 'px');
    }
}).scroll();

デモ: http://jsfiddle.net/G5BVU/1/

編集:ウィンドウがこれらの2つのポイント間でスクロールされる場合を除いて、要素を通常どおりスクロールするにはif、前の例の条件を逆にします:

if (tpxl > 100 && tpxl < 700)
    $('#div').css('top', tpxl + 100 + 'px');

http://jsfiddle.net/G5BVU/2/

topいずれの場合も、必要に応じて初期設定を提供してください。

于 2013-11-09T20:33:25.060 に答える