清除浮動(dòng)

清除浮動(dòng)

  • 盒子高度問(wèn)題

  • 在標(biāo)準(zhǔn)流中內(nèi)容的高度可以撐起盒子的高度

<style>
        div{
            background-color: red;
        }
        p{
            width: 200px;
            height: 100px;
            background-color: blue;
        }
</style>
<div>
    <p></p>
</div>
image.png
  • 在浮動(dòng)流中浮動(dòng)元素內(nèi)容的高不可以撐起盒子的高
<style>

        div{
            background-color: red;
        }
        p{
            float: left;
            width: 200px;
            height: 100px;
            background-color: blue;
        }
</style>
<div>
    <p></p>
</div>
image.png

清除浮動(dòng)方式一

  • 給前面的父盒子添加高度
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>65-清除浮動(dòng)方式一</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .box1{
            height: 20px;
            background-color: red;
        }
        .box2{
            background-color: green;
        }
        .box1 p{
            width: 100px;
            background-color: blue;
        }
        .box2 p{
            width: 100px;
            background-color: yellow;
        }
        p{
            float: left;
        }
    </style>
</head>
<body>
<!--
1.清除浮動(dòng)的第一種方式
給前面一個(gè)父元素設(shè)置高度
注意點(diǎn):
在企業(yè)開(kāi)發(fā)中, 我們能不寫(xiě)高度就不寫(xiě)高度, 所以這種方式用得很少
-->
<div class="box1">
    <p>我是文字1</p>
    <p>我是文字1</p>
    <p>我是文字1</p>
</div>
<div class="box2">
    <p>我是文字2</p>
    <p>我是文字2</p>
    <p>我是文字2</p>
</div>
</body>
</html>

清除浮動(dòng)方式二

  • 給后面的盒子添加clear屬性

  • clear屬性取值:

  • none: 默認(rèn)取值, 按照浮動(dòng)元素的排序規(guī)則來(lái)排序(左浮動(dòng)找左浮動(dòng), 右浮動(dòng)找右浮動(dòng))

  • left: 不要找前面的左浮動(dòng)元素

  • right: 不要找前面的右浮動(dòng)元素

  • both: 不要找前面的左浮動(dòng)元素和右浮動(dòng)元素

  • 注意點(diǎn):

  • 當(dāng)我們給某個(gè)元素添加clear屬性之后, 那么這個(gè)屬性的margin屬性就會(huì)失效

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>66-清除浮動(dòng)方式二</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        body{
            border: 1px solid #000;
        }
        .box1{
            background-color: red;
        }
        .box2{
            background-color: green;
            clear: both;
            margin-top: 28px;
        }
        .box1 p{
            width: 100px;
            background-color: blue;
        }
        .box2 p{
            width: 100px;
            background-color: yellow;
        }
        p{
            float: left;
        }
        /*
        .dd{
            width: 500px;
            height: 500px;
            background-color: red;
            border: 1px solid #000;
        }
        .ddd{
            width: 200px;
            height: 200px;
            background-color: blue;
            margin-top: 100px;
        }
        */
    </style>
</head>
<body>
<!--
1.清除浮動(dòng)的第二種方式
給后面的盒子添加clear屬性

clear屬性取值:
none: 默認(rèn)取值, 按照浮動(dòng)元素的排序規(guī)則來(lái)排序(左浮動(dòng)找左浮動(dòng), 右浮動(dòng)找右浮動(dòng))
left: 不要找前面的左浮動(dòng)元素
right: 不要找前面的右浮動(dòng)元素
both: 不要找前面的左浮動(dòng)元素和右浮動(dòng)元素

注意點(diǎn):
當(dāng)我們給某個(gè)元素添加clear屬性之后, 那么這個(gè)屬性的margin屬性就會(huì)失效
-->

<div class="box1">
    <p>我是文字1</p>
    <p>我是文字1</p>
    <p>我是文字1</p>
</div>

<div class="box2">
    <p>我是文字2</p>
    <p>我是文字2</p>
    <p>我是文字2</p>
</div>

<!--
<div class="dd">
    <div class="ddd"></div>
</div>
-->
</body>
</html>

