关于CSS中BFC的那些事

本文介绍了BFC(Block Formatting Context)概念,探讨了为何在浮动元素布局中需要启用BFC,提供了开启BFC的多种方式,如设置overflow属性,以及开启BFC后的元素特性。重点在于解决高度塌陷问题和避免布局混乱。
摘要由CSDN通过智能技术生成

首先什么是BFC?根据W3C的标准,在页面中元素都有一个隐含的属性叫Block Formatting Context(块级格式化上下文),简称BFC,可以理解为就是一个比较独立的隔离的渲染区域,该区域的子元素不会影响其父元素及以外区域的布局。该属性可以设置打开或关闭,默认是关闭状态。

一、什么情况下需要使用开启BFC

1、在网页布局的过程中我们经常会使用到浮动float这个属性,它优点很多,但也有一个很大的缺点,那就是在浮动的过程中出现高度塌陷的问题。假如存在父子元素,给子元素设置里浮动以后,子元素脱离文档流,无法撑起父元素的高度,导致父元素的高度丢失,从而布局混乱了。这种情况下就可以开启BFC。

未设置float属性前布局:

设置float属性后,高度塌陷,布局混乱:

二、如何开启BFC

解决高度塌陷有很多种方式,其中一种就是开启BFC属性。那究竟如何开启呢,有什么方式呢?

  • 设置元素浮动(虽然该方式撑开了父元素,但会使得父元素宽度丢失,其他元素布局依旧混乱,不推荐)
  • 设置元素绝对定位(宽度依然丢失,布局依然混乱)
  • 设置元素为inline-block(高度不塌陷,但宽度依然丢失)
  • 将元素的overflow设置为非visible的值,是副作用最小的一种方式,推荐使用(但在IE6以下的浏览器不兼容BFC方式,此时可以开启hasLayout隐藏属性,其中一种副作用最小的方式是设置zoom为1即可)

三、开启BFC后元素的特性

  1. 父元素的垂直外边距不会和子元素重叠
  2. 开启BFC的元素不会被浮动元素所覆盖
  3. 开启BFC的元素可以包含浮动的子元素

四、总结

BFC的开启并不只是只有以上方式,而BFC也应该不是只解决高度塌陷问题,日后遇到再总结吧。而高度塌陷也不是只有一种overflow的方式,还可以设置after伪类,可以在父元素的最后添加一个空白的div,再添加清除浮动操作,这些是基本没有副作用的方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值