IE6的一個(gè)不兼容問(wèn)題:不能用overflow:hidden清除浮動(dòng)

在百度ife2016的任務(wù)3中,實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的三欄布局。左右欄寬度固定,中間欄寬度自適應(yīng)。父元素的高度應(yīng)該等于三欄中最高的一個(gè)。

在這里遇到了一個(gè)問(wèn)題:使用 float: left 和 float: right 控制左右欄,然后在父元素中使用 overflow: hidden 來(lái)清除浮動(dòng),使父元素高度等于三欄中最高。

在IE6中進(jìn)行測(cè)試,發(fā)現(xiàn)如果左右欄高于中間欄,則高出的部分會(huì)溢出。

搜索之后找到了解決辦法,就是在父元素中加一個(gè) _zoom: 1; 原理大概是觸發(fā)瀏覽器的haslayout機(jī)制。

haslayout 機(jī)制:

在IE中,一個(gè)元素要么自己對(duì)自身的內(nèi)容進(jìn)行計(jì)算和組織,要么依賴于父元素來(lái)計(jì)算尺寸和組織內(nèi)容。

當(dāng)haslayout屬性為true時(shí),就說(shuō)元素有一個(gè)layout。此時(shí),元素就要擴(kuò)展去包含它的流出的內(nèi)容。例如浮動(dòng)或者很長(zhǎng)的沒(méi)有截?cái)嗟膯卧~,如果haslayout沒(méi)有被設(shè)置成true,那么元素就要依靠某個(gè)祖先元素來(lái)渲染它。

當(dāng)一個(gè)元素有l(wèi)ayout時(shí),它負(fù)責(zé)對(duì)自己和可能的子孫元素進(jìn)行尺寸計(jì)算和定位。這樣它就要花更大的代價(jià)來(lái)維護(hù)自身及里面的內(nèi)容,而不是依賴于祖先元素來(lái)完成這些工作。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,814評(píng)論 1 92
  • 這篇文章極好,以至于讓我受益良多,就一字沒(méi)有改動(dòng)的轉(zhuǎn)發(fā)過(guò)來(lái)一絲冰涼老師的文章 需要注意的是,display:tab...
    新晉小牛牛閱讀 1,073評(píng)論 0 2
  • 當(dāng)margin的值為百分比形式時(shí),為什么瀏覽器會(huì)根據(jù)父容器寬度得出計(jì)算值? 假如有一個(gè)父容器寬度400px,高度6...
    飄雪飛舞閱讀 899評(píng)論 0 0
  • display: none; 與 visibility: hidden; 的區(qū)別 聯(lián)系:它們都能讓元素不可見(jiàn) 區(qū)別...
    紋小艾閱讀 1,690評(píng)論 0 1
  • Ba la la la ~ 讀者朋友,你們好啊,又到了冷鋒時(shí)間,話不多說(shuō),發(fā)車! 13.子選擇器在IE6...
    王飽飽閱讀 461評(píng)論 0 2