塊格式化上下文(Block Formatting Context,BFC) 是Web頁面的可視化CSS渲染的一部分,是塊盒子的佈局過程發生的區域,也是浮動元素與其餘元素交互的區域html
其實就是你的頁面,不信你看看bash
<html>
)float
不是 none
)position
爲 absolute
或 fixed
)display
爲 inline-block
)display
爲 table-cell
,HTML表格單元格默認爲該值)display
爲 table-caption
,HTML表格標題默認爲該值)display
爲 table
、table-row
、 table-row-group
、table-header-group
、table-footer-group
(分別是HTML table
、row
、tbody
、thead
、tfoot
的默認屬性)或 inline-table
)overflow
值不爲 visible
的塊元素display
值爲 flow-root
的元素contain
值爲 layout
、content
或 paint
的元素display
爲 flex
或 inline-flex
元素的直接子元素)display
爲 grid
或 inline-grid
元素的直接子元素)column-count
或 column-width
不爲 auto
,包括 column-count
爲 1)column-span
爲 all
的元素始終會建立一個新的BFC,即便該元素沒有包裹在一個多列容器中看第一條根HTML元素,那不就是咱們整個頁面就是一個BFC;ide
BFC包含建立它的元素內部的全部內容,可是不包括建立了新BFC的子元素的內部內容佈局
<body>
<div class="box1"></div>
<div class="box2"></div>
<div class="box3"></div>
<div class="box4"></div>
</body>
複製代碼
div {
height: 50px;
}
.box1 {
width: 400px;
background-color: #82A6F5;
}
.box2 {
width: 300px;
background-color: #EAF048;
}
.box3 {
width: 100px;
background-color: #9FF048;
}
.box4 {
width: 200px;
height: 30px;
background-color: #2A5200;
}
複製代碼
藍色盒子設置浮動,黃色盒子會與之重合flex
<div class="col1"></div>
<div class="col2"></div>
複製代碼
div {
height: 400px;
}
.col1 {
width: 400px;
background-color: #82A6F5;
float: left;
}
.col2 {
height: 500px;
background-color: #EAF048;
}
複製代碼
建立BFCui
使用
overflow:hidden
建立BFCspa
.col2 {
/**建立BFC**/
overflow: hidden;
height: 500px;
background-color: #EAF048;
}
複製代碼
<div class="col1"></div>
<div class="col2"></div>
複製代碼
body{
border: 10px solid #000000;
}
.col1 {
width: 400px;
background-color: #82A6F5;
float: left;
}
.col2 {
height: 500px;
background-color: #EAF048;
}
複製代碼
<div class="container">
<div class="box"></div>
<div class="box"></div>
</div>
複製代碼
.col1 {
width: 400px;
height: 400px;
background-color: #82A6F5;
margin-bottom: 50px;
}
.col2 {
height: 500px;
width: 400px;
background-color: #EAF048;
margin-bottom: 60px;
}
複製代碼
<div class="col">
<div class="col1"></div>
<div class="col2"></div>
</div>
複製代碼
.col{
border: 1px solid #2A5200;
overflow: hidden;
}
.col1 {
width: 400px;
height: 400px;
background-color: #82A6F5;
}
.col2 {
height: 500px;
width: 400px;
background-color: #EAF048;
float: left;
}
複製代碼
增長div.col
overfloe:hidden;
,建立了一個新的BFC高度增長3d
.col{
border: 1px solid #2A5200;
overflow: hidden;
}
複製代碼
咦? 怎麼少了個規則4呢,其實仔細看看上面的例子都體現了佈局規則4 - BFC就是頁面上的一個隔離的獨立容器,容器裏面的子元素不會影響到外面的元素;code
由於BFC內部的元素和外部的元素絕對不會互相影響,所以,當BFC外部存在浮動時,它不該該影響BFC內部Box的佈局,BFC會經過變窄,而不與浮動有重疊。一樣的,當BFC內部有浮動時,爲了避免影響外部元素的佈局,BFC計算高度時會包括浮動的高度。 避免外邊距塌陷也是這樣的一個道理。orm
上面說的有些東西,其實在咱們日常的佈局中,已經有在使用這些規律,只是沒有總結出來,若是寫的很差之處歡迎批評指導。