【问题标题】:detect if element is being transitioned检测元素是否正在转换
【发布时间】:2013-01-16 08:06:39
【问题描述】:

如何通过 js 检测当前是否正在对元素应用任何类型的过渡?

我的问题的简短故事:

我有一种情况,我在 transitionend 事件上触发了一个函数,但有时该元素没有应用任何转换(例如,因为在 Firefox 中,用户快速单击了某个元素使过渡变得疯狂并停止工作)所以我想知道它何时不起作用并自己触发该功能,跳过@ 987654323@。我试图避免丑陋的解决方案..

【问题讨论】:

  • 当您的问题包括任何特定的浏览器,并且“发疯并停止工作”这句话时,我不知道有一个很好的解决方案......
  • 问题的细节并不是真正的问题,它存在于所有浏览器上。我只是给古玩的人举了一个非常具体的例子,但我的问题是存在的,这是我想知道的即使我没有遇到问题。
  • 我知道,我只是让你很难受。其实我也很想知道。我之前遇到过 css-transitions 的问题,正如这个问题所证明的那样:stackoverflow.com/questions/7288977/…

标签: css css-transitions


【解决方案1】:

W3C Editor's Draft - CSS Transition指定

“transitionend”事件在转换完成时发生。如果在完成之前移除了转换,例如移除了转换属性,则不会触发事件。

所以,我认为没有有效的简单方法来解决这个问题。解决方案留给实现(浏览器)来决定是否渲染过渡。

也许,一个解决方案可能是将监听器附加到触发转换的元素,并在特定的经过时间后检查 transitioned 元素是否具有所需的 CSS 属性集,以及这些属性是否未按预期设置,您可以自行运行函数。

【讨论】:

  • 是的,我考虑过使用一些 setTimeout 方法,但是......它只是丑陋。我很惊讶 W3C 草案中没有“ongoingTransition”标志或类似的东西。
  • 是的,这是一个很大的限制,我希望当它们达到最终规格时,会有更多的活动可用。但目前,我想唯一的方法是依靠自定义定时函数来模拟丢失的事件回调。
  • 就是手动同步css和js的时间..繁琐。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-25
  • 2019-02-12
  • 1970-01-01
  • 2012-04-01
  • 1970-01-01
相关资源
最近更新 更多