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

举例说明BFC

时间:2023-03-30 15:41:22 CSS

BFC的基本概念。块格式化上下文(BFC)是网页可视化CSS呈现的一部分。它是块盒布局过程发生的区域,也是浮动元素与其他元素交互的地方。区域。——来自MDNHowtoCreateBFC以下方法会创建一个块格式化上下文:根元素()浮动元素(元素的float不是none)绝对定位元素(元素的位置是绝对的或固定的)内联块元素(元素的displayisinline-block)tablecell(元素的显示为table-cell,HTMLtablecell默认为该值)tabletitle(元素的显示为table-caption,HTMLtabletitle默认为该值)anonymoustablecell元素(该元素的显示为table、`table-row、table-row-group、table-header-group、table-footer-group(分别为HTMLtable、row、tbody、thehead、tfoot的默认属性)orinline-table`)overflow值为不可见的块元素display值为flow-root的元素可以创建无副作用的BFC(Firefox53+,chrome58+,opera45+支持)contain值为layout,content或paint弹性元素(显示是直接子元素flex或inline-flex元素的)grid元素(display是grid或inline-grid元素的直接子元素)多列容器(元素的column-count或column-width不是自动的,包括`column-count是1`)column-span为all的元素将始终创建一个新的BFC,即使该元素未包装在多列容器中(标准更改,Chrome错误)。BFC使用场景(实例讲解)clearfloatingcss.box{border:1pxsolid#f00;//触发BFC,以下任何一个溢出:隐藏;/*溢出:自动;*//*位置:绝对;*//*位置:固定;*//*显示:表格;*//*显示:弹性;*/}.fl{浮动:左;宽度:50px;高度:50px;背景:#0f0;边距:5px;}html

效果展示解决margincollapse新建一个BFC,避免两个相邻的
之间的marginmerging如下代码:三个p标签,上面15px,下面20px。{边距:15px自动20px;background:#f00;}html

1

2

3

效果展示)两者之间ptags的高度是20px,不是20+15=45px,这是margin重叠,选择最大的margin,和20px解决方法是给ptag一个父元素,创建BFCcssp{margin:15pxauto20px;背景:#f00;}html

1

2

3</p>此时中间元素的边距不会重叠,此时的间距为45px。可以试试参考文档:MDN