Подтвердить что ты не робот

Получить позицию фиксированного div с jquery

У меня есть div с позицией "fixed", и я хочу получить значение его позиции относительно всего документа, пока пользователь прокручивает страницу вниз.

Итак, допустим, я поместил div на (x = 0, y = 0), а затем пользователь немного прокручивается и теперь, относительно документа, div включен (X = 0, y = 300), Я хочу получить эту информацию, я хочу знать точную позицию этого div в каждый момент, опять же, относительно всего документа, а не для окна или браузера.

Я пробовал много вещей, но ничто не похоже на то, что я пытаюсь сделать.

Один из них - это код , который не работает в случае фиксированного div:

var position = $("#fixed").offset(); /*it gets the position of the div
                                     "fixed" relative to the document*/
$("#fixed").html(position.top);      /*it prints the obtained
                                     value on the div "fixed"*/

Здесь вы можете найти исполняемый код, и вы можете видеть, что при прокрутке вниз значение позиции div не изменяется.

Если я не ошибаюсь, код должен печатать новое значение в div каждый раз, когда он изменяет свое вертикальное положение относительно документа. Но оказывается, что этого не происходит.


РЕШИТЬ:

Вопрос был решен codef0rmer. Мне не хватало прокрутки, чтобы обновить значение позиции фиксированного div. Я был идиотом. Итак, окончательный код отлично работает так, как он писал:

$(function () {
    var position = $("#fixed").offset();
    $("#fixed").html(position.top);

    $(window).scroll(function () {
       var position = $("#fixed").offset();
        $("#fixed").html(position.top);
    });
})

И здесь вы можете увидеть текущий код.

Спасибо всем и специально для codef0rmer.

4b9b3361

Ответ 1

вы можете использовать .offset(), чтобы получить текущие координаты элемента относительно документа, тогда как .position(), чтобы получить текущие координаты элемента относительно его родителя смещения.

Ответ 2

. offset() дает координаты относительно всего документа.

Метод .offset() позволяет нам получить текущую позицию элемент относительно документа. Сравните это с .position(), который извлекает текущую позицию относительно родителя смещения. При позиционировании нового элемента поверх существующего для глобального манипуляции (в частности, для реализации drag-and-drop),.offset() является более полезным.

.offset() возвращает объект, содержащий свойства сверху и слева.

Примечание: jQuery не поддерживает получение смещенных координат скрытых элементов или учет границ, полей или отступов, установленных на элемент тела.

Ответ 3

Если вы не обновите страницу, а полоса прокрутки находится в другой позиции в момент ее инициализации.