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

理解BFC及BFC相关的布局问题并解决

时间:2023-04-02 15:28:58 HTML

写页面时会遇到:子元素float父元素的高度不会被拉伸;在layout中,box1和box2,其中box1float:left,thisisbox2会在box1的下面,(如果文字太多,会形成文字环绕的效果),但我只想让box2在右边盒子1;或者上下框的边距重叠。这些问题可以通过添加overflow:hidden以及其他一些方法来解决,但是为什么呢?其实就是BFC的作用。男朋友??什么?BFC这个词....BFC:全名框格式化上下文;即块格式化上下文,块级元素参与;那么什么是块级?blahblahblah...'W3C'CSS2.1规范:块级元素是源文档中视觉上被格式化为块(例如,段落)的元素。'display'属性的以下值使元素成为块级:'block'、'list-item'和'table'。块级元素是源文档中可视格式中被视为块(例如段落)的那些元素。‘display’属性的以下值构成一个块级别:‘block’、‘list-item’和‘table’。那么它是如何形成的呢?以下情况之一:float值不为noneposition:fixed/absolutedisplay:table-cell/table-caption/inline-block/flex/inline-flex.overflowpropertyisnotvisible我们知道什么是BFC,如何构成BFC,那么接下来说说BFC的布局规则。滴滴……内部的盒子会一个一个竖着放。两个相邻框之间的垂直距离由边距决定。属于同一BFC的两个相邻Box的边距将重叠。每个框的左外边框紧挨着左边框的包含块(从左到右格式化时,否则相反)。即使有浮动,BFC的区域也不会和浮动框重叠。BFC是页面上一个隔离的独立容器,容器内部的子元素不会影响外部的元素。反之亦然。在计算BFC的高度时,浮动元素也会参与计算。应该知道的理论差不多了,该回答了~问题一:子元素浮动父元素的高度不会展开我在左

我在右
效果:我们看到容器只有正确的高度,而左边的float让元素脱离了文档流,它的高度是不计算的,现在如果要计算左边的高度,根据BFC布局规则6,如果形成的话,就可以计算出float一个BFC区域高度,来吧,放大:.container{color:#FFF;宽度:300px;边距:100px自动;边框:1px实心#330033;溢出:隐藏;}真的嘿,其实,这里不仅添加了overflow:hidden,还引入了任意一种可以构成BFC区域的行,比如:overflow:auto;/向左飘浮;/显示:弹性;等,根据项目实际需要2、问题2:box2在box1的右边。根据问题1的代码,将右侧区域的高度增加一个高度,比如300px,可以看到效果liu.right{background:#FFCCFF;高度:300px;溢出:隐藏;}因为左边的块是浮动的,所以右边在左边的下面。解决这个问题,根据BFC布局规则4:BFC的区域不会和浮动框重叠,所以正确形成BFC区域的效果:哇,大功告成!问题3:Magin重叠问题我是box1
我是box2
我们大多数人以为是80px,结果是50px!为什么?BFC原则2规定同一BFC区域的边距垂直重叠。如果它们不在同一区域,则它们不会重叠。来吧.......wrapper{溢出:隐藏;}...我是box1我是box2好的!通过在box1或box2中添加一个父元素,形成与另一个不在同一区域的垂直边距折叠两次relative当相邻的外边距均为正数时,折叠结果取两者中较大的值;当相邻两个外边距均为负数时,折叠结果为两个绝对值中较大的值;两个外边距,一个为正,一个为负,折叠结果为两者之和;最后还望指正~