Почему jquery ‘s .position() не совпадает с позицией css?

#javascript #jquery #css

#javascript #jquery #css

Вопрос:

У меня есть div, свойство «position» которого является «абсолютным».

 var a = $(div).first();

a.animate({top:20});

a.css("top");
>>"20px"

a.position().top;
>>15.243560791015625
  

Что произошло? .position() Выдает мне позицию относительно первого позиционированного предка. Разве это не было бы таким же, как позиция css?

Редактировать: или, может быть, я задаю другой вопрос. Как я могу вызвать .animate , чтобы создать.position().top === 20?

Правка2: обнаружена ошибка. Это «повернуть».

Правка 3: по какой-то причине, ui.position() обратный вызов плагина пользовательского интерфейса jQuery работает как .css("top") , не .position() . Хотя у них одинаковые имена.

Комментарии:

1. .css(‘position’) ссылается на свойство CSS. .position() ссылается на координаты элемента на странице.

2. ДА. Но почему они разные?

3. когда позиция css «абсолютна», «вершина» находится относительно ее ближайшего позиционированного предка, верно? И .position() возвращает относительную позицию к своему ближайшему расположенному предку?

4. @Lai Не могли бы вы опубликовать jsfiddle? Для меня это работает довольно хорошо…

5. jsfiddle.net/PWhQV/2 Для меня этот jsfiddle работает просто отлично. Вы случайно не запускали вторую инструкцию в середине анимации?

Ответ №1:

jQuery position относится к родительскому смещению (источнику). Использование jQuery offset относится к документу (источнику), который должен выдавать тот же номер, если ваш элемент имеет фиксированную позицию

Комментарии:

1. пытается объяснить ваш вопрос и тот факт, что .position() речь идет о .offset() . @antisanity: похоже, что нет.

2. Не понимаю. .offset() это относительное положение к document. .position() это относительная позиция для смещения родительского элемента. слева от css находится относительная позиция для закрытия позиционированного родительского элемента при ‘position:absolute’. Так почему это о .offset() ?

Ответ №2:

Извините, что потратил ваше время… Я осмотрел свой стиль css и обнаружил проблему.

Проблема вызвана «вращением».

Когда элемент поворачивается, он .position() был бы изменен, но css нет.

Итак, они разные.

В любом случае, спасибо вам всем за ответы.