2013-06-03 16 views
5

以下のマークアップとCSSを使用して、計算されたシェルの左マージンを取得しようとしました。jQueryでfirefoxで自動計算されたマージンを取得

<section class="page-title"> 
     <div class="shell"> 
     <h5 class="title">Welcome!</h5> 
     </div> 
    </section> 

.shell { 
    zoom: 1; 
    max-width: 1000px; 
    margin-left: auto; 
    margin-right: auto; 
    padding-left: 16px; 
    padding-right: 16px; 
} 

それはクローム、サファリ、IE9で動作しますが、驚くほどFirefoxで動作しません

parseInt($('.shell').css('marginLeft')) 

を使用します。他のアプローチを試みました:

($('.shell').outerWidth(true) - $('.shell').outerWidth())/2 

Firefoxでもうまくいきます。だから、firefoxはjQueryで未定義のCSSを取得することをサポートしていないと思いますか?これを回避するには、次の方法があります:

($('.page-title').width() - $('.shell').outerWidth())/2 

しかし、もっと良い方法があるのだろうかと思います。

+0

Firefox v21と全く同じ問題があります。 – Hengjie

+0

Firefox v37.0.1で同じ問題が発生しました。 – phylae

答えて

2

あなたはそれがうまくいかないと言うと、(コンソールで)エラーを受け取るか、それとも0を返しますか?自動設定で0を返すことは、明らかに異なるブラウザで問題になります。

すべてのメトリックをピクセル単位で返す軽量のjSizesライブラリを使用できます。これにより、outerWidthなどで慌てる必要がなくなります。

+0

これは0を返します –

+0

このlibは 'margin:auto'のときに0を返します。この場合にマージンを取る方法はありますか? –

+0

jQuery(おそらくはvanilla JS)も 'auto'の場合は0pxを返します。私はあなたが 'auto' **の値を信頼性高く一貫して**クロスブラウザで得ることはできないと考えています。自動とは、「ブラウザを決定させる」ことを意味し、読んでいるブラウザベースの値です。 –

関連する問題