IE6、7下塊級元素設置display:inline-block不換行的解決辦法


使用背景

在實際的工作中,我們有的時候會把塊元素設置為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下的表現


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM