2011-01-07 8 views
7

jQuerys Offset-Funktion manchmal rationale Zahlen zurückgibt (wie 12,645613) nach oben oder nach links. Ich dachte, dass die oberen und linken Positionen in Pixeln sind und daher ganze Zahlen sein sollten (es gibt keine halben Pixel oder?).Nicht ganzzahlige versetzte Positionen in jQuery

+1

Wirklich? Können Sie ein Beispiel zeigen? – SLaks

+0

Und welche Funktionen gibt eine solche Zahl zurück? –

+0

Gehen Sie zu http://www.dotnetoutsource.com/Download/jQuery_FixedTable/jQuery_FixedTable_Demo.htm und dann '$ (". FixedColumn "). Eq (0) .offset(). Top' Ergebnisse in meinem Firefox mit 182.5833282470703 – Zardoz

Antwort

5

Top und linke Positionen können mit einem der Einheiten cm, mm, in, pt, pc, sie, ex oder px, oder Prozent Gleitkommazahlen sein.

Beispiel:

.someElement { top: 42%; left: 3.14in; } 

offset Die Funktion, um die Position zurückkehrt, in Pixel übersetzt, so dass es sehr gut kann eine Gleitkommazahl sein. Die Werte sind nicht gerundet.

Wenn in dem Beispiel die Höhe des übergeordneten Elements beispielsweise 32 Pixel wäre, wäre der Wert des Elements top 32 * 0,42 = 13,44 Pixel.

+0

Dann mir dies wie ein jQuery Fehler klingt in meinem Fall als Dokumentation über Offset sagt: „die aktuellen Koordinaten Get“. Was du beschreibst ist mehr wo es sein sollte und nicht wo es aktuell ist. – Zardoz

+1

@Zardoz: Nun, das hängt davon ab, wie du es siehst. Wo das Element "is" ist, ist es nicht notwendig, wo der Browser es anzeigt, d. H. Seine Koordinaten sind Gleitkomma, aber es wird normalerweise bei einem geraden Pixel angezeigt. Die meisten Browser haben eine 1: 1-Beziehung zwischen den Koordinatensystemen und dem Bildschirm Pixeln, aber die iPhone 4 zum Beispiel verfügt über ein 1: 2-Verhältnis, so dass es tatsächlich Elemente mit dem halben Pixel platzieren könnte. – Guffa

-1

Dies ist eine alte Frage, aber ich glaube, ich könnte eine Antwort hier posten, für die Nachwelt.

ich dieses Problem wurde mit einem zu, und ich fand heraus (dank Firebug), dass das Problem darin liegt, dass die h1 und h3-Tags haben Punkt Margen Floating (zB Firefox standardmäßig gibt <H1> eine 0.67em 0-Marge).

Wenn Sie die Tags und <H3> löschen, gibt $(".fixedColumn").eq(0).offset().top eine ganze Zahl zurück. Sie könnten einfach Ränder für diese Tags angeben und das Problem sollte behoben sein.