我有一个孩子在一个家长,我想动画从它的开始位置到页面底部到固定位置的孩子。显然动画是不是"充分",因为位置从绝对到固定的变化时,动画开始,我理解打破动画。这是可能的,以某种方式实现?我不介意一些更多的html如果必要的。
var a = document.querySelector('.mini')
document.body.addEventListener('click', function() {
a.classList.add('hov')
})
.parent {
position: absolute;
left: 0;
top: 0;
background: #ccc;
height: 300px;
width: 300px;
}
.mini {
position: absolute;
bottom: 200px;
right: 0;
background: orange;
height: 100px;
transition: all 0.5s;
width: 300px;
}
.hov {
position: fixed;
bottom: 0;
right: 0;
}
<div class="parent">
<div class="mini">
<div class="b">Maecenas eu erat condimentum neque molestie tincidunt. Fusce egestas, est ut fringilla facilisis, quam purus blandit dui, eget egestas mauris nibh ut diam. Phasellus volutpat. Sed fringilla tellus in sem.</div>
</div>
</div>
2条答案
按热度按时间2lpgd9681#
您可以更改动画中的bottom和right属性,然后使用setTimeout添加另一个类,以便在动画时间结束后将位置更改为fixed。
此外,过渡将在. hov上而不是. mini上
omtl5h9j2#
我使用的一种方法是在元素仍然具有绝对位置时对其进行动画处理,然后在动画处理完成后立即为其添加一个固定位置值。
为了达到这个目的,元素首先被附加到主体,这样它就可以在文档的边界内移动,基本上就是整个屏幕。如果元素要返回到它的原始位置,
takeMeBack()
函数会完成整个工作,在这个例子中,每一次连续的点击都会执行动画或取消动画。