【发布时间】:2018-03-26 09:25:09
【问题描述】:
我想以一种普通的方式为两个 DOM 元素的交换制作动画。
我在动画结束时遇到了问题,但我不知道是什么原因造成的:/
这是我的代码:
HTML
<div class="container">
<div class="child" id="childA">A</div>
<div class="child" id="childB">B</div>
</div>
<button>Swap position</button>
JS
const childA = document.querySelector('#childA');
const childB = document.querySelector('#childB');
const finalChildAStyle = {
x: null,
y: null,
};
const finalChildBStyle = {
x: null,
y: null,
};
let swapDone = false;
document.querySelector('button').addEventListener('click', () => {
if (swapDone === false) {
finalChildAStyle.x = childA.getBoundingClientRect().left - childB.getBoundingClientRect().left;
finalChildAStyle.y = childB.getBoundingClientRect().top - childA.getBoundingClientRect().top;
finalChildBStyle.x = childB.getBoundingClientRect().left - childA.getBoundingClientRect().left;
finalChildBStyle.y = childA.getBoundingClientRect().top - childB.getBoundingClientRect().top;
childA.style.transform = `translate(${finalChildAStyle.x}px, ${finalChildAStyle.y}px)`;
childB.style.transform = `translate(${finalChildBStyle.x}px, ${finalChildBStyle.y}px)`;
setTimeout(() => {
document.querySelector('.container').insertBefore(childB, childA);
childB.removeAttribute('style');
childA.removeAttribute('style');
}, 300);
}
swapDone = true;
});
这是我的代码笔:https://codepen.io/ChucKN0risK/pen/pLWVro
提前致谢;)
【问题讨论】:
标签: javascript html css animation swap