Javascript:是否有CSS转换启动事件?

Javascript:是否有CSS转换启动事件?,javascript,events,Javascript,Events,我找到了转换结束事件,但我需要一个转换开始事件。有这样的事吗?没有,还没有。(重申@Frédéric Hamidi的评论。) 考虑使用事件聚合器、中介器或发布/订阅广播您自己的事件。这些都意味着基本相同的事情:与其等待JavaScript的DOM/CSS事件规范满足您的需要,不如创建您自己的全局/近全局事件管理系统,或者在您已经使用的任何事件框架中使用自定义事件 例如,可以使用自定义jQuery事件: // Transition target (body, for example) var $b

我找到了转换结束事件,但我需要一个转换开始事件。有这样的事吗?没有,还没有。(重申@Frédéric Hamidi的评论。)

考虑使用事件聚合器、中介器或发布/订阅广播您自己的事件。这些都意味着基本相同的事情:与其等待JavaScript的DOM/CSS事件规范满足您的需要,不如创建您自己的全局/近全局事件管理系统,或者在您已经使用的任何事件框架中使用自定义事件

例如,可以使用自定义jQuery事件:

// Transition target (body, for example)
var $body = jQuery(document.body);

// Register our transition starting function (left as exercise)
$body.on('transition_start', startFunction);

// Start the transition...
$body.addClass('transitioning')
    // ... and let everyone know
    .trigger('transition_start');`

更新:
transitionstart
transitioncancel
都在中,目前处于编辑草稿状态

如果你不知道。它不在任何规范中,因此是非标准特性。我认为,它是不固定的,并且通常使用起来是安全的,因为当(或者如果)达到规范时,它是如何实现的——所以也许你可以这样做:

if ("transitionstart" in window) { 
    object.addEventListener("transitionstart", function() { 
        // IE 10 + and Edge
    });
}
else { 
    // fallback
}

关于这个问题,我能找到的唯一一种“讨论”是@Daniel Trebbien发送给W3C的邮件,询问是否有可能将新的过渡事件(如
transitionstart
transitioncancel
)纳入规范。他甚至没有收到任何人的回复,这真的很遗憾。

,至少还没有。你为什么需要它,难道你不知道什么时候开始转换吗?@adeneo,主要用于其他模块对别处启动的转换做出反应。这将是很好的:)@adeneo:属性更改并不总是真正开始转换-您需要额外的逻辑来测试是否需要转换。如果这没有帮助,那么这就有点激进了。如果我穿着OP鞋,并且这个问题已经在评论中得到了回答,那么这对我没有什么帮助。你是对的@durrr这对我不合适,deletedGood提示谢谢。但是如果我必须在主体上进行转换,我会像这样重构:
function startFunction(){$body.addClass('transitioning');}$body.trigger('transition_start')@salvolds你能解释一下原因吗?当然。考虑到转换将在调用
$body.addClass('transitioning')
后立即启动,因此使用您的代码不必触发事件来启动转换,因为已经启动了。与我的重构建议相反,您可以触发事件以准确启动转换。似乎IE10是目前唯一支持它的浏览器:@iX3是的,IE 10、IE 11和Microsoft Edge目前都支持它。显然,它在FF 53中可用,但在Chrome 60中不可用