🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
#### D3.js执行transition动画中断 ``` transition.each([type, ]listener) ``` 如果指定了类型(type),就为过渡事件增加一个侦听器(listener),同时支持“start”, “end”和"interrupt"件。侦听器会被过渡中每个单独的元素调用。 start事件在过渡的第一个异步回调(tick)中被调用,于任何补间(tween)被调用之前。对于0延迟过渡,通常在过渡之后的17ms被调用。状态函数对触发每个元素的瞬间变化是很有用的,例如改变不能被打断的属性。 end事件在过渡的持续和延迟结束之后最后一个异步回调(tick)中被调用,在所有的补间都使用t=1调用之后。注意,如果对于一个给定的元素过渡被之后调度的过渡取代了, end事件就不会分配到这个元素上;中断过渡不会触发结束事件。例如,transition.remove调度的每个元素在过渡结束时被除去,但如果过渡被中断了,元素将不被删除。end事件可以被用作替代transition.transition,通过选择当前元素this,并导出新过渡来创建过渡链(chained transitions)。 如果没有指定type ,行为类似于selection.each:直接为当前过渡的每个元素调用指定的函数,通过在当前的数据d和索引i,与当前的DOM元素的this上下文。 transition.each将从父过渡继承过渡参数,包括id,延迟和缓动。因此,transition.each内创建过渡不会打断父过渡,类似subtransitions。 transition.each方法可用于链接过渡并在一组过渡上分享定时(timing)。例如: https://github.com/d3/d3/wiki/%E8%BF%87%E6%B8%A1#each