2011-01-07 8 views
7

Funkcja przesunięcia jQuerys czasami zwraca liczby wymierne (np. 12.645613) dla górnego lub lewego. Myślałem, że górna i lewa pozycja są w pikselach, a więc powinny być liczbami całkowitymi (nie ma pół piksela, lub?).Pozycje przesunięcia niecałkowitego w jQuery

+1

Naprawdę? Czy możesz pokazać przykład? – SLaks

+0

A jakie funkcje zwracają taką liczbę? –

+0

Idź do http://www.dotnetoutsource.com/Download/jQuery_FixedTable/jQuery_FixedTable_Demo.htm a następnie '$ (" fixedColumn"). Eq (0) .offset(). Top' wyników w moim Firefox z 182.5833282470703 – Zardoz

Odpowiedz

5

górnej i lewej pozycje mogą być liczb zmiennoprzecinkowych z dowolnymi jednostkami cm, mm, PT, PC, em, ex lub px, lub procentach.

przykład:

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

Funkcja offset zwraca położenie przekłada się pikseli, tak, że można równie dobrze być liczbą rzeczywistą. Wartości nie są zaokrąglone.

W podanym przykładzie, jeśli wysokość elementu nadrzędnego będzie wynosić na przykład 32 piksele, wartość tego elementu będzie wynosić 32 * 0,42 = 13,44 piksela.

+0

To brzmi dla mnie jak błąd jQuery w moim przypadku, ponieważ dokumentacja na temat przesunięcia mówi: "Pobierz aktualne współrzędne". To, co opisujesz, jest bardziej tam, gdzie powinno być, a nie tam, gdzie obecnie jest naprawdę. – Zardoz

+1

@Zardoz: Cóż, to zależy od tego, jak to widzisz. Gdzie element "jest", nie jest koniecznie tam, gdzie przeglądarka decyduje się go wyświetlić, tj. Jego współrzędne są zmiennoprzecinkowe, ale zwykle są wyświetlane przy równomiernym pikselu. Większość przeglądarek ma stosunek 1: 1 między ich układami współrzędnych a pikselami ekranu, ale na przykład iphone 4 ma relację 1: 2, więc może umieścić elementy na pół pikseli. – Guffa

-1

To jest stare pytanie, ale przypuszczam, że mogłem opublikować odpowiedź tutaj, dla potomności.

Miałem również ten problem, a ja dowiedziałem się (dzięki Firebug), że problem polega na tym, że znaczniki h1 i h3 mają marginesy zmiennoprzecinkowe (na przykład, Firefox domyślnie daje <H1> a margines 0.67em 0).

Po usunięciu znaczników <H1> i <H3> zwraca liczbę całkowitą. Możesz po prostu określić marginesy dla tych tagów i problem powinien zostać naprawiony.