2012-05-13 46 views
0

要素を中央に配置しようとしています。要素の幅が変わる可能性があるので、CSSメソッドmargin: 0 autoを使用することはできません。Jqueryで要素を中央に配置

$.fn.center = function() { 
    $(this).css({ 
     'margin-left': ($(this).parent().innerWidth() - $(this).outerWidth())/2 + "px", 
     'margin-right': ($(this).parent().innerWidth() - $(this).outerWidth()) + ($(this).outerWidth()/2) + "px" 
    }); 
}; 
$('#nav').center(); 

残念ながら、これが機能していません。

は、ここに私のコードです。あなたは私が理由を理解するのを助けることができますか?私は絶対位置を使用すべきですか?

ありがとうございました。

+1

[JS Fiddle](http://jsfiddle.net/)または類似のデモの可能性があります? –

+1

_これは動作していません_何を意味しますか? – Andreas

+0

@davidthomasそれはtumblrのサイトで生きています:http://dev-indiehaz.tumblr.com/タイトルの下にナビゲーションリンクを中心にする必要があります! – Harry

答えて

2

サブエレメント(li)をインラインブロックにするため、コンテナ#navtext-align:centerを設定するだけです。あなたは左の位置を設定する数式を使用して、position:absolute;して、あなたの要素を配置することができます

+0

ありがとう、これは動作します! – Harry

0

それは作品があります。

var space = ($(this).parent().width() - $(this).width)/2; 

$(this).css({marginLeft : space , marginRight : space}); 
0

私は最近使用した 'ゲーム' のidを持つdiv要素内に含まれ、 'GameCanvasの' のidを持つcanvas要素を中央に:

$('#gameCanvas').css('margin-left', ($('#game').width() - $('#gameCanvas').width())/2); 

をコンテナのIDを知っている場合は、 '#gameCanvas'をthisに、コンテナの番号を '#game'に変更してください。

1

とまったくマージンを設定しないでください..他の方法では、要素position:relative;を配置し、outerWidthを使用して要素の幅を設定し、次に配置します。margin:0 auto;

関連する問題