2013-06-03 4 views
5

Mit dem Markup und CSS unten, habe ich versucht, den berechneten linken Rand der Shell zu bekommen.Holen Sie sich die automatisch berechnete Marge in Firefox mit jQuery

<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; 
} 

Mit

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

es funktioniert in Chrome, Safari, IE9 aber überraschenderweise nicht in Firefox funktioniert. Versuchte den anderen Ansatz:

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

Funktioniert auch gut, aber Firefox. Also ich denke, Firefox unterstützt nicht, die undefinierte CSS mit jQuery zu erhalten? Ein einfacher Weg, um damit umzugehen ist:

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

Aber ich frage mich, ob es einen besseren Weg gibt.

+0

Ich habe genau das gleiche Problem mit Firefox v21 – Hengjie

+0

Ich habe das gleiche Problem in Firefox v37.0.1. – phylae

Antwort

2

Wenn Sie sagen, dass es nicht funktioniert, erhalten Sie Fehler (in der Konsole) oder gibt es 0 zurück? Die Rückgabe von 0 für die automatische Einstellung ist anscheinend ein Problem mit verschiedenen Browsern.

Sie könnten die leichte Bibliothek jSizes verwenden, die alle Metriken in Pixeln zurückgibt. Dies wird sparen Sie müssen mit outerWidth, etc ..

+0

ich meine, es gibt 0 –

+0

diese lib return 0 wenn 'margin: auto'. Gibt es eine Möglichkeit, in diesem Fall Marge zu bekommen? –

+0

jQuery (und wahrscheinlich Vanille JS) gibt auch 0px für 'Auto' zurück. Ich glaube nicht, dass Sie den Wert "auto" ** zuverlässig und konsistent ** über den Browser erhalten könnten. auto bedeutet "lass den Browser entscheiden" und es ist dieser browserbasierte Wert, den du liest. –

Verwandte Themen