CSS高度塌陷

來源:互聯網
上載者:User

標籤:style   blog   http   color   使用   ar   2014   div   sp   

問題描述:當父元素只包含浮動的元素的時候,且父元素沒有設定高度,如果父元素設定了邊框border,那麼看起來子項目不在父元素之內。

比如這樣:

html:

<div id="parent">    <div class="left"></div>    <div class="right"></div></div>

CSS:

    div {        border: 2px solid #000;    }    .left {        width: 100px;        height: 100px;        float: left;    }    .right {        width: 200px;        height: 200px;        float: left;    }

結果是這樣的:

這就是高度塌陷的問題,各個瀏覽器,包括IE6都是這樣的。

 

解決方案:

父元素設定overflow:hidden 即:

    #parent {        overflow: hidden;    }

或者:

添加一個子項目清除浮動。

    .clear {        width: 0;        height: 0;        clear: both;        visibility: hidden;    }

 

上面的方法在除了IE6的瀏覽器都是有效,:

但IE6中,overflow:hidden,直接沒作用,清除浮動後卻是這樣的:

父元素斷了。。。。。

 

可以使用IE6中的一個bug,他的height和min-height作用一樣,所以可以給父元素任意設定一個高度。

    #parent {        * height: 1%;    }

由於是專為IE6設定的,前面加個*號,只有IE識別。

這樣不論是overflow還是clear效果都可以了。

 

但是還有一個問題,雖然高度都擴充了,但是使用overflow,底邊是緊貼的,使用清除浮動時候的是有一定間距的。

在《精通CSS》一書中是這樣的解決的。

    .clear:after {        content: ‘.‘;        height: 0;        clear: both;        visibility: hidden;        display: block;    }

以這樣的方式來清除浮動。

這樣效果就統一了。

 

在其他的部落格中,還看到,其實針對IE6還可以使用zoom:1。

 

總結一下,方法還是挺多,使用overflow簡單,也不用額外引入元素,但有時候會引起捲軸的問題。

清除浮動通用,但會引入其他外部元素。

CSS高度塌陷

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.