【发布时间】:2017-03-02 15:00:36
【问题描述】:
我有一个关键帧动画,当我将鼠标悬停在元素上时会播放。在mouseout 事件之后,它停止得太突然了。我怎么能强迫它玩到它结束?我试过on.(animationend) 事件,它不起作用。变换原点和巨大的延迟,要么不行。谢谢。
class Main {
constructor() {
}
waveOn() {
$(this).addClass('wave-active');
}
waveOut() {
var elem = $('.info__block');
elem.removeClass('wave-active');
}
jsInit() {
$('.info__block').hover(this.waveOn);
$('.info__block').on('animationend', this.waveOut)
}
}
new Main().jsInit();
.info__block {
width: 100px;
height: 100px;
background: aqua;
border-radius: 50px;
position: relative;
display: flex;
justify-content: center;
margin-top: 100px;
}
.info__block:before {
content: '';
position: absolute;
width: 100%;
height: 100%;
border-radius: 50px;
border-top: 2px solid aqua;
}
.info__block.wave-active:before {
animation: link-line 2.5s infinite .5s linear;
}
@keyframes link-line {
0% {
transform: translateY(0);
opacity: 1;
}
60% {
opacity: 0;
}
100% {
transform: translateY(-50%) scale(1.6);
opacity: 0;
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="info__block info__block-1">
</div>
【问题讨论】:
-
看起来像是 stackoverflow.com/questions/31806649/… 的骗子。对于您的情况,您基本上应该忘记
:hover选择器。使用JS触发mouseover上的动画,然后不管鼠标是否在元素上都让动画一直运行到最后。 -
好的,我找到了问题所在。 (a) 您的 CodePen CSS 不使用
.wave-active类,它使用:hover和 (b)infinite动画没有 animationend。 -
在不同的浏览器中,动画的 diff css 属性。例如:IE @keyframes ,firefox @-moz-keyframes。您必须为浏览器提供所有内容
-
哈利,谢谢。无限没有动画结束的事实解决了这个问题!
-
@Alex:基于
animationiteration的答案对您没有帮助吗?这不是您想要的吗?
标签: javascript css animation css-animations