2011-04-12 7 views
4

をスクロールします。 効果的に私は、ユーザーが(正常に動作します)隠しDIVを表示/非表示する]をクリックしますjQueryのSlideToggleと私は私のページの下部に表示されますslidetoggleリンクに問題を抱えている

問題は、ページがjQueryの初心者として、今、隠されていないのdiv

を表示するにはスクロールダウンしていないですdivをトグルしてページの中央に配置する方法はありますか?あるいは、物事が複雑すぎることなく、少なくとも下にスクロールしますか?この機能を実行するために

おかげ

答えて

1

は、私がscrollTop機能を使用して、ドキュメントのスクロールを設定するには、あなたのslideToggle呼び出しからのコールバックを使用してお勧めします。あなたは、ページに対する切り替えコンテナの先頭位置を取得するためにoffsetを使用してscrollTopスプライトセッターに値を決定することができるでしょう。私はスクロールの動作を、要素が表示されているときにのみ非表示にするように制限することを推奨します。一般的に

、直接ページスクロールを設定すると、やや耳障りUXすることができます。そのため、私は実際にscrollTopスプライト機能を使用してscrollTopスプライトではなく、まっすぐセット、それをアニメーション化あなたのコードを与えるつもりだが、このアプローチは、scrollTopスプライトへの直接呼び出しが均等にページを配置しますよう必要はありません。私はちょうどユーザーとして私はむしろ突然の位置の変化ではなく、徐々にスクロールすると思います。

コードは、例えば、形を取る:

$(".myShowHideLink").click(function() { 
    $(".myToggleContainer").slideToggle("slow", function() { 
     if ($(this).is(":visible")) { 
      $(document).animate({ 
       scrollTop: $(this).offset().top 
      }, "slow") 
     } 
    }); 
}); 

あなたが実際にスクロールの設定だけで数ピクセルの容器の上部より上そう$(this).offset().top - 50または類似のものを使用することもできますが、それは最高ですあなたへ。私は自分の要素が窓の上の境界線に突き当たるのが好きではないことを知ります。

私は腰から撮影してるように私は、このためのテストケースを作成していない謝罪はなく、宣伝通りに動作しない場合、私に知らせて、私は、コードを調整します。お返事のための

+0

こんにちはおかげで、私は私のコーディングは完全にあなたのコードを実装する方法を理解する時点ではまだあるとは思わないが、それは私が取得しようとしているもののように見えるん!今の私は一種の以下$(関数(){ \t \t \t $( "#のshowMoreLink")との望ましい効果を持っている。(関数(){ \t \t $( "#moreTextのを")をクリックします。 。slideToggle(800); \t \t $( 'htmlの、ボディ')アニメーション({scrollTopスプライト:1290}、1200); 復帰はfalse; \t \t \t \t}); \t \tは、しかし、それはそれとして理想的ではありません私はあなたのコードを試してみると、ページが下にスクロールせず、おそらく私はそれを間違って実装していますか?Tha nks again \t}); – Andre

+0

オフセットの呼び出しが欠落しているため、スクロールする位置として要素の上部が取得されます。 '$(document).animate({scrollTop:$("#moreText ")。offset()。top}、1200)'を試してください。 – lsuarez

+1

実際には、文書ではなく、「ボディ」へのアニメーション呼び出しのように見えます。スクロールアニメーションをslideToggleと同時に行うように少し変更して[デモがあります](http://jsfiddle.net/lthibodeaux/pE9hu/)。 – lsuarez

関連する問題