2012-02-28 35 views
1

很抱歉,如果这是一个已知的错误,但我一直在试图弄清楚这一点,现在几个小时(谷歌搜索和我自己的测试)。飘来父导致jQuery的性能口吃/滞后在Firefox 8

  • 我的影片被浮动权父容器。

  • 的父容器由10个div的每个包含一个H3和另一个DIV。点击后,触发animate()事件并显示div。基本上是手风琴风格的设置。

  • 我已经收窄性能口吃/滞后于浮动:父容器右 的CSS属性。

  • 删除这会导致他们应该将事件变得光滑。

  • 但这样做打破我的布局。我还在safari 5.0,ie8和chrome中测试了它,当float:right打开时,所有事件都很顺利。 Firefox是我唯一的问题。此外,使用slideToggle()给了我相同的滞后结果。这是一个与Firefox/jQuery和浮动已知的问题?我正在使用当前的jQuery库。

+0

是啊,人在过去指出这.removeAttr(“风格”),见http://alexw.me/2010/12/firefox-problems-with- JavaScript的动画/。花了我们几个小时的调试来找到我们项目中的laggy动画的原因。我所能说的就是试图找到一种没有浮动的方法。 – 2012-02-28 07:07:00

+0

我同意基督教。我之前也一直沿着这条路走下去,而不是使用浮动,我们最终使用position:absolute和一个缓动插件。它工作完美。这真的很痛苦。 – Ohgodwhy 2012-02-28 07:30:42

+0

似乎使用display:inline-block;而不是浮动也不会有所作为。缓动插件已被使用,也没有什么区别。定位绝对是有道理的,但我不喜欢定位任何不需要它的东西。看起来好像我需要改变立场或者生活在滞后期。 – tuck307 2012-02-28 08:08:15

回答

1

首先,使用谷歌翻译(俄罗斯)读这篇文章http://chikuyonok.ru/2010/11/optimization-story/

解决方案:

  1. 有生之前,您需要(临时)的浮动权风格转换成位置:绝对没有浮动。也许你需要计算未来的div尺寸(高度/宽度)并在动画中使用它们。也许你需要在动画之前将固定高度设置为父项。

  2. 动画绝对定位的div

  3. 后的动画,转换位置是:绝对的风格回归浮动:权

这将是更好,如果你开始和结束点的静态位置不会有style属性(全部在CSS类中)。在这种情况下恢复非标准的风格,你只需要