天天看點

【原】display:inline-block下的IE元素

通常我們想讓内聯元素為行塊布局顯示,有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浏覽器顯示頁面正常:

【原】display:inline-block下的IE元素

2.對ie6、7中塊級元素設定display:inline-block的測試

 在ie6浏覽器顯示頁面并不是我們想要:

【原】display:inline-block下的IE元素

3.對ie6、7中塊級元素觸發layout,并設定display:inline的測試

在ie6浏覽器顯示正常:

【原】display:inline-block下的IE元素

  總結:ie6、7中内聯元素觸發layout屬性後, 擁有了display:inline-block屬性的表症,而塊級元素觸發layout屬性并設定了 display: inline ,那麼它也擁有了display:inline-block屬性的表症。

作者:白樹