2017-07-20 4 views
0

私はthis questionへの答えから見つけたJSFiddleで悩んでいます。私の問題は似ていますが、ページの下にある特定の方法でスクロールさせたいdivは、左上隅ではなくウィンドウの左側に垂直に配置されているはずです。私はjQueryのにこの変更を作ってみました:divを垂直高さの50%で固定位置のスクロールを停止しますか?

$.fn.followTo = function (pos) { 
    var $this = this, 
     $window = $(windw); 

    $window.scroll(function(e){ 
     if ($window.scrollTop() > pos) { 
      $this.css({ 
       position: 'absolute', 
       top: pos 
      }); 
     } else { 
      $this.css({ 
       position: 'fixed', 
       top: 50% 
      }); 
     } 
    }); 

をしかし、私はトップ設定時に50%を他に、スクロールは、指定されたPOSで停止し、代わりにページダウンすべての方法を、以下のものではありません。ここに完全に変更されたJSFiddleがあります。

これを正しく修正して、要素を垂直方向の中央に固定し、特定のポイントの後に停止させる方法はありますか?

+0

あなたは私はあなたがある特定のポイント 'pos'、で次のように停止するようにスクロールすると、次のdivをしたい –

+0

もう少し説明することができますです'followTo'関数の引数です。元のJSFiddleを見ると、divは指定した位置に従います。しかし、私のJSFiddleでは、posを通過するときに停止しません。オリジナルでは、スクロールトップがまだ 'pos'にヒットしていない場合は' top'を0に設定しますが、私は50%に設定してウィンドウ内に垂直に配置します。 – Kaisermania

+0

ピクセル単位で高さを使用できます。 http://jsfiddle.net/Tgm6Y/11650/ –

答えて

0

最初の問題は、50%を引用符で囲む必要があることです。実行時にエラーが発生しました。 2番目の問題は、2000マークを押した後にposに設定すると表示外に飛び出すため、ウィンドウの高さを取得してpos + windowHeight/2に設定する必要があることです。ここにあなたの更新されたコード

var windw = this; 

$.fn.followTo = function (pos) { 
    var $this = this, 
     $window = $(window); 

    $window.scroll(function(e){ 
     if ($window.scrollTop() > pos) { 
      $this.css({ 
       position: 'absolute', 
       top: pos + ($(window).height()/2) 
      }); 
     } else { 
      $this.css({ 
       position: 'fixed', 
       top: '50%' 
      }); 
     } 
    }); 
    }; 

    $('#f').followTo(2000); 

し、あなたの更新フィドルhttp://jsfiddle.net/Tgm6Y/11649/

関連する問題