2022-02-23 CSS其五 浮動

還是你們城里人會玩 樂.jpg

一、浮動

傳統(tǒng)的網(wǎng)頁布局一般包含三種方式,標(biāo)準(zhǔn)流(普通流),浮動和定位。一個完整的頁面中這三種布局方式都有。標(biāo)準(zhǔn)流就是默認(rèn)的元素排列方式,之前所學(xué)習(xí)的標(biāo)簽都是按照標(biāo)準(zhǔn)流來布局的。
為什么我們需要浮動呢,因為有時候元素默認(rèn)的布局方式并不能滿足我們的要求。比如實現(xiàn)多個div元素的一行顯示,我們當(dāng)然可以將他們轉(zhuǎn)化為行內(nèi)塊元素,但是發(fā)現(xiàn)他們之間會存在一個小的空隙。又比如要實現(xiàn)兩個div元素,分別貼著瀏覽器的左右顯示,用標(biāo)準(zhǔn)流的方式就比較難實現(xiàn)。所以浮動就是為了解決標(biāo)準(zhǔn)流難以滿足的情況而出現(xiàn)的。
浮動的語法

選擇器 {float : 屬性值}
div {float  : left/right/none}

上述代碼分別讓元素向左、右以及不浮動。浮動的元素包含以下幾個特點
1.浮動的元素會脫離標(biāo)準(zhǔn)流浮動到指定的位置,俗稱脫標(biāo)。
2.浮動的元素會在一行內(nèi)顯示并且頂部對齊,只有在寬度超出父元素的寬度的時候才會換行顯示
3.浮動的元素會具有行內(nèi)塊元素的特點,即可以設(shè)置寬高并且一行內(nèi)顯示多個。
有了浮動我們就可以實現(xiàn)上述我們的需求了,要實現(xiàn)一行內(nèi)顯示多個div元素,只需要在CSS中書寫

div {
            height: 200px;
            width: 200px;
            background-color: pink;
            float: left;
        }

最后一行就是浮動的代碼,如果要實現(xiàn)左右分別對齊,只需要一個向左一個向右浮動即可。如果要間隔顯示,通過設(shè)置外邊距即可。
一般來說,浮動元素都是搭配標(biāo)準(zhǔn)流的父元素來使用的,比如這樣



有了浮動,就可以實現(xiàn)一些簡單的網(wǎng)頁布局比如下面這個布局模式



其代碼如下
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        * {
            margin: 0;
            padding: 0;
        }

        li {
            list-style: none;
        }

        .top {
            height: 50px;
            background-color: gray;
        }

        .banner {
            width: 980px;
            height: 80px;
            background-color: gray;
            margin: 10px auto;
        }

        .box {
            width: 980px;
            height: 300px;
            background-color: pink;
            margin: 0 auto;
        }

        .box li {
            width: 237px;
            height: 300px;
            background-color: skyblue;
            float: left;
            margin-right: 10px;
        }

        .box .last {
            margin-right: 0;
        }

        .footer {
            height: 150px;
            background-color: gray;
            margin-top: 10px;
        }
    </style>
</head>

<body>
    <div class="top">top</div>
    <div class="banner">banner</div>
    <div class="box">
        <ul>
            <li>1</li>
            <li>2</li>
            <li>3</li>
            <li class="last">4</li>
        </ul>
    </div>
    <div class="footer">footer</div>
</body>

</html>

注意CSS開頭的清除頁面內(nèi)外邊距以及清除無序列表的小圓點的代碼。
注意事項:1.網(wǎng)頁布局一般首先使用標(biāo)準(zhǔn)流將父元素上下排列,然后利用浮動排列子元素。
2.一個元素浮動,其兄弟元素也浮動。浮動的元素只會影響其后面的標(biāo)準(zhǔn)流,不會影響前面的標(biāo)準(zhǔn)流。

二、清除浮動

有時候我們會遇見不方便直接給定父元素高度的情況,比如我們不知道內(nèi)部的內(nèi)容有多大的篇幅的時候。這種時候我們可以不設(shè)置父元素的高度,由內(nèi)容來決定高度,但是內(nèi)容由子元素容納,如果子元素浮動那么父元素就沒有高度了,這樣顯然會導(dǎo)致頁面元素布局的混亂。為了消除浮動對標(biāo)準(zhǔn)流元素的影響,我們就需要清除浮動。清除浮動的方式有四種

1.額外標(biāo)簽法(隔墻法)

這是W3C的推薦做法,在每個浮動元素的后面額外加一個空標(biāo)簽,比如<div style=”clear:both”></div>,注意空標(biāo)簽必須是塊級元素。這樣左雖然簡單易懂,但是代碼中出現(xiàn)了大量無意義的標(biāo)簽,不利于結(jié)構(gòu)化。

2.給父元素添加 overflow

給父元素添加,將溢出部分隱藏。代碼簡潔但是會將溢出部分隱藏,有時候不能滿足要求。

3.:after 偽元素法

在父元素中添加下列代碼。關(guān)于什么是偽元素后面會進(jìn)行學(xué)習(xí)。

.clearfix:after { 
 content: ""; 
 display: block; 
 height: 0; 
 clear: both; 
 visibility: hidden; 
} 
.clearfix { /* IE6、7 專有 */ 
 *zoom: 1;
}

這種清除浮動的方法結(jié)構(gòu)簡單清晰,并且可以兼容低版本的瀏覽器。百度和網(wǎng)易使用的較多。

4.雙偽元素清除浮動

使用方法同上

.clearfix:before,.clearfix:after {
 content:"";
 display:table; 
}
.clearfix:after {
 clear:both;
}
.clearfix {
 *zoom:1;
}

這種方法小米和騰訊使用較多。
一張圖總結(jié)一下清除浮動的四種方法。


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 浮動 網(wǎng)頁布局的核心,就是用CSS來擺放盒子位置。如何把盒子擺放到合適的位置?CSS的擺放盒子的方式有3種:普通流...
    艾曼大山閱讀 5,491評論 1 7
  • CSS字體屬性 font-family:設(shè)置字體系列;字體之間的用英文狀態(tài)下的逗號隔開;盡量使用系統(tǒng)默認(rèn)自帶的字體...
    YanZi_33閱讀 342評論 0 0
  • CSS-04 浮動 1 浮動(float) 1.1 傳統(tǒng)網(wǎng)頁布局的三種方式 網(wǎng)頁布局的本質(zhì)——用 CSS 來擺放盒...
    Tutuls閱讀 469評論 0 0
  • 目標(biāo) 能夠說出為什么需要浮動 能夠說出浮動得排列特性 能夠說出3種最常見的布局方式 能夠說出為什么需要清除浮動 能...
    皮皮章閱讀 303評論 0 0
  • 技術(shù)交流QQ群:1027579432,歡迎你的加入! 歡迎關(guān)注我的微信公眾號:CurryCoder的程序人生 1....
    CurryCoder閱讀 680評論 0 2

友情鏈接更多精彩內(nèi)容