【问题标题】:Check if a transition will be applied to an element检查是否将过渡应用于元素
【发布时间】:2012-11-28 21:14:34
【问题描述】:

我正在使用 CSS 过渡来动画化从屏幕上移除元素。在 FireFox 中,我使用“transitionend”事件来检测转换何时完成,然后将其从 DOM 中删除。但是,这仅在实际发生转换时才有效。

如何通过 JavaScript 判断属性的更改是否最终会导致发送“transitionend”事件?如果没有过渡,那么我必须直接删除元素。

为了清楚起见,我想知道属性的更改是否会触发事件(FireFox 目前很好)。这是因为我需要在过渡结束时触发一个动作,如果没有过渡我需要立即触发它。

【问题讨论】:

    标签: javascript css css-transitions


    【解决方案1】:

    以下是主要供应商(支持转换)的 transitionend 的等效项:

    • Webkit:webkitTransitionEnd
    • 歌剧:oTransitionEnd
    • IE 和 Mozilla:transitionend

    要确定属性是否正在动画,只需检查它是否立即达到目标值:

    el = $('myElement');
    el.css('top', '100px');
    if(!el.css('top') == '100px'){
        alert('No transition');
    }
    

    这是一个演示:http://jsfiddle.net/6Q9XC/

    【讨论】:

    • 我不是在问各种浏览器等价物,我是在问我是否可以检测到事件是否会发生。
    • @edA-qamort-ora-y 我已经添加了您正在寻找的演示。
    【解决方案2】:

    来自Modernizr docs,我假设您可以:

    Modernizr.hasEvent('transitionEnd', $element)
    

    【讨论】:

    猜你喜欢
    • 2021-04-26
    • 2015-12-28
    • 1970-01-01
    • 2019-12-02
    • 1970-01-01
    • 1970-01-01
    • 2015-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多