当前位置: 首页 > Web前端 > HTML

BFC深有体会,

时间:2023-04-02 15:00:18 HTML

一直都知道overflow可以清除浮动,但不知道背后的原理。查了很多资料,才知道原来还有BFC这个东西。写这篇文章是为了加深记忆,加深理解。什么是BFC?BFC的全称是BlockFormattingContext块级格式化上下文。一般情况下,BFC只存在于根级元素中,但有时我们也会在设置某些CSS属性时产生BFC。但前提是必须是块级元素。以下属性声明会生成BFC:1.floatisnotnone2.overflowisnotvisible3.positionisnotstaticandrelative4.displayisinline-blocktable-celltable-caption5.flexandinline-flexlayoutBFC布局规则1.内部元素垂直排列。2.垂直间隔由保证金决定。同一BFC中同一级别的两个元素之间的边距将崩溃。3.元素会在外层元素的左边或者右边,float也会一样原因4.BFC不会和float重叠(absolute,fixed除外)5.BFC计算高度的时候,float元素的高度也参与在计算中。6、BFC是隔离的,里面的元素不会影响外层。的变化也不会影响BFC。BFC应用解决margincollapse

elementA和elementB的实际间距为10px;在elementB的外层添加一个div,设置BFC属性。此时elementA和elementB的间隔为20px。代码如下:10px">
解决浮动覆盖
123上面代码中elmentA会覆盖elementB。解决方法如下,给elementB增加一个BFC属性elementB,就可??以避开elementA:
123计算内部浮动元素的高度。上面代码中wrapper没有高度,虽然设置了子元素的高度到100px,但由于子元素是浮动的,所以父元素没有高度。解决方法如下,给wrapper添加一个BFC属性,那么wrapper的高度就是子元素的高度:overflow:hidden的补充说明当设置一个元素为style:overflow:hiddenheight:auto元素会先计算自己的高度,然后才知道应该裁剪哪一部分.生成BFC的时候会先计算里面的元素的高度,当里面有float元素的时候,会计算float元素的高度,float元素的高度加上自己的高度。但是如果高度有一个特定的值,当高度超过时,浮动仍然会被裁剪。position:absolute和position:fixed的附加说明在本文前面提到过。BFC区域不会与浮动区域重叠,但绝对布局和固定布局除外。absolute和fixed将覆盖在浮动元素上,因为absolute和fixed不在文档流中。