Css float屬性的一些特點(diǎn)

Css float屬性的一些特點(diǎn)

css布局中float布局是常用的布局方式,用于實(shí)現(xiàn)橫向多列布局。這個(gè)時(shí)候我們就需要對(duì)float屬性的特點(diǎn)進(jìn)行整理,float屬性可以說是學(xué)習(xí)csds布局第一個(gè)難點(diǎn),如果不花時(shí)間去整理一下他的特點(diǎn),布局的時(shí)候會(huì)挺坑的

我把float屬性的特點(diǎn)整理為以下幾類,1,對(duì)元素本身的影響 2,對(duì)父容器的印象 3,對(duì)相鄰元素的影響

1.float屬性對(duì)元素本身的影響:
當(dāng)元素沒有設(shè)置寬度值,而設(shè)置了浮動(dòng)屬性,元素的寬度隨內(nèi)容的變化而變化。

例:給元素設(shè)置浮動(dòng)屬性,并指定高度,元素的寬度會(huì)隨著內(nèi)容的寬度的變化而變化。

例 布局1:

<html>
<head>
    <title>float屬性的特點(diǎn)測(cè)試</title>
    <style type="text/css">
        .box1{
            float: left;
            height: 30px;
            background: blue;
        }
    </style>
</head>
<body>
   <div class="wrap">
       <div class="box1">我是內(nèi)容</div>
   </div>
</body>

效果如下:

1.png

可以看到當(dāng)我增加元素的內(nèi)容的時(shí)候,元素的寬度增加了:
例:我設(shè)置元素的內(nèi)置為“我是元素增加內(nèi)容”

2.png

說明:這里特別指定是布局的元素寬度值會(huì)隨著內(nèi)容的變化而變化,而沒有說高度值。是因?yàn)閴K級(jí)元素的寬度默認(rèn)是占滿一行的,只要設(shè)置float屬性后,才會(huì)隨內(nèi)容的變化而變化,而高度在沒有指明的情況下,本身就是隨內(nèi)容的變化而變化的。

2.float屬性對(duì)父元素的影響:
當(dāng)一個(gè)元素的設(shè)置為浮動(dòng)后,它的布局范圍會(huì)超過父元素布局范圍。 并且不能撐開父元素的盒子范圍。如果要把他限制在父元素的盒子范圍需要清除浮動(dòng)。
例:布局2

<head>
    <title>float屬性的特點(diǎn)測(cè)試</title>
    <style type="text/css">
         .wrap{
             border: 4px solid gray;
         }
        .box1{
            float: left;
            height: 30px;
            background: blue;
        }
    </style>
</head>
<body>
   <div class="wrap">
       <div class="box1">我是內(nèi)容</div>
   </div>
</body>
</html>

例:下面這個(gè)圖的紅框的內(nèi)容是box1元素的父元素,可以看到它的內(nèi)容并沒有被box1元素?fù)伍_,它是浮動(dòng)到了元素的外圍。

3.png

如果我們要把父元素?fù)伍_,可以為它的父元素設(shè)置清除浮動(dòng)屬性。

4.png
 .wrap{
             border: 4px solid gray;
              overflow: hidden;
 }

3.float屬性對(duì)其他元素的影響:
當(dāng)元素設(shè)置浮動(dòng)屬性后,會(huì)對(duì)相鄰的元素產(chǎn)生影響。相鄰元素特指緊鄰后面的元素。
例 布局3:

<head>
    <title>float屬性的特點(diǎn)測(cè)試</title>
    <style type="text/css">
         .wrap{
             /*border: 4px solid gray;*/
         }
        .box1{
            float: left;
            height: 36px;
            background: blue;
        }
        .box2{
            height: 36px;
            background: red;
        }
        .box3{
            height: 36px;
            background: green;
        }
    </style>
</head>
<body>
   <div class="wrap">
       <div class="box1">我是box1</div>
       <div class="box2">我是box2</div>
       <div class="box3">我是box3</div>
   </div>
</body>
</html>

效果如下圖:

5.png

可以看到我們給box1設(shè)置了左浮動(dòng),然后box2受到了浮動(dòng)影響,本來塊級(jí)元素是默認(rèn)一占一行的。但現(xiàn)在box2和box1是一行顯示,說明box2受到了浮動(dòng)的影響。但是box3沒有受到任何影響。因?yàn)楦?dòng)只針對(duì)緊鄰其后的元素有影響。

