gpt4 book ai didi

javascript - 检测哪个 CSS 动画刚刚在 JavaScript 中结束?

转载 作者:技术小花猫 更新时间:2023-10-29 11:37:31 25 4
gpt4 key购买 nike

如何在 JavaScript 中检测到哪个 CSS 动画刚刚结束?

最终的需求是重新触发一个CSS动画。由于我们的 HTML 层次结构,我们不喜欢检查元素的类,而是仅在特定动画结束时才采取行动。如果您有允许在不删除/添加类的情况下重新触发动画的方法,请告诉我们。

否则……我们的代码:

    page.find( '.button.letter' ).on( 'webkitAnimationEnd', function() {
$( this ).removeClass( 'tap_animation' );

console.log( 'Hi: ' + this.style.webkitAnimationName );

if ( !write_mode() ) {
do_write( this );
}
});

this.style.webkitAnimationName 总是返回空字符串。

我们做错了什么吗?

我们需要 WebKit 浏览器的代码,特别是 Mobile Safari。

谢谢!

最佳答案

在 jQuery 中,您可以访问 originalEvent 对象,并从那里访问 animationName 属性:

$('body').on('webkitAnimationEnd', function(e){
var animName = e.originalEvent.animationName;
console.log(animName);
});​

(Webkit-only) JS Fiddle demo .

从那里,简单地使用 if 来检查动画名称是什么/曾经是什么(我想是过去式,假设它结束了)。

以上内容已更新,以提供更好的说明:

$('div').on('webkitAnimationEnd', function(e){
var animName = e.originalEvent.animationName;
if (animName == 'bgAnim') {
alert('the ' + animName + ' animation has finished');
}
});​

(Webkit-only) JS Fiddle demo .

此演示使用以下 HTML:

<div><span>text</span></div>​

和 CSS:

@-webkit-keyframes bgAnim {
0%, 100% {
color: #000;
background-color: #f00;
}
50% {
color: #fff;
background-color: #0f0;
}
}

@-webkit-keyframes fontSize {
0%, 100% {
font-size: 100%;
}
50% {
font-size: 300%;
}
}

div {
font-weight: bold;
-webkit-animation: bgAnim;
-webkit-animation-duration: 2s;
-webkit-animation-iteration-count: 2;
}

span {
font-size: 100%;
font-weight: bold;
-webkit-animation: fontSize;
-webkit-animation-duration: 4s;
-webkit-animation-iteration-count: 1;
}

关于javascript - 检测哪个 CSS 动画刚刚在 JavaScript 中结束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12498686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com