2011-01-10 3 views
11

Während ich an einem jQuery UI Bereich Schieberegler arbeitete, wurde hauptsächlich in Chrome debuggen. Ich musste den Bereich eine Grenze machen, damit ich die linke Position von einem der Griffe wie so greifen würde:jQuery Positionierungsunterschiede zwischen Chrome (Webkit) und Firefox

$el.css('left');

die mir die linke Position als Prozentsatz geben würde: 84%. Als ich jedoch in Firefox getestet habe, gab es den Wert in Pixeln zurück.

Hat das jemand schon einmal erlebt? Wenn man sich das DOM in Firebug anschaut, erkennt Firefox zwar prozentbasierte linke Positionierung, aber es scheint das nicht als Wert zurückzugeben. Ist das Standardverhalten für Firefox? Ist das auch im IE so?

+0

Gute Frage. Ich war kürzlich überrascht zu finden, dass css ('left') Pixel in Firefox zurückgibt, wenn die Eigenschaft als Prozentsatz (oder ems) angegeben wurde. Immerhin können Sie den Pixelwert immer mit position() abrufen. Habe es jedoch nicht in Chrome ausgecheckt. – harpo

+0

Ya, ich war selbst überrascht, als eines der Elemente gerade vom Bildschirm geschossen wurde, als ich dachte, dass ich mit dieser Funktionalität im Grunde fertig bin. Arbeiten an einem MBP ohne VMWare oder Ähnliches, kann jetzt nicht wirklich für IE testen. – hellatan

+0

Dies beantwortet Ihre Frage nicht, aber eine jQuery-basierte Problemumgehung besteht in der Verwendung von 'position' (http://api.jquery.com/position/), die in jedem Browser denselben Wert (in Pixel) zurückgibt. – Emmett

Antwort

0

Ich habe ein Plugin in der Vergangenheit verwendet. Daher ist es Browser-spezifisch und sollte nicht verwendet werden, wenn es um Längen und Positionierung geht.

1

Die CSS() Funktion gibt den Wert der angegebenen CSS-Eigenschaft als vom Browser gemeldet:

+0

Ich stimme zu, die css() Funktion können Sie manipulieren oder lesen CSS Eigenschaften und diese sind (leider) unterschiedlich pro Browser interpretiert. Verwenden Sie die Funktion position(), wenn Sie browserunabhängige Abbildungen und Ergebnisse wünschen. – Ivanhoe

0

Verwendung $el.position().left; statt :)

+0

Das kann das gleiche Ergebnis zurückgeben, wenn Sie kein Glück haben. (Im Moment für mich) – Sascha

0

ich um dieses Problem arbeitete von DOM zugreifen, wie dies direkt:

$el.get(0).style.left

es gibt den% Wert für FF, Chrome, Safari und IE9. (Teste es aber nicht auf Opera)