ThikHome 2019-06-28
BFC的全称是block formatting context(块状格式化上下文),当BFC起作用的时候,其元素内部无论怎么翻江倒海都不会影响到外部元素,同样,外部元素的变化也不会影响到BFC内部元素,这就跟结界一样,你可以理解为有一个很强的护盾在包裹着BFC元素,这也是为什么BFC元素不会发生margin重叠的原因。
BFC起作用不需要特别多的条件,满足以下情况都会引起BFC:
在清除浮动的时候,只要元素满足以上这些情况,就不需要再加clear属性。
在之前的文章中,我们有说到过float实现的文字环绕效果,这时候如果给文字加上overflow:hidden就可以实现两栏自适应布局。这样实现的好处是文字的宽度是自适应的,无论图片是多大或多小,排版都不会乱。代码和效果如下:
.fl { float: left; width: 100px; margin-right: 10px; } .content { overflow: hidden; }
<div> <img src="./card.jpg" alt="" class="fl"> <div class="content"> 这里是文本展示,这里是文本展示,这里是文本展示,这里是文本展示,这里是文本展示,这里是文本展示,这里是文本展示, 这里是文本展示,这里是文本展示,这里是文本展示,这里是文本展示,这里是文本展示,这里是文本展示,这里是文本展示 </div> </div>
图片和文字之间如果需要间距,可以在图片中设置margin-right的值或者透明border,也可以在内容区设置透明border,但是不可以直接在内容区设置margin-left,如果是设置了margin-left,其间距必须是图片的宽度加上你想设置的间距大小,这样的间距就会对图片的大小产生依赖。
由于引起BFC的属性都有一些古怪的特性,并不是所有的情况都适合实现自适应布局,下面我们来一一说明下: