BFCについて例を通して説明する
BFCの基本概念
ブロックフォーマットコンテキスト(Block Formatting Context,BFC)は、Webページの可視化CSSレンダリングの一部であり、ブロックボックスのレイアウトプロセスが発生する領域であり、フローティング要素が他の要素と相互作用する領域でもある.
MDNから
BFCの作成方法
次の方法で作成されます.
ブロックフォーマットコンテキスト:
)
( 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
の で、 のないBFC( 53+,chrome 58+,opera 45+サポート) を できます. contain
の がlayout
、content
またはpaintの である. (display
はflex
またはinline-flex
の ) .メッシュ (display
はgrid
またはinline-grid
の サブ ) . の ( のcolumn-count
またはcolumn-width
はauto,
`column-count
1`) . column-span
がall
の である 、 が のカラムコンテナに まれていない でも、 に しいBFCが されます( 、Chrome bug).
BFCの シーン( で )
-
css
.box {
border: 1px solid #f00;
// BFC,
overflow: hidden;
/* overflow: auto; */
/* position: absolute; */
/* position: fixed; */
/* display: table; */
/* display: flex; */
}
.fl {
float: left;
width: 50px;
height: 50px;
background: #0f0;
margin: 5px;
}
html
-
BFC
:
p , 15px, 20px
p {
margin: 15px auto 20px;
background: #f00;
}
html
1
2
3
の
)
2つのpタグ の さは20 pxであり、20+15=45 pxではない.これがエッジオーバーラップであり、 の1つのエッジを し、20 pxである.
は、pタグの を し、BFC css
p {
margin: 15px auto 20px;
background: #f00;
}
html
1
3
を することです.
このとき, の の は ならず,このときの は45 pxである.
してみてください
ドキュメント:- MDN