2012-01-24 7 views
0

現在のユーザーブラウザのサイズを取得し、サイズの半分に基づいてヘッダーを中央に配置したいと考えています。 (MooToolsは付き) mootoolsのネガティブマージン

CSS

#header{position:absolute; left:50%; } 

Javascriptを

var width = $(document.body).getStyle('width'); 
var margin = width/2; 

$('header').setStyles({'width': width, 'margin-left': -(margin.toInt())}); 

ありがとう!

+0

それが幅を設定ているようこれは見えます体の全幅?なぜそれが全幅になるのであれば、それを中心に置くのはなぜですか? – rgthree

+0

位置絶対要素なので... –

+0

@GabrielSantosなぜこれを達成するためにJavaScriptを使用しているのですか? CSSは、あなたが記述したのと同じように要素を中央揃えることができます。あなたが望むなら、私はそのCSSを提供することができます。 – piersadrian

答えて

2

ここで問題となるのは、いくつかのプロパティーで数字をとることができます(それに単位を追加することもできます)、または単にそれに指定した文字列を使用することです。文字列を与えているので、'-'+...を前置すると、ユニットなしでCSS margin-left:-34が作成されます。番号を付けたり、自分で追加することができます。また、あなたは上記の私の質問に答えた後、私はあなたが達成できることを注意しましょう

var width = $(document.body).getStyle('width'); 
var margin = width.toInt()/2; 

$('header').setStyle('margin-left', -(margin.toInt())); 
// or 
$('header').setStyle('margin-left', '-'+margin.toInt()+'px'); 

(でgetStyleは「PX」で文字列を返しますよう)あなたは2で割る前に、幅が数であることを確認する必要がありますこのW/O JavaScriptまたは負のマージン#headerは(としない比較的位置決め要素内)全幅で、画面の上部に位置するようになっている場合:

#header {position:absolute; top:0px; left:0px; width:100%;} 
+0

試しました。更新されたレスポンスをご覧ください。 –

+0

うまく働いた!なぜ私はこれを忘れてしまったのか理解していない。coffe =が必要) –