使用背景
在實際的工作中,我們有的時候會把塊元素設置為inline-block,這樣做的目的有2個,一是塊元素能夠排列到一行,二是塊元素就形成包裹性,能夠自適應content area,而不必設置寬和高(依實際情況而定),在現在瀏覽器中沒有什么問題,但是IE6、7下,當把block元素設置成inline-block之后,還是在分別的兩行,下面我們看一下現象。
代碼以及IE6、7下的表現
CSS:
body { padding: 10px; } .block_to_inlineblock, .inline_to_inlineblock { padding: 10px; margin: 10px; float: left; } .block_to_inlineblock div { display: inline-block; width: 200px; height: 50px; text-align: center; line-height: 50px; font-size: 12px; }
HTML:
<div class="block_to_inlineblock bdr_blu"> <h3>block元素設置成inline-block</h3> <br/> <div class="bdr_red"> DIV:inline-block </div> <div class="bdr_blu"> DIV:inline-block </div> </div>
現代瀏覽器chrome下的表現
IE6下的表現
IE7下的表現
IE8+下的表現形式
可見,chrome以及IE8+下display:inline-block按正常顯示,而IE6、7下顯示是不正確的,那么解決辦法是先把block元素排成一行,然后再觸發hasLayout,這樣就能很好的解決這個問題了。
解決方案
.block_to_inlineblock div { display: inline-block; width: 200px; height: 50px; text-align: center; line-height: 50px; font-size: 12px; *display: inline; *zoom:1; }
增加:*display: inline;是為了讓塊元素排成一行,*zoom:1的作用是觸發hasLayout,能夠支持設置寬、高、line-height等一系列屬性。然后看下效果:
IE6下的表現:
IE7下的表現