... он относительно установит левое положение своих родителей.
На самом деле нет. Если вы используете left
и top
с элементом position: relative
, они сместят его с того места, где он был бы в противном случае, если бы он не был расположен (например, в статическом потоке), продолжая резервировать его пространство в статический поток. Тонкое, но важное различие (и чрезвычайно полезное для перетаскивания).
Если вы хотите анимировать его в верхнем левом углу документа, вы можете вычислить его смещение (через offset
), а затем предоставить их как отрицательные числа для left
и * 1014. *, поскольку, конечно, если он равен (скажем) [100,50], то его позиционирование в [-100, -50] по сравнению с положением по умолчанию будет ... помещать его в [0,0].
Как это:
$("selector_for_your_divs").click(function() {
var pos, $this;
$this = $(this);
pos = $this.offset();
$this.animate({
left: "-" + pos.left + "px",
top: "-" + pos.top + "px"
});
});
Живой пример
Точно так же, если вы хотите переместить его туда, где находится другой элемент, просто вычтите его позицию из позиции другого элемента & mdash; это дает вам дельту для применения:
$("selector_for_your_divs").click(function() {
var mypos, otherpos, $this;
// Move to the target element
$this = $(this);
pos = $this.offset();
otherpos = $('selector_for_other_element').offset();
pos.left = otherpos.left - pos.left;
pos.top = otherpos.top - pos.top;
$this.animate({
left: pos.left + "px",
top: pos.top + "px"
});
});
Живой пример