日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

詳解IE瀏覽器的haslayout屬性及相關(guān)兼容性問題解決

IE,這個令所有網(wǎng)站設(shè)計人員討厭,但又不得不為它工作的瀏覽器 。不論是6、7還是8,它們都有一個共同的渲染標(biāo)準(zhǔn)haslayout,所以haslayout 是一個非常有必要徹底弄清除的概念 。大多 數(shù)IE下的顯示錯誤,就是源于它 。
什么是Layout呢?
Layout 是 IE 的一個私有屬性,并不是W3C標(biāo)準(zhǔn) 。它決定了一個對象(就是一個標(biāo)簽div、li等)在內(nèi)容中如何顯示、與周圍對象的位置關(guān)系、以及怎樣響應(yīng)程序或用戶產(chǎn)生的事件 。
這個屬性可以被一些css強制激活 。一些HTML標(biāo)簽?zāi)J具有haslayout 。
PS:一個對象的layout屬性被激活,它的具體表現(xiàn)就是haslayout=true 。我們可以用IE Developer Toolbar工具看到被激活的對象帶有haslayout = -1的屬性 。
下面這些標(biāo)簽?zāi)J擁有haslayout屬性:
XML/HTML Code復(fù)制內(nèi)容到剪貼板html,bodytable,tr,th,tdimghrinput,button,select,textarea,fieldset,legendiframe,embed,object,appletmarquee你可能就問:微軟干嘛要設(shè)layout這個東西呢?當(dāng)一個對象的layout被激活時,它以及它的子對象的定位和尺寸計算將獨立進行,不受附近對象 的干擾 。也就是說它擁有一個獨立的布局(layout) 。因此瀏覽器要花費更多的代價來處理擁有haslayout的對象 。為了提高性能,微軟增加了 layout這個IE私有的概念 。
怎樣激活layout?
下面列出的css屬性可以激活對象的layout:
CSS Code復(fù)制內(nèi)容到剪貼板position:absolute設(shè)置絕對定位可能會引發(fā)新的問題 。
CSS Code復(fù)制內(nèi)容到剪貼板float:left|rightrightIE下的浮動也會產(chǎn)生一些莫名其妙的問題 。
CSS Code復(fù)制內(nèi)容到剪貼板display:inline-block當(dāng)一個內(nèi)聯(lián)元素需要haslayout屬性時就需要用它,但是IE本身不支持inline-block的,只是表現(xiàn)得像標(biāo)準(zhǔn)里說的inline-block 。
1.width: 除’auto’外的任意值
優(yōu)先考慮使用該屬性 。
2.height: 除’auto’外的任意值
對 IE6 及更早版本來說很常用,該方法被稱為霍莉破解(Holly hack),即設(shè)定這個元素的高度為 1% (height:1%;) 。但是要注意,當(dāng)這個元素的 overflow 屬性被設(shè)置為 visible 時,這個方法就失效了 。
3.zoom: 除’normal’外的任意值
又一個ie私有屬性,不兼容標(biāo)準(zhǔn) 。zoom:1可以在測試或者不追求標(biāo)準(zhǔn)的情況下使用,效果不錯 。
CSS Code復(fù)制內(nèi)容到剪貼板writing-mode:tb-rlie私有屬性,不推薦用 。
IE7 還有一些額外的屬性:
1.min-height: (任意值)
2.max-height: (除 none 外任意值)
3.min-width: (任意值)
4.max-width: (除 none 外任意值)
5.overflow: (除 visible 外任意值)
6.overflow-x: (除 visible 外任意值)
7.overflow-y: (除 visible 外任意值)
8.position: fixed

重置haslayout
在沒有其它屬性激活layout的情況下,使用下面的css可以重置haslayout屬性:
1.width, height (設(shè)為 auto)
2.max-width, max-height (設(shè)為 none)(在 IE 7 中)
3.position (設(shè)為 static)
4.float (設(shè)為 none)
5.overflow (設(shè)為 visible) (在 IE 7 中)
6.zoom (設(shè)為 normal)
7.writing-mode (從 tb-rl 設(shè)為 lr-t)
display 屬性的不同:當(dāng)用inline-block激活了haslayout 屬性時,就算在一條獨立的規(guī)則中覆蓋這個屬性為block或inline,haslayout 這個標(biāo)志位也不會被重置為 false 。
把 mid-width, mid-height 設(shè)為它們的默認值0仍然會賦予 hasLayout,但是 IE 7 卻可以接受一個不合法的屬性auto來重置 hasLayout 。
觸發(fā) hasLayout 清除浮動
樣例:
CSS Code復(fù)制內(nèi)容到剪貼板haslayout-clear-float:{width:1px}或
CSS Code復(fù)制內(nèi)容到剪貼板.haslayout-clear-float:{height:1px}【詳解IE瀏覽器的haslayout屬性及相關(guān)兼容性問題解決】
CSS Code復(fù)制內(nèi)容到剪貼板.haslayout-clear-float:{zoom:1}’Layout’ 是 IE 的專有概念,它決定了元素如何對其內(nèi)容進行定位和尺寸計算,與其他元素的關(guān)系和相互作用,以及對應(yīng)用還有使用者的影響 。

推薦閱讀