2011-07-05 6 views
2

ディビジョンをページではなく画面に対して水平方向と垂直方向にどのようにセンタリングすることが可能ですか?ユーザーが長いページをスクロールすると、divは水平方向と垂直方向の中央に維持されます。 <div>ためデッド・センタリング・ディビジョン

+0

を試みることを意味しないのですか?水平センタリングを行うには、ユーザが5000pxの長いページをスクロールしていても、画面の中央にちょうど正確に「margin:0px auto;」、つまり – jchavannes

+0

を使用します。 – Mike

答えて

3

ここでは、純粋なCSSソリューションですが、パーセンテージとマイナスマージンに注意してください。ここで

http://jsfiddle.net/R7Xy2/

div { 
    position: fixed; 
    width: 200px; 
    height: 200px; 
    top: 50%; 
    left: 50%; 
    margin-left: -100px; 
    margin-top: -100px; 
} 
+0

これは素晴らしいクリーンな解決策です。これは、centeringしているdivがbody要素の直接の子である場合、またはdivとbody要素の間に '位置付け'の祖先がない場合に機能することを追加したいだけです。 – Beejamin

+0

これはどのブラウザでテストされているのですか? jsfiddleのリンクは私のために働いていません... –

0

CSS:<div>上のjQueryを使用して、上記設定し

position: absolute 
left : (centerofpagepixel.x - (width of div /2)); 
top : (centerofpagepixel.y - (height of div/2)); 

もう一度jQueryを使用してcenterofpagepixel.xyを計算することができます。おそらく、画面の幅/高さを取得し、2

+0

ちょうど追加、ここのキーは位置:絶対CSSスタイルです。 – Neeraj

0

によってそれらを分けるまた、次を試してください:

HTMLマークアップ:

<div class="classname">text here</div> 

CSS:

.classname { 
    position:absolute; 
    left:50%; 
    top:50%; 
    padding:10px; 
    border:1px solid #ccc; 
} 

ボーダーおよびパディングは、要件に基づいて変更または削除することができます。また、親コンテナを相対的に配置する必要があります。つまり、position:relativeである必要があります。

0

あなたのコードは、ちょうどwindow.onscrollこのイベントを添付し

http://www.geekdaily.net/2007/07/04/javascript-cross-browser-window-size-and-centering/

です。あなたはスクロールしながら垂直方向の中央に何をjQueryのを使用する必要、この

function addEvent(obj,ev,fn) { 
    if(obj.addEventListener) obj.addEventListener(ev,fn,false); 
    else if(obj.attachEvent) obj.attachEvent("on"+ev,fn); 
} 

addEvent(window,"scroll",yourfunction); 

幸運

関連する問題