IE6出現重複字符(文字溢出)的bug

IE6出現重複字符(文字溢出)的bug  

一個容器包含2兩個具備「float」樣式的子容器。 
第二個容器的寬度大於父容器的寬度,或者父容器寬度減去第二個容器寬度的值小於3。(說到3,這裏稍微多說一句——IE7還修正了IE6中的一個bug,bug名字就叫作「3像素bug」) 
在第二個容器前存在註釋(這也是爲何此bug也叫作「IE6註釋bug」的緣由)。web


爲什麼會出現重複文字
bug雖然的的確確的存在,可是爲何會出現這樣的bug依然沒有統一的定論。不一樣的高手也是各執一詞,誰也說服不了誰。真正的緣由也許只有當時的IE6團隊才能道出來,可是如今仍然沒有官方的說法。下面列出來的這兩種說法,是隻是如今網上承認度比較高的而已——瀏覽器

IE6瀏覽器對<!-- -->註釋的解釋存在bug引發的。 
「3像素bug」的擴展後遺症。(「3像素bug」咱們將在《IE7的web標準之道》系列之後的文章中講到) 
其餘的一些說法ide

如何消滅重複文字
引發的緣由,也許咱們能夠不知道,可是如何去消除倒是咱們必定要關注的。
「歌劇院魅影bug」已經在IE7中獲得修正,在FireFox和Opera中也不會出現,因此bug的修正主要是針對IE6的。佈局

針對於上文中講到的「bug重現條件」,若是要修正bug,只要讓任何一個條件不知足便可——spa

改變結構,不出現【一個容器包含2兩個具備「float」樣式的子容器】的結構。

減少第二個容器的寬度,使父容器寬度減去第二個容器寬度的值大於3,例如將本文示例中第二個子容器的寬度改成197px。
注:在知足頁面佈局的前提下可使用。可是當狀況比較複雜的時候,可能實施起來比較困難。 
去掉全部的註釋。
注:此解決方案的評論:最直接的作法,可是「沒有註釋的代碼」,的確不是一個好的代碼寫做習慣。 
修正註釋的寫法。將 <!-- 這裏是註釋內容 -->寫成<!--[if !IE]>這裏是註釋內容<![endif]-->
注:此解決方案的評論:還不錯的解決方案,可是並非每一個人都對<!--[if !IE]>這裏是註釋內容[endif]-->這種註釋寫法很欣賞。 
在第二個容器後面加一個或者多個<div style="clear"></div>來解決。
注:此解決方案的評論:另人感受很不爽的解決方案。可是的確能解決。影響網頁效率orm

相關文章
相關標籤/搜索