jQuery offset top работает неправильно
я пытаюсь создать скрипт, нарисовать что-то в элементе мышью, и я использую Raphaeljs для этого.
для правильного рисования мне нужно найти top и left of input элемент. Я использую var offset = $("#input").offset(); и left и top.
но top значение неверно. Это 10px ниже top расстояние. Я думаю, что 10px возможно, изменение в разных разрешениях, тогда я не могу добавить 10px это нормально, то я хочу чтобы знать, как я могу решить проблему!
я загрузил свой тест здесь.
3 ответов
у меня есть два разных решения:
1) вы можете рассчитать общую высоту элемента выше с outerHeight(true), то метод. Этот метод будет вычислять высоту с полями, отступами и границами.
и не будет создавать конфликт, он вернет значение true. вот пример jsFiddle.
HTML-код
<div class="header"></div>
<div class="nav"></div>
<div class="myEle"></div>
jQuery
var myEleTop = $('.header').outerHeight(true) + $('.nav').outerHeight(true);
2) если вы определили top css к элементу, который расположен относительно тела, вы также можете использовать это значение:
parseInt($('#myEle').css('top'));
после борьбы с этим некоторое время и рассмотрения различных потенциальных ответов я пришел к выводу, что jQuery offset ().топ!--2--> (и предположительно DOM API, который он использует) слишком ненадежен для общего использования. Он не только документирован как исключающий поля уровня html, но и возвращает неожиданные результаты в нескольких других случаях.
position ().топ!--2--> работает, но может быть нецелесообразно / возможно создать страницу так, чтобы она аналог.
к счастью, я нашел это элемент.getBoundingClientRect().топ!--2--> получает положение относительно окна просмотра отлично. Затем вы можете добавить на $(документ).scrollTop() чтобы получить позицию сверху документа, если это необходимо.