通常我們想讓内聯元素為行塊布局顯示,有2種方法,最常見的是方法是.selector {float:left;......},第二種方法是.selector {display:inline-block;......},對于第二種方法,在ie浏覽器中得到支援,測試結果會認為ie能識别display:inline-block屬性,而最近查閱了資料後,得到結果并非如此......
display:inline-block ,簡單來說就是将對象呈遞為内聯對象,但是對象的内容作為塊對象呈遞。這個屬性目在主要浏覽器的新版本中得到良好的支援,而ie6、7浏覽器并不識别display:inline-block屬性,之是以ie6、7中内聯元素設定了display:inline-block後成行塊布局,是因為display:inline-block觸發了内聯級别的元素的 layout 特性,使内聯元素具有inline-block的表症。
本文簡單介紹haslayout的2個重要知識點:
ie6、7中内聯元素(如span)觸發layout屬性後, 它的行為和标準中的 inline-block類似
ie6、7中塊級元素(如div)觸發layout屬性,同時設定了 display: inline ,那麼它的行為和标準中 inline-block 類似
注:在ie8及以上版本做測試時,display:inline-block中的haslayout不起作用,故筆者認為ie8及以上版本已經淘汰display:inline-block屬性下觸發的haslayout。
針對這2個知識點,做了元素行塊布局(inline-block)的測試:
1.對ie6、7中内聯元素設定display:inline-block的測試
在ie6浏覽器顯示頁面正常:
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicGcq5CN5cDMyQjNxMDMyAjMxAjMvwVMzQDO3IzLcJTMwIzLcNXZnFWbp9CXt92YuM3ZvxmYuNmLyADMjlGcvw1LcpDc0RHaiojIsJye.jpg)
2.對ie6、7中塊級元素設定display:inline-block的測試
在ie6浏覽器顯示頁面并不是我們想要:
3.對ie6、7中塊級元素觸發layout,并設定display:inline的測試
在ie6浏覽器顯示正常:
總結:ie6、7中内聯元素觸發layout屬性後, 擁有了display:inline-block屬性的表症,而塊級元素觸發layout屬性并設定了 display: inline ,那麼它也擁有了display:inline-block屬性的表症。
作者:白樹