2012-02-28 77 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類中)。在這種情況下恢復非標準的風格,你只需要