Не целочисленные позиции смещения в jQuery

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

Ответ 1

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

Пример:

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

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

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

Ответ 2

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

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

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