2012-02-25 17 views
1

これには簡単な解決策が必要です。私は、私が探している効果を達成するためにjQueryを使って作業しようとしていますが、それだけではうまくいきません...また、問題のCSS解決策があると思われます。ページがスクロール可能な場合でも画面上にdivを配置する

#popup { 
position: absolute; 
left: 0px; 
top: 0px; 
right: 0px; 
bottom: 0px;} 

それは、オーバーレイのような画面をカバーしています...私は別と呼ばれる#pnlEditOverlayを持って、このdivの内側に持っているボックスがされている:

私は、次のCSSで「ポップアップ」と呼ばれるdiv要素を持っています通知メッセージ、または編集フォームまたは同様のもの。

pnlEditOverlayは、私はそれがすべてを覆うように、ドキュメントの高さに#popupの高さを拡張するためにjQueryのを使用してページ上の垂直中心に

をしようとしていますものです:

$("#popup").css('height', $(document).height()); 

私の問題は、#pnlEditOverlayを垂直方向にセンタリングしたいのですが、ページがスクロールできる大きさであってもページ上に配置したいのです。

私はこのdiv要素を再配置するためにjQueryを使用している:

var offset = $("#pnlEditOverlay").offset(); 

     var topPadding = 75; 
     $(window).scroll(function() { 
      if ($(window).scrollTop() > offset.top) { 
       $("#pnlEditOverlay").stop().animate({ 
        marginTop: $(window).scrollTop() - offset.top + topPadding 
       }); 
      } else { 
       $("#pnlEditOverlay").stop().animate({ 
        marginTop: 75 
       }); 
      }; 
     }).scroll(); 

は、しかし、これはまさに私が欲しいものではありません。ページがスクロールされたときにのみ位置が変わります。ユーザーが既にページの途中までスクロールしているとき、divはスクロールするまで非表示になります...

いずれにしても。私はそこにエレガントなCSSソリューションがあるのだろうかと思っていました。 私は単純に、ページがスクロールされていても、ページにデッドセンタを置いています。 divのスタイルを設定するのにjQueryを使っても問題ありませんが、はクリックイベントの実装を避けたいと考えています divが表示される可能性のあるたくさんのボタンがあるためです。

質問があるのは、CSSスタイルか、ページをスクロールしてもdivを垂直に中央に置いてそこに保持する小さなjQueryですか?

ありがとうございました

+0

関連するすべての質問をご覧ください。スタックオーバーフローは、質問を入力しているときに表示されます(このページの右側にこれらを見つけることができます)。あなたの答えを見つけることができる絶好の機会があります。特にデザイナーとの共通の質問であるこの質問には当てはまります。 –

答えて

7

本当に単純なCSSソリューションがあります。まず、popupのためにこれを使用します。

#popup 
{ 
position:fixed; 
height:100%; 
width:100%; 
} 

とこれはあなたのためにoverlay

#overlay 
{ 
position:fixed; 
top:50%; 
left:50%; 
margin-top:-y; 
margin-left:-x; 
} 

XYそれぞれ自分のoverlayのdivの半分幅と高さです。したがって、このdivの高さと幅を知る必要があります。

これは、ページがスクロールされても、すべての問題を処理します。

+0

私は幅を知っていますが、#overlayの高さは可変です。これを回避する方法に関するアイデアはありますか? – Nugs

+0

実際、それは私がトップから一定のマージンを持つほど重要ではありません...これは動作します、ありがとう! – Nugs

+1

これは、#popupの位置を設定することです。コンテンツのdivに余裕がある場合、#popup divが正しく配置されないことがあります... left:0px; top:0px;右:0px;下:0px; – Nugs

0

ポップアップを開いたときにウィンドウの最初のスクロールオフセットを考慮する必要があります。絶対位置0のままにする代わりに、Javascriptを使用して、ウィンドウの最前面に表示されるピクセルの現在の値に再配置する必要があります。私はこれがoffsetHeightパラメータだと信じていますが、私はテストしていません。

また、FWIWでは、Jqueryの「モーダルダイアログ」オプションはありません。これは、あなたが期待しているものをそのまま使用しますか?それは何らかの理由で機能しませんでしたか?

関連する問題