欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

深入理解CSS overflow:hidden——溢出,坍塌,清除浮動

  發(fā)布時間:2018-08-03 15:25:41   作者:lakey0126   我要評論
這篇文章主要介紹了深入理解CSS overflow:hidden——溢出,坍塌,清除浮動的相關(guān)資料,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

overflow:hidden是overflow屬性的一個神奇用法,它可以幫助我們隱藏溢出的元素,清除浮動和解除坍塌。當某一個屬性擁有這么多的功能時,難免使人難以把握,不過不要怕,只要信:看完這篇文章,我相信你絕對能對overflow:hidden的用法熟練掌握。

下面的代碼將作為基本演示代碼,每次講解一個新的作用,我們都要將代碼恢復(fù)成下面這個樣子:

CSS樣式:

.container{
      background-color: black;
           }

.div1{
      background-color: aqua;
      width: 100px;
      height: 100px;
      }
.div2{
       background-color: red;
       width: 100px;
       height: 100px;
     }

html內(nèi)容:

<div class="container">
    <div class="div1"></div>
    <div class="div2"></div>
</div>

程序運行效果:

1.使用overflow:hidden隱藏溢出

當父div擁有固定的高度時,比如height:500px,我們使用overflow:hidden來隱藏溢出。

當使用div+css布局時,會出現(xiàn)很多的div嵌套——父div內(nèi)嵌套一個或多個的子div,默認情況下,父div的高度是auto——它可以被子div任意的撐大。然而父div也可以有固定的高度(或?qū)挾?,比如height:500px,那么如果子div的高度超過了這個值,在默認情況下,子div會超出父div的束縛,這就是溢出。我們可以通過設(shè)置父div的CSS屬性——overflow來對子div進行控制。這里使用overflow:hidden來隱藏子元素溢出的部分。

2.使用overflow:hidden清除浮動

當父元素的高height:auto時,我們使用overflow:hidden清除浮動

當我們?yōu)閐iv1和div2加上一個屬性:float:left后,我們會發(fā)現(xiàn):背景色為黑色父div消失了,這是因為: 浮動的元素脫離文檔元素, 不占據(jù)空間。 不浮動的元素會直接無視掉這個元素:父div無視了自己的兩個孩子,其高度為0(因為我們沒有設(shè)置父div的高度),所以父div沒有顯現(xiàn)。

想讓父div“寬容的”接受自己的兩個孩子有兩個辦法:

(1) 第一個就是讓父親也浮動起來 ,我們試著給父div添加一個CSS屬性:float:right,會發(fā)現(xiàn)兩個顏色塊出現(xiàn)在了屏幕的右邊,依然沒有父div的身影,然而通過開發(fā)人員工具不難看出父div已經(jīng)包容子div

這是因為浮動的div已經(jīng)失去了其“獨霸一行”的能力,我們需要手動為父div設(shè)置一個寬度,比如width:500px,之后可以看到:

(2)第二種就是 為父親添加overflow:hidden屬性用以清除浮動

.container{ background-color: black; overflow:hidden;} 

這時的效果如圖所示:

總結(jié):

(1)(2)一個使用了都浮動的戰(zhàn)略,一個使用了清除浮動的戰(zhàn)略使父div寬容的接受了子div,兩者的 區(qū)別在于都浮動需要額外設(shè)定父div的寬度,因為浮動起來的div失去了div獨占一行的特性,而清除浮動的父div仍然霸道。

3.解除坍塌

可以使用overflow:hidden解除margin坍塌,當然了,坍塌是不分父div的高度是否固定的

首先要知道什么叫做坍塌:

我們?yōu)閐iv1添加一個屬性:margin-top:50px,我們想象中效果是這樣的:

但實際上是這樣的(這是開發(fā)人員工具下的效果):

CSS中存在一個margin collapse,即邊界塌陷或者說邊界重疊。對于上下兩個并列的div塊而言,上面div的margin-bottom和下面div的margin-top會塌陷,也就是會取上下兩者margin里最大值作為顯示值,所以從這個意義上說:CSS及瀏覽器的設(shè)計者們希望我們在布局時,如果遇到上下兩個并排內(nèi)容塊的安排,最好只設(shè)置其中每個塊上或下margin的一處即可。

但對于父塊DIV內(nèi)含子塊DIV的情況,就會按另一條CSS慣例來解釋了,那就是:對于有塊級子元素的元素(父元素)計算高度的方式,如果元素沒有上下邊框和填充,那其高度就是第一個子元素頂部和底部邊框邊緣之間的距離。

結(jié)論:

解決父子DIV中頂部margin cllapse的問題,需要給父div設(shè)置:

1、邊框,當然可以設(shè)置邊框為透明;

2、為父DIV添加padding,或者至少添加padding-top;

此外,還可以通過over-flow來解決

(1)我們可以為父div添加overflow:hidden解決這個問題:

.container{

background-color: black;

overflow: hidden;

}

效果如圖所示:

(2)會思考的讀者一定會考慮浮動能不能解決這個煩人的問題,這里為了排除overflow:hidden對未定高度的父div的影響,我們?yōu)楦竏iv設(shè)置一個高度:

.container{

background-color: black;

height: 200px;

}

我們?yōu)樗凶觗iv添加一個浮動屬性(比如float:left),顯而易見,只要是浮動的子div就會完全避免坍塌的問題(PS:無論父div是否浮動):

可以使用overflow:hidden來解除坍塌,浮動的div根本不用考慮坍塌。

4.總結(jié)

overflow:hidden的用法在溢出和清除浮動上主要針對父div是否有固定的高度加以區(qū)分。它還額外肩負了解除坍塌的重任。

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • css中position:relative和overflow:hidden之間的問題

    在父標簽中使用了overflow:hidden;時,如果子標簽中有元素的position設(shè)置成relative的時候,在IE6和IE7中父元素的overflow對其將不起作用,其實將父標簽的position也設(shè)置成
    2013-09-04
  • CSS--overflow:hidden在項目實例中使用心得分享

    大家對CSS屬性中overflow:hidden并不陌生,至于它的應(yīng)用,在下文中列出我在項目中,運用到此屬性的例子,感興趣的朋友可以參考下哈,希望對大家有所幫助
    2013-07-04
  • IE8 css overflow:hidden不起作用

    當塊元素想呈現(xiàn)該元素內(nèi)部內(nèi)容不換行或者超過該元素的部分隱藏起來
    2010-03-05
  • CSS教程:CSS讓網(wǎng)頁文字自動隱藏

    網(wǎng)頁制作Webjx文章簡介:文字隱藏應(yīng)用廣泛,但常用的方法沒有什么親和力。 文字隱藏應(yīng)用廣泛,但常用的方法沒有什么親和力。 常用文字隱藏方法的缺陷:
    2009-04-02
  • css中overflow:hidden失效問題的解決方法

    這篇文章主要介紹了css中overflow:hidden失效問題的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來
    2020-02-10

最新評論