清除浮動(dòng)對(duì)緊鄰元素的影響的常用方法有兩種:
1.clear屬性:

           clear:both;
           clear:left;
           clear:right;

以布局3為例,我們要清楚box2受到的浮動(dòng)影響,就可以通過給其設(shè)置clear屬性。both表示受到左右浮動(dòng)的印象,left表示受到左浮動(dòng)的影響,right表示受到右浮動(dòng)的影響。

.box2{
      height: 36px;
      background: red;
      clear: left;
}

效果如下: 給box2設(shè)置clear浮動(dòng)屬性后,可以看到box2不會(huì)受到浮動(dòng)的影響,恢復(fù)了塊級(jí)元素的一占一行的默認(rèn)狀態(tài)。

6.png

2.同時(shí)設(shè)置windth:100%(或固定寬度)+overflow:hidden;
同樣以布局3為例:給box2元素設(shè)置寬度和overflow:hidden:

.box2{
            height: 36px;
            background: red;
            width: 100%;
            overflow: hidden;
}

效果如下:可以看到和清楚浮動(dòng)的效果相同。

7.png

這里需要注意的是如果我在這里給 box2設(shè)置固定寬度,而box2寬度沒有超過(父容器寬度-box1的寬度),這個(gè)時(shí)候box1和box2還是會(huì)排成一行。 這種技術(shù)常用于實(shí)現(xiàn)橫向多列布局。

.box2{
            height: 36px;
            background: red;
            width: 100px;
            overflow: hidden;
}

效果如下:

8.png

補(bǔ)充特點(diǎn)4:
塊級(jí)元素進(jìn)行左浮動(dòng)的時(shí)候,如果前面是有左浮動(dòng)的塊級(jí)元素就排在之前左浮動(dòng)的塊級(jí)元素的后面,如果前面沒有左浮動(dòng)的塊級(jí)元素,只有行內(nèi)元素,那么浮動(dòng)的塊級(jí)元素會(huì)排該盒子容器的最左邊。
右浮動(dòng)同樣如此。

例布局4:

<html>
<head>
    <title>float屬性的特點(diǎn)測(cè)試</title>
    <style type="text/css">
         .wrap{
             /*border: 4px solid gray;*/
         }
        .box1{
            float: left;
            height: 36px;
            background: blue;
        }
        .box2{
            float: left;
            height: 36px;
            background: red;
        }
        .box3{
            height: 36px;
            background: green;
        }
    </style>
</head>
<body>
   <div class="wrap">
       <div class="box1">我是box1</div>
       <div class="box2">我是box2</div>
       <div class="box3">我是box3</div>
   </div>
</body>
</html>

這里的box2進(jìn)行左浮動(dòng),因?yàn)樗暗腷ox1已經(jīng)設(shè)置了左浮動(dòng),所以box2排在box1之后。

9.png

如果,box2之前沒有左浮動(dòng)的塊級(jí)元素,只有行內(nèi)元素,會(huì)是什么效果呢?

10.png

可以看到,box2排在了大盒子的最左邊。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,784評(píng)論 1 92
  • CSS中的float屬性簡介 幾乎所有會(huì)WEB前端開發(fā)的同學(xué)都知道CSS中有一個(gè)float屬性用于實(shí)現(xiàn)HTML元素...
    歐陽大哥2013閱讀 2,828評(píng)論 5 26
  • 一 外部式css樣式 (也可稱為外聯(lián)式)就是把css代碼寫一個(gè)單獨(dú)的外部文件中,這個(gè)css樣式文件以“.css...
    KunMitnic閱讀 956評(píng)論 0 1
  • 本文主要是起筆記的作用,內(nèi)容來自慕課網(wǎng). 認(rèn)識(shí)CSS樣式 CSS全稱為“層疊樣式表 (Cascading Styl...
    0o凍僵的企鵝o0閱讀 2,661評(píng)論 0 30
  • vim的分屏功能: 中括號(hào)表示可有可無 打開文件并且分屏vim -o[n] file1 [file2 ...]vi...
    卿卿木子七閱讀 19,159評(píng)論 2 14