2012-03-02 28 views
0

ブロック要素(imgまたはdiv)を幅と高さが%のコンテナに合わせようとしています。jQueryとCSSマージンを使用して自動中心垂直/水平マージンを調整する方法

ここに私がしたことがあります。 http://jsbin.com/ibakuw

$('#container img') 
    .css({ 
     'margin': ($('#container').height() - $('#container img').height())/2 + 'auto', 
     'background':'red'}); 

私は、要素が私のブラウザまたはコンテナをオーバーフローしているため、垂直中心にこの{position:absolute; top:50%; height:240px; margin-top:-120px; } アプローチを使用する必要はありません。ブラウザ内で拘束されているだけです。

助けてください。ありがとうございました!編集した

は、私がここにhttp://jsbin.com/ibakuw/5

var contHeight = $('body').height(), 
    paddVertical = ($('#container').height() - $('#container img').height())/2, 
    paddHorizon = ($('#container').width() - $('#container img').width())/2; 

$(function() { 

    $('#container img') 
    .css({ 
     'marginLeft' : paddHorizon +'px', 
     'marginTop' : paddVertical +'px' 
    }); 


    $(window).resize(function() { 
    $('#container img') 
     .css({ 
     'marginLeft' : paddHorizon +'px', 
     'marginTop' : paddVertical +'px' 
     }); 
    }); 

}); 
+1

を参照してください、あなたは 'マージンを追加してみました:自動; 'あなたの' #container img' cssに? http://jsbin.com/ibakuw/2 – arunes

+0

はい、私はそれが水平にしか動作しないと私は垂直な問題を解決しようとしていると思う。 – Pennf0lio

答えて

1

$(window).resize(function() {を追加しました私はあなたの正確なセットアップを持っていない限り、これは私はあなたに答えるに得ることができる最も近いここに私の例http://jsfiddle.net/z8gph/

をチェック質問。

まず、外側および内側の容器を相対的に配置します。

jqueryを使用して垂直方向にセンタリングすると、外側コンテナから内側コンテナを差し引いた高さが2で割られます。次に、内側コンテナの上部に.cssを設定します。

var center = ($("#outer").height()-$("#inner").height())/2; 
$("#inner").css({"top":center}); 

EDIT

私の新しい一例をチェックアウトhttp://jsfiddle.net/z8gph/1/

あなたはそれがセンターを支援するmargin: 0 auto;を設定せずに仕事をしたい場合は水平にここhttp://jsfiddle.net/z8gph/2/

+0

お試しいただきありがとうございます....しかし、私はブラウザのサイズを変更する際にそれを中心にしています。ブラウザのサイズが変更されたときに値を更新する必要があるため、中央に更新されます。しかし、感謝:) – Pennf0lio

+0

@ Pennf0lio私の編集をチェックしてください – Henesnarfel

+0

あまりにも多くの編集をありがとう。あなたは私の新しいヒーローです:) – Pennf0lio

関連する問題