【发布时间】:2014-01-10 02:47:15
【问题描述】:
所以我有以下代码,它按预期工作,聚焦输入,然后播放过渡:
http://codepen.io/anon/pen/coydu
但是,如果我像这里这样在转换期间聚焦输入(使用 setTimeout 使聚焦在转换期间发生):
http://codepen.io/anon/pen/ywmct
有时您必须打开/关闭它几次,甚至在输入中输入文本。
播放过渡的元素内部的元素位置被搞砸了。此代码示例至少在 Chrome 和 FireFox 中都存在问题。如果我将超时设置为 0,它仍然会在 FireFox 中刹车,但在 Chrome 中不会损坏。
现在有了这个例子,我显然可以不使用 setTimeout 来解决问题,但是我正在使用 MV* 框架来体验这个更大的应用程序,并且没有办法强制输入的焦点发生在之前或之后过渡(除了在 JavaScript 中进行过渡,我真的真的不想这样做)。
所以我有两个问题:
- 为什么会这样?
- 是否有办法解决这个问题,以便在转换期间输入的焦点不会搞砸转换元素内的元素定位?
更新
这是发生问题的视频。我单击按钮的前 3 次问题发生在超时。最后 3 次单击按钮时,如果没有超时,问题不会发生。
出于某种原因,这个问题在 Mac 上似乎更加一致。我和我的一位同事在 Mac 上非常一致地发生了这种情况。我在 Windows 上的另一位同事必须打开元素,在输入中键入内容,然后关闭元素,然后再次重新打开元素,这使得问题更加一致地发生。
【问题讨论】:
-
我所缺少的我在两个 codepen 示例中都看到了相同的内容。炒锅很好
-
@Danko 我假设您使用的是 Windows。尝试打开它,在输入中输入一些内容,然后关闭它,然后再次打开它,这应该会显示我在使用第二个 codepen 时遇到的问题。出于某种原因,在我的 Mac 上,我无需在输入中输入任何内容即可发生此问题。
-
你解决过这个问题吗?
-
我参加聚会很晚了,但是如果有人像我一样遇到这个问题,请尝试在过渡结束之前不要调用焦点(在修改之前绑定的 transitionEnd 事件侦听器中) css)。我相信焦点会打断过渡。
标签: html css css-transitions