Javascript 将元素从起始位置设置为另一个元素位置的动画
基本上,我有两个jQuery包装的元素Javascript 将元素从起始位置设置为另一个元素位置的动画,javascript,jquery,html,Javascript,Jquery,Html,基本上,我有两个jQuery包装的元素$source和$target,其中$source是一个垫片/占位符 我想将$source动画设置到$target的位置。在动画之后,我正在做一个$target.replaceWith($source) 无论$source和$target在DOM中的什么位置,我都需要能够做到这一点。有没有jQuery插件/简单的方法来实现这一点 至于我试图解决的问题,我有两个列表,我试图将最后一项从一个列表动画到另一个列表的开头 以下是我的尝试: var moveItem
$source
和$target
,其中$source
是一个垫片/占位符
我想将$source
动画设置到$target
的位置。在动画之后,我正在做一个$target.replaceWith($source)代码>
无论$source
和$target
在DOM中的什么位置,我都需要能够做到这一点。有没有jQuery插件/简单的方法来实现这一点
至于我试图解决的问题,我有两个列表,我试图将最后一项从一个列表动画到另一个列表的开头
以下是我的尝试:
var moveItem = function ($sourceItem, $targetItem, callback, before) {
var targetCord = $targetItem.css('position', 'absolute').offset();
$targetItem.css('position', 'static');
var sourceCord = $sourceItem.position();
$targetItem[before? 'before': 'after']('<li class="shim"></li>');
//diag('Shim Created.');
var $newlyAddedShim = $targetItem[before ? 'prev' : 'next']();
$sourceItem.css('position', 'absolute')
.css({ left: sourceCord.left, top: sourceCord.top })
.animate({ left: targetCord.left, top: targetCord.top }, 'slow', function () {
$newlyAddedShim.replaceWith($sourceItem.css('position', 'static'));
callback();
});
};
(每个相邻的相关列表都位于其自己的div.col中;位置作为静态继承)
我希望能够做到:
$source.animateTo($target)
使用jQuery的$.offset函数
如果不应该这样做,请在设置动画之前尝试将#element设置为动画位置的绝对右侧
$('#elementToAnimate').css('position', 'absolute');
使用jQuery的$.offset函数
如果不应该这样做,请在设置动画之前尝试将#element设置为动画位置的绝对右侧
$('#elementToAnimate').css('position', 'absolute');
这实际上取决于HTML/CSS标记,因为position属性与此问题极为相关。虽然我认为有很多方法可以解决这个问题,但它们需要大量丑陋的DOM操作。@Ennui编辑的问题包括我的标记结构/约束。这实际上取决于HTML/CSS标记,因为position属性与这个问题极为相关。虽然我认为有一些黑客的方法可以解决这个问题,但它们需要大量丑陋的DOM操作。@Ennui编辑了这个问题,以包括我的标记结构/约束。
$('#elementToAnimate').css('position', 'absolute');