2013-05-28 34 views
1

IE遇到困難(9和10)。沒有測試IE8,但它可能是相同的情況。IE Bug:toggleClass和溢出:隱藏問題

簡介:

  • 我裏面<div/>
  • 一篇博客文章中,我限制<div/>height.height類設置在100pxoverflow:hidden
  • 單擊「展開」鏈接後,.height類將通過jQuery刪除,並且<div/>將展開到其最大高度,以顯示整個博客文章。
  • 在Firefox和Chrome中精美地使用。
  • 在IE中,<div/>按預期展開,但展開前隱藏的所有圖像仍隱藏。
  • 要使這些項目出現在IE中,您必須調整瀏覽器的大小或將<div/>從視口中滾動回來。

Here is a JSFiddle that showcases the problem

我使用這個代碼做jQuery的魔力:

$('#BLOG').on('click', '.expand', function() { 
    var $this = $(this); 
    $this.closest('.POST-WRAPPER').find('.post').toggleClass('height') 
               .toggleClass('overflow'); 
}); 

但要解決這個問題,我需要(在某種程度上),迫使IE瀏覽器「重繪」曾經隱藏部分<div/>擴大。

任何想法?

+0

+1,非常漂亮的錯誤!令人驚訝的是它涉及來自雷德蒙德的骯髒問題。順便說一句:IE8似乎沒有這個bug。 –

+0

哈哈哈,IE很有趣。 [這一個](http://jsfiddle.net/EZrkH/)的工作原理......直到你取消註釋開始處的「margin」和「padding」復位。 [「我愛這個公司!! YEEAAAHHH!」](http://www.youtube.com/watch?v=wvsboPUjrGc) –

回答

1

那麼,通常我不會建議一個黑客,但因爲這是一個錯誤,黑客似乎是好的:嘗試強迫IE重繪某處。一個解決方案,工程和在你的例子沒有任何明顯的副作用是在<img/>使用padding-left

img { 
    padding-left: 0; 
} 

.height img { 
    padding-left: 1px; 
} 

Here is a demo


旁註:您應該重新考慮類名。更好地使用「擴展」或「摺疊」或其他有意義的東西。而且你不需要overflow班,因爲overflow: visible無論如何都是default value。可能會像this fiddle

+0

Linus,這很棒。精彩。正是我在找什麼。在我的情況下,我最終使用'padding-top'而不是'padding-left',但你的概念完美運作。謝謝。順便一提。很好的頭像選擇。我是一個大的Peter Falk/Columbo粉絲。乾杯! –