清除浮動(dòng)的第三種方式

  • 1.隔墻法

  • 2.外墻法

  • 2.1在兩個(gè)盒子中間添加一個(gè)額外的塊級(jí)元素

  • 2.2給這個(gè)額外添加的塊級(jí)元素設(shè)置clear: both;屬性

  • 注意點(diǎn):

  • 外墻法它可以讓第二個(gè)盒子使用margin-top屬性

  • 外墻法不可以讓第一個(gè)盒子使用margin-bottom屬性

  • 3.內(nèi)墻法

  • 3.1在第一個(gè)盒子中所有子元素最后添加一個(gè)額外的塊級(jí)元素

  • 3.2給這個(gè)額外添加的塊級(jí)元素設(shè)置clear: both;屬性

  • 注意點(diǎn):

  • 內(nèi)墻法它可以讓第二個(gè)盒子使用margin-top屬性

  • 內(nèi)墻法它可以讓第一個(gè)盒子使用margin-bottom屬性

  • 4.外墻法和內(nèi)墻法區(qū)別?

  • 外墻法不能撐起第一個(gè)盒子的高度, 而內(nèi)墻法可以撐起第一個(gè)盒子的高度

  • 5.在企業(yè)開(kāi)發(fā)中不常用隔墻法來(lái)清除浮動(dòng)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>67-清除浮動(dòng)方式三</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .box1{
            background-color: red;
            /*margin-bottom: 10px;*/
        }
        .box2{
            background-color: green;
            /*margin-top: 10px;*/
        }
        .box1 p{
            width: 100px;
            background-color: blue;
        }
        .box2 p{
            width: 100px;
            background-color: yellow;
        }
        p{
            float: left;
        }
        .wall{
            clear: both;
        }
        .h20{
            height: 20px;
            background-color: skyblue;
        }
    </style>
</head>
<body>
<!--
1.清除浮動(dòng)的第三種方式
隔墻法

2.外墻法
2.1在兩個(gè)盒子中間添加一個(gè)額外的塊級(jí)元素
2.2給這個(gè)額外添加的塊級(jí)元素設(shè)置clear: both;屬性

注意點(diǎn):
外墻法它可以讓第二個(gè)盒子使用margin-top屬性
外墻法不可以讓第一個(gè)盒子使用margin-bottom屬性

3.內(nèi)墻法
3.1在第一個(gè)盒子中所有子元素最后添加一個(gè)額外的塊級(jí)元素
3.2給這個(gè)額外添加的塊級(jí)元素設(shè)置clear: both;屬性

注意點(diǎn):
內(nèi)墻法它可以讓第二個(gè)盒子使用margin-top屬性
內(nèi)墻法它可以讓第一個(gè)盒子使用margin-bottom屬性

4.外墻法和內(nèi)墻法區(qū)別?
外墻法不能撐起第一個(gè)盒子的高度, 而內(nèi)墻法可以撐起第一個(gè)盒子的高度

5.在企業(yè)開(kāi)發(fā)中不常用隔墻法來(lái)清除浮動(dòng)
-->
<div class="box1">
    <p>我是文字1</p>
    <p>我是文字1</p>
    <p>我是文字1</p>
    <div class="wall h20"></div>
</div>

<!--<div class="wall h20"></div>-->

<div class="box2">
    <p>我是文字2</p>
    <p>我是文字2</p>
    <p>我是文字2</p>
</div>
</body>
</html>
  • 1.什么是偽元素選擇器?

  • 偽元素選擇器作用就是給指定標(biāo)簽的內(nèi)容前面添加一個(gè)子元素或者給指定標(biāo)簽的內(nèi)-容后面添加一個(gè)子元素

  • 2.格式:
    標(biāo)簽名稱(chēng)::before{
    屬性名稱(chēng):值;
    }
    給指定標(biāo)簽的內(nèi)容前面添加一個(gè)子元素

標(biāo)簽名稱(chēng)::after{
屬性名稱(chēng):值;
}
給指定標(biāo)簽的內(nèi)容后面添加一個(gè)子元素

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>68-偽元素選擇器</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        div{
            width: 200px;
            height: 200px;
            background-color: red;
        }
        /*
        p{
            width: 50px;
            height: 50px;
            background-color: pink;
        }
        */

        div::before{
            content: "愛(ài)你";
            width: 50px;
            height: 50px;
            background-color: pink;
            display: block;
        }
        div::after{
            /*指定添加的子元素中存儲(chǔ)的內(nèi)容*/
            content: "么么噠";
            /*指定添加的子元素的寬度和高度*/
            width: 50px;
            /*height: 50px;*/
            /*內(nèi)容是可以超出標(biāo)簽的范圍的, 所以高度為0依然可以看見(jiàn)內(nèi)容*/
            height:0;
            background-color: pink;
            /*指定添加的子元素的顯示模式*/
            display: block;
            /*隱藏添加的子元素*/
            visibility: hidden;
        }

    </style>
