2012-07-02 14 views
6

オフセットを使用してスクロール機能で2つの位置を設定する際に問題があります。スクロール機能で下位の位置からjQuery .offsetが機能していませんか?

あなたはこのフィドルを開くと、... http://jsfiddle.net/motocomdigital/SGCHt/12/

を参照してください下に、以下のスクリーンショットの同様のサイズにフィドルプレビュービューポートを減らすことができますので、私はバイオリンを作成しました。

enter image description here

私の問題

あなたは、彼らがであるかスクロールポイントに応じて、私は青色のタブの位置を制御するために条件文を使用しています見ることができます。

黄色の列はタブのコンテナを表し、青色のタブが黄色のコンテナの外に出ないように、if elseステートメントを使用して底部の位置を制御します。

しかし、私はこれを動作させることはできません。私のボトムポジションオフセットは機能しません。

var $tab = $('.tab-button'); 

$(window).bind("resize.browsersize", function() { 

    var windowHalf = $(window).height()/2, 
     content = $("#content"), 
     pos  = content.offset(); 


    $(window).scroll(function(){ 

     if ($(window).scrollTop() >= pos.top + windowHalf){ 

      $tab.removeAttr('style').css({ position:'fixed', top:'50%'}); 

     } else if ($(window).scrollTop() >= pos.bottom + windowHalf){ 

      $tab.removeAttr('style').css({ position:'absolute', bottom:'0px'}); 

     } else { 

      $tab.removeAttr('style').css({ top: $(window).height() + 'px' }); 

     } 

    }); 

}).trigger("resize.browsersize"); 

誰も私が間違って行くよどこに私は理解して助けてください。

おかげ ジョシュ

+0

+1問題 – ManseUK

答えて

7

だから、あなたが手動で要素のオフセット下を計算する必要があります表示されます。私はjQueryのドキュメントであなたの人生を楽にするために何かを見つけようとしましたが、何も出せませんでした。たぶん私たちはラッパの高さを見つけた場合のみ

http://api.jquery.com/offset/

/左上サポートしてオフセット、タブの高さを差し引き、我々は、タブのスクロールを制限するために、場所を正確に把握することができます。

また、タブトップのjQuery CSS定義が含まれています。オンロードを定義することなく、最初のスクロールの前に奇妙な文書の高さの変更がありました。

http://jsfiddle.net/SGCHt/16/

+0

の素敵な説明のおかげで、これはbeautを働いた男。私は準備ができたら高さに変化があったとは思うことができません:/あなたのプロジェクトにあなたのメソッドを適用するために、最初のものの中に余分な条件を付けて管理しました。 。これにあなたの時間を感謝します。ジョシュ – Joshc

関連する問題