【问题标题】:Transitionend event fired way too soonTransitionend 事件触发得太快了
【发布时间】:2016-11-08 14:17:11
【问题描述】:

所以我尝试为在页面上移动的 div 设置动画,并在转换完成后更改它的 position 属性。但是transitionend 事件触发得太快了,我不知道为什么。查看答案。

【问题讨论】:

    标签: javascript jquery html css transition


    【解决方案1】:

    TL;DR

    可见性转换比其他属性更快。将所需的属性放在回调内的条件中。

    一段时间后,我发现由于某种原因,可见性的转换速度比其他属性快得多。不知道为什么。所以在我将transitionend回调的主体放入一个条件之后,它就起作用了。

    .on('transitionend webkitTransitionEnd oTransitionEnd' +
                    ' MSTransitionEnd', function (e) {
                    console.log(e.originalEvent.propertyName);
                    //visibility transitions way too soon
                    if (e.originalEvent.propertyName == 'top') {
                        $('#' + card.attr('id') + '-placeholder').remove();
                        card.css({
                            'top': '',
                            'left': '',
                            'width': '',
                            'height': '',
                            position: ''
                        }).removeClass('top');
                        console.log('end');
                        card.off('transitionend webkitTransitionEnd oTransitionEnd' +
                            ' MSTransitionEnd');
                    }
                });
    

    另外,我必须使用on 而不是one,因为这样只会触发可见性,因此我必须在之后手动off

    【讨论】:

    • 回答您自己的问题并没有错,但是在这种情况下,问题太宽泛了。你还没有描述你正在处理的问题,所以不清楚你实际解决的是什么。另请注意,“tl;dr”旨在用于对更大、更深入的文章进行总结。
    • 它很宽泛,如果我只是问它,我会提供更多细节。但是由于我也提供了答案,所以我只写了相关的内容。我可以写更多,但这对这个问题没有用,但感谢您的评论。
    • 这确实不是一个好问题,但答案引导我朝着正确的方向前进。我不知道对于不相关的属性,transitionend 事件的触发频率比请求的频率高。我可以用它解决我的问题。
    猜你喜欢
    • 2013-09-12
    • 1970-01-01
    • 2016-12-21
    • 1970-01-01
    • 1970-01-01
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多