</head>
<body>
<!--
1.什么是偽元素選擇器?
偽元素選擇器作用就是給指定標(biāo)簽的內(nèi)容前面添加一個(gè)子元素或者給指定標(biāo)簽的內(nèi)容后面添加一個(gè)子元素

2.格式:
標(biāo)簽名稱(chēng)::before{
    屬性名稱(chēng):值;
}
給指定標(biāo)簽的內(nèi)容前面添加一個(gè)子元素

標(biāo)簽名稱(chēng)::after{
    屬性名稱(chēng):值;
}
給指定標(biāo)簽的內(nèi)容后面添加一個(gè)子元素
-->
<div>
    <!--<p>愛(ài)你</p>-->
    我是文字
    <!--<p>么么噠</p>-->
</div>
</body>
</html>

清除浮動(dòng)的第四種方式

  • 利用偽元素選擇器清除浮動(dòng)

  • 本質(zhì)上就是內(nèi)墻法, 只不過(guò)是直接通過(guò)CSS代碼添加了內(nèi)墻, 其它特性和內(nèi)墻法都一樣

  • 注意點(diǎn):
    IE6中不支持這種方式, 為了兼容IE6必須給前面的盒子添加*zoom:1;屬性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>69-清除浮動(dòng)方式四</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        .box1{
            background-color: red;
            /*margin-bottom: 10px;*/
        }
        .box2{
            background-color: green;
            /*margin-top: 10px;*/
        }
        .box1 p{
            width: 100px;
            background-color: blue;
        }
        .box2 p{
            width: 100px;
            background-color: yellow;
        }
        p{
            float: left;
        }
        .box1::after{
            /*設(shè)置添加的子元素的內(nèi)容為空*/
            content: "";
            /*設(shè)置添加的子元素為塊級(jí)元素*/
            display: block;
            /*設(shè)置添加的子元素的高度為0*/
            height: 0;
            /*設(shè)置添加的子元素看不見(jiàn)*/
            visibility: hidden;
            /*給添加的子元素設(shè)置clear: both;*/
            clear: both;
        }
        .box1{
            /*兼容IE6*/
            *zoom:1;
        }
    </style>
</head>
<body>
<!--
1.清除浮動(dòng)的第四種方式
利用偽元素選擇器清除浮動(dòng)
本質(zhì)上就是內(nèi)墻法, 只不過(guò)是直接通過(guò)CSS代碼添加了內(nèi)墻, 其它特性和內(nèi)墻法都一樣

注意點(diǎn):
IE6中不支持這種方式, 為了兼容IE6必須給前面的盒子添加*zoom:1;屬性
-->
<div class="box1">
    <p>我是文字1</p>
    <p>我是文字1</p>
    <p>我是文字1</p>

</div>

<div class="box2">
    <p>我是文字2</p>
    <p>我是文字2</p>
    <p>我是文字2</p>
</div>
</body>
</html>

overflow: hidden;作用

  • 1.1可以將超出標(biāo)簽范圍的內(nèi)容裁剪掉
  • 1.2清除浮動(dòng)
  • 1.3可以通過(guò)overflow: hidden;讓里面的盒子設(shè)置margin-top之后, 外面的盒子不被頂下來(lái)
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>70-清除浮動(dòng)方式五</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        /*
        div{
            width: 100px;
            height: 100px;
            background-color: red;
            overflow: hidden;
        }
        */
        /*
        .box1{
            background-color: red;
            overflow: hidden;
            *zoom:1;
        }
        .box2{
            background-color: green;
        }
        .box1 p{
            width: 100px;
            background-color: blue;
        }
        .box2 p{
            width: 100px;
            background-color: yellow;
        }
        p{
            float: left;
        }
        */
        .box1{
            width: 200px;
            height: 200px;
            background-color: red;
            /*border: 1px solid #000;*/
            overflow: hidden;
        }
        .box2{
            width: 100px;
            height: 100px;
            background-color: blue;
            margin-top: 20px;
        }
    </style>
