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

【CSS-3你知多少】重叠边距问题如何解决?--BFC块级格式化上下文

时间:2023-03-30 13:23:52 CSS

#sec{background-color:red;}.child{高度:100px;顶部边距:10px;背景:黄色;}1。边距重叠示例父子元素边距重叠#sec{background-color:red;}.child{高度:100px;顶部边距:10px;背景:黄色;}问题:有时候当我们设置子元素的margin-top,但是却发现子元素没有上边距的效果,但父元素具有上边距的效果。原因:重叠边距,一个框及其后代具有重叠边距。根据规范,如果一个盒子没有添加BFC,它的上边距应该与文档流中第一个子元素的上边距重叠。兄弟元素边距重叠

1

2

3

这里粉色间距为25px。问题:如果一个元素A的bottommargin是25px,它的兄弟元素B的topmargin是5px,那么两者合起来就是25px(取最大值)。原因:兄弟元素的外边距重叠,取重叠的最大值。与浮动元素内容重叠
问题:右边的元素.right覆盖了红色的背景色。原因:右侧元素.right与左侧浮动元素.left的框重叠。2、BFC解决了重叠边距的问题BFC定义:BFC(Blockformattingcontext)直译为“块格式化上下文”。它是一个独立的渲染区域,只有Block-levelbox参与,它规定了内部Block-levelBox如何布局,与该区域外部无关。解决父子元素边距重叠问题#sec{background-color:#f00;溢出:隐藏;}.child{height:100px;顶部边距:10px;背景:黄色;}原理:BFC是页面上一个独立的容器,父子/外部和内部互不影响。解决兄弟元素边距重叠

1

2

3

粉色边距从上到下分别为5,30,30,25。原理:BFC垂直边距不会重叠。解决与float元素内容重叠
原理:BFC区域不会与浮动框重叠元素。即使BFC子元素是float,它也会参与高度计算。我是浮动元素原理:计算BFC高度时,float子元素也参与运算。BFC的创建方法:overflow:hidden/scroll/auto(不可见)floatisnotnonepositionisabsoluteorfixeddisplayisinline-block,table,table-cell,table-caption,flex,inline-flex。BFC使用场景:解决重叠边距问题;clearfloating(计算BFC高度时浮动的子元素参与计算);避免一个元素被浮动元素覆盖(兄弟元素之间存在高度不同的浮动元素,不占空间);由于宽度计算的四舍五入,避免在多列布局中出现换行