【发布时间】:2018-02-18 02:28:10
【问题描述】:
如果我有以下代码:
<div class="leftBox">
<div class="mainNode"></div>
</div>
<script type="text/javascript">
$('.mainNode').click(function() {
var element = $('.mainNode');
if (!element.hasClass('show')) {
element.removeClass('hide');
element.addClass('show');
} else {
element.removeClass('show');
element.addClass('hide');
}
})
</script>
在 CSS 中:
.mainNode {
width: 160px;
height: 160px;
border-radius: 50%;
background-color: red;
position :relative;
}
.show {
-webkit-animation: mymove 1s forwards; /* Safari 4.0 - 8.0 */
animation: mymove 1s forwards;
}
.hide {
-webkit-animation: mymove 1s reverse; /* Safari 4.0 - 8.0 */
animation: mymove 1s reverse;
}
/* Safari 4.0 - 8.0 */
@-webkit-keyframes mymove {
from {top: 0px;}
to {top: 200px;}
}
/* Standard syntax */
@keyframes mymove {
from {top: 0px;}
to {top: 200px;}
}
我正在寻找的是,当我使用关键帧单击它时,我的圆圈会移动到底部(我将来会有更多)。
第一次点击后,圆圈应该停留在底部,上面的代码已经发生了这种情况。
但是,当我重新单击圆圈时,我希望它反向执行相同的动画并返回到原始位置。还允许我在使用相同的动画将其移回后重新单击它...目前无法正常工作。它向下移动并在没有动画的情况下跳转到顶部和底部。
任何帮助将不胜感激。
【问题讨论】:
-
必须是关键帧吗?我会使用一个具有底部位置的类
.bottom,然后将元素的原始位置设置为中间或其他任何位置。将transition: all 0.5s ease;添加到元素中,它将为位置变化设置动画。现在使用 jQuery,您只需单击 .toggleClass('bottom') 即可。 -
我想使用关键帧,因为我想移动它,而不是直线,而是弧线,因此有“目标点”可以通过。这只是一个精简的例子。
-
我觉得元素在下一个被删除之前有效地丢失了类这一事实可能是一个问题。你如何提供它应该通过的点,你打算如何处理这些点之间相对于 CSS 中指定的时间的可变距离?
-
我可以先添加然后删除类,但这本身并没有改变任何东西。我计划在动画的百分比上设置关键帧,即
10% { top: 100px, left: 50px } .....
标签: javascript css animation css-animations keyframe