2011-01-07 4 views
7

Функция смещения jQuerys иногда возвращает рациональные числа (например, 12.645613) для верхнего или левого. Я думал, что верхняя и левая позиции находятся в пикселях и поэтому должны быть целыми (нет половины пикселя или?).Не целочисленные позиции смещения в jQuery

+1

Действительно? Можете ли вы показать пример? – SLaks

+0

И какие функции возвращает такое число? –

+0

Перейдите по адресу http://www.dotnetoutsource.com/Download/jQuery_FixedTable/jQuery_FixedTable_Demo.htm, а затем '$ (". FixedColumn "). Eq (0) .offset(). Top' приводит к моему Firefox с помощью 182.5833282470703 – Zardoz

ответ

5

Верхнее и левое положения могут быть числами с плавающей запятой с любыми единицами cm, mm, in, pt, pc, em, ex или px или процентами.

Пример:

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

offset функция возвращает позицию переведенный в пиксели, так что вполне может быть числом с плавающей точкой. Значения не округлены.

В приведенном примере, если высота родителя составляет, например, 32 пикселя, значение top элемента будет 32 * 0,42 = 13,44 пикселя.

+0

Тогда это звучит для меня как ошибка jQuery в моем случае, поскольку документация о смещении говорит: «Получить текущие координаты». То, что вы описываете, больше, где оно должно быть, а не там, где оно сейчас. – Zardoz

+1

@ Zardoz: Ну, это зависит от того, как вы его видите. Если элемент «есть», необязательно, когда браузер выбирает его отображение, т. Е. Его координаты являются плавающей точкой, но обычно отображаются на четном пикселе. Большинство браузеров имеют соотношение 1: 1 между их системами координат и пикселями экрана, но iphone 4, например, имеет соотношение 1: 2, поэтому он может фактически размещать элементы в половине пикселей. – Guffa

-1

Это старый вопрос, но, я думаю, я мог бы написать ответ здесь, для потомков.

У меня тоже была эта проблема, и я узнал (спасибо Firebug), что проблема заключается в том, что теги h1 и h3 имеют поля с плавающей запятой (например, Firefox по умолчанию дает <H1> a 0.67em 0 margin).

При удалении <H1> и <H3> теги $(".fixedColumn").eq(0).offset().top возвращает целое число. Вы можете просто указать поля для этих тегов, и проблема должна быть исправлена.

Смежные вопросы