</head>
<body>
<!--
1.overflow: hidden;作用
1.1可以將超出標(biāo)簽范圍的內(nèi)容裁剪掉
1.2清除浮動(dòng)
1.3可以通過(guò)overflow: hidden;讓里面的盒子設(shè)置margin-top之后, 外面的盒子不被頂下來(lái)
--><!--
<div>我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字我是文字</div>
-->
<!--
<div class="box1">
    <p>我是文字1</p>
    <p>我是文字1</p>
    <p>我是文字1</p>
</div>
<div class="box2">
    <p>我是文字2</p>
    <p>我是文字2</p>
    <p>我是文字2</p>
</div>
-->
<div class="box1">
    <div class="box2"></div>
</div>
</body>
</html>

注意點(diǎn):

添加偽元素后可以撐起盒子的高度, 所以可以直接設(shè)置margin屬性
先知道有這些方式, 原理需要學(xué)習(xí)到BFC和hasLayout才能明白
支持BFC的瀏覽器(IE8+后频,firefox,chrome暖途,safari)通過(guò)創(chuàng)建新的BFC閉合浮動(dòng)卑惜;
不支持 BFC的瀏覽器 (IE5-7),通過(guò)觸發(fā) hasLayout 閉合浮動(dòng)驻售。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末露久,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子欺栗,更是在濱河造成了極大的恐慌毫痕,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件纸巷,死亡現(xiàn)場(chǎng)離奇詭異镇草,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)瘤旨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)梯啤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人存哲,你說(shuō)我怎么就攤上這事因宇。” “怎么了祟偷?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵察滑,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我修肠,道長(zhǎng)贺辰,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任嵌施,我火速辦了婚禮饲化,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘吗伤。我一直安慰自己吃靠,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布足淆。 她就那樣靜靜地躺著巢块,像睡著了一般礁阁。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上族奢,一...
    開(kāi)封第一講書(shū)人閱讀 49,764評(píng)論 1 290
  • 那天姥闭,我揣著相機(jī)與錄音,去河邊找鬼歹鱼。 笑死泣栈,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的弥姻。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼掺涛,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼庭敦!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起薪缆,我...
    開(kāi)封第一講書(shū)人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤秧廉,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后拣帽,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體疼电,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年减拭,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蔽豺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拧粪,死狀恐怖修陡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情可霎,我是刑警寧澤魄鸦,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站癣朗,受9級(jí)特大地震影響拾因,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜旷余,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一绢记、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧荣暮,春花似錦庭惜、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)惠遏。三九已至,卻和暖如春骏啰,著一層夾襖步出監(jiān)牢的瞬間节吮,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工判耕, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留透绩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓壁熄,卻偏偏與公主長(zhǎng)得像帚豪,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子草丧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 盒子的高度問(wèn)題 1.標(biāo)準(zhǔn)流中盒子的高度可以被內(nèi)容高度撐起來(lái);2.浮動(dòng)流中浮動(dòng)的內(nèi)容不能撐起盒子的高度; 為什么要清...
    壹點(diǎn)微塵閱讀 375評(píng)論 0 0
  • 浮動(dòng)元素高度問(wèn)題 在標(biāo)準(zhǔn)流中內(nèi)容的高度可以撐起父元素的高度 在浮動(dòng)流中浮動(dòng)的元素是不可以撐起父元素的高度的 清除浮...
    MGd閱讀 344評(píng)論 0 0
  • 清除浮動(dòng) 盒子高度問(wèn)題 在標(biāo)準(zhǔn)流中內(nèi)容的高度可以撐起盒子的高度 在浮動(dòng)流中浮動(dòng)元素內(nèi)容的高不可以撐起盒子的高 清除...
    光腳的魚(yú)閱讀 301評(píng)論 0 0
  • 1.浮動(dòng)的負(fù)作用 <1>背景不能顯示 由于浮動(dòng)的產(chǎn)生狸臣,對(duì)父級(jí)設(shè)background背景/背景顏色或背景圖片,...
    一枚小蝸牛閱讀 192評(píng)論 0 0
  • 【芯爾媽】親子共讀記錄30天~第03天~201710267 1.親子共讀:今天讀了2本書(shū): 我媽媽?zhuān)何顼埱拔艺f(shuō)我們...
    蠟王府閱讀 139評(píng)論 0 1