2010-07-08 5 views

ответ

194

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

Если у Вас есть макет, как это, однако:

<div style="position: absolute; top: 200; left: 200;"> 
    <div id="sub"></div> 
</div> 

offset Тогда для югу будет 200: 200, но его position будет 0: 0.

+2

Итак, родитель смещения является первым родителем с положением, установленным в абсолютное? или? – Svish

+1

@Svish: whoa, я действительно пропустил отступ кода? thaks для редактирования. да, родитель смещения является ближайшим * расположенным * родителем. то есть элемент с позицией, установленной в абсолютную, относительную или фиксированную (но не статическую). это не jQuery или даже javascript, у вас одинаковое поведение в css: если бы вы дали абсолютное позиционирование 'sub' в 0: 0, то оно будет в верхнем левом углу родителя смещения. –

+0

Удивительный, тогда это совершенно разумно! (Нет проблем с редактированием, хе-хе. Я делаю это все время: p) – Svish

27

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

. Источник: http://api.jquery.com/offset/

+3

Как просили выше, что считается офсетным родителем? Кажется, что вызывающая позиция() на первом div внутри другого div не всегда возвращает 0,0 - даже когда нет другого стиля или позиционирования. – Kokodoko

+2

jquery.offsetParent(): http://api.jquery.com/offsetparent/ «Получить ближайший элемент предка, который расположен». –

-7

Обе функции возвращают простой объект с двумя свойствами: ширина & высота.

offset() относится к положению относительно документа.

положение() относится к позиции по отношению к его родительскому элементу

НО когда позиция CSS объекта является «абсолютные» обе функции будут возвращать ширина = 0 & высота = 0

+5

Исправление : offset и position возвращает объект с левым и верхним свойствами, а не шириной и высотой. –

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