CSS 浮動,高度塌陷和BFC,清除浮動

浮動

通過浮動,可以使一個元素向其父元素的左側或右側移動,使用 float 屬性來設置元素的浮動
可選值:

  • none 默認值, 元素不浮動
  • left 元素向左浮動
  • right 元素向右浮動

注意

  • 元素設置浮動以後,水平佈局的等式便不需要強制成立
  • 元素設置浮動以後,會完全從文檔流中脫離,不再佔用文檔流的位置,所以元素下邊的還在文檔流中的元素會自動向上移動

未設置浮動
在這裏插入圖片描述
設置浮動

在這裏插入圖片描述

浮動的特點:

  1. 浮動元素會完全脫離文檔流,不再佔據文檔流中的位置
  2. 設置浮動以後元素會向父元素的左側或右側移動
  3. 浮動元素默認不會從父元素中移出
  4. 浮動元素向左或向右移動時,不會超過它前邊的其他浮動元素
  5. 如果浮動元素的上邊是一個沒有浮動的塊元素,則浮動元素無法上移
  6. 浮動元素不會超過它上邊的浮動的兄弟元素,最多最多就是和它一樣高

簡單總結:
浮動目前來講它的主要作用就是讓頁面中的元素可以水平排列, 通過浮動可以製作一些水平方向的佈局

代碼:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box1{
            width: 100px;
            height: 100px;
            background-color: #000;
            float: left;
        }
        .box2{
                width: 200px;
                height: 200px;
                background-color: orange;
                float: left;
            }
            .box3{
                width: 300px;
                height: 300px;
                background-color: red;
                float: left;
            }
    </style>
</head>
<body>
    <div class="box1"></div>
    <div class="box2"></div>
    <div class="box3"></div>
</body>
</html>

文字和圖片

浮動元素不會蓋住文字,文字會自動環繞在浮動元素的周圍, 所以我們可以利用浮動來設置文字環繞圖片的效果

未加浮動效果時
在這裏插入圖片描述
在這裏插入圖片描述
加了浮動效果
在這裏插入圖片描述在這裏插入圖片描述

元素設置浮動以後,將會從文檔流中脫離,從文檔流中脫離後,元素的一些特點也會發生變化
脫離文檔流的特點:
塊元素

  1. 塊元素不在獨佔頁面的一行

  2. 脫離文檔流以後,塊元素的寬度和高度默認都被內容撐開

在這裏插入圖片描述

行內元素:

  1. 行內元素脫離文檔流以後會變成塊元素,特點和塊元素一樣
  2. 脫離文檔流以後,不需要再區分塊和行內了

在這裏插入圖片描述
在這裏插入圖片描述

在這裏插入圖片描述在這裏插入圖片描述

高度塌陷和BFC

高度塌陷的問題:

在浮動佈局中,父元素的高度默認是被子元素撐開的,當子元素浮動後,其會完全脫離文檔流,子元素從文檔流中脫離,將會無法撐起父元素的高度,導致父元素的高度丟失,父元素高度丟失以後,其下的元素會自動上移,導致頁面的佈局混亂,所以高度塌陷是浮動佈局中比較常見的一個問題,這個問題我們必須要進行處理!
在這裏插入圖片描述
在這裏插入圖片描述

BFC(Block Formatting Context) 塊級格式化環境

  • BFC是一個CSS中的一個隱含的屬性,可以爲一個元素開啓BFC

  • 開啓BFC該元素會變成一個獨立的佈局區域

  • 元素開啓BFC後的特點:
    1.開啓BFC的元素不會被浮動元素所覆蓋
    2.開啓BFC的元素子元素和父元素外邊距不會重疊
    3.開啓BFC的元素可以包含浮動的子元素

  • 可以通過一些特殊方式來開啓元素的BFC:
    1.設置元素的浮動(不推薦)
    2.將元素設置爲行內塊元素(不推薦)
    3.將元素的overflow設置爲一個非visible的值
    4.常用的方式爲元素設置 overflow:hidden 開啓其BFC 以使其可以包含浮動元素

如何清除浮動

方法一
直接設置父元素的高度,必須要知道父元素高度是多少
方法二
在父元素中,追加空子元素,並設置其clear屬性爲both,clear是css中專用於清除浮動的屬性
clear 取值:
1、none:默認值,不做任何清除浮動的操作
2、left:清除前面元素左浮動帶來的影響
3、right:清除前面元素右浮動帶來的影響
4、both:清除前面元素所有浮動帶來的影響
方法三
設置父元素浮動
方法四
爲父元素設置overflow屬性,取值:hidden 或 auto
方法五
父元素設置display:table
方法六
使用after僞類解決高度塌陷

.box1::after{
            content: '';
            display: block;
            clear: both;
        }

clearfix 這個樣式可以同時解決高度塌陷和外邊距重疊的問題 */

.clearfix::before,
.clearfix::after{
content: ‘’;
display: table;
clear: both;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章