Open huandie2012 opened 6 years ago
一直没有去深究BFC,定义化的东西总是要实践化才能更好的理解,这篇文章分享一些我对BFC的理解。 BFC(block formatting context)又叫块格式化上下文,简单来说BFC就是一种属性,这种属性会影响元素的定位以及与其兄弟元素之间的相互作用,但是BFC属于普通流,因此它对兄弟元素也不会造成什么影响。 注意: 这里需要说明一下,BFC 并不是元素,而是某些元素带有的一些属性,因此,是上面这些元素产生了 BFC ,而它们本身并不是 BFC ,这个概念需要区分清楚。 从样式上看,具有BFC的元素与普通容器没什么区别,但是从功能上,具有BFC的元素可以看作是隔离了的独立容器,容器里面的元素不会在布局上影响到外面的元素,并且BFC具有普通容器没有的一些特性,例如可以包含浮动元素,使用overflow方法清除浮动就是触发了浮动元素的父元素的BFC,使得它可以包含浮动元素,从而防止出现高度塌陷的问题。 触发BFC的条件: 浮动元素,float 除 none 以外的值; 绝对定位元素,position(absolute,fixed); display 为以下其中之一的值 inline-blocks,table-cells,table-captions; overflow 除了 visible 以外的值(hidden,auto,scroll); 在 CSS3 中,BFC 叫做 Flow Root,并增加了一些触发条件: display 的 table-caption 值; position 的 fixed 值,其实 fixed 是 absolute 的一个子类,因此在 CSS2.1 中使用这个值也会触发 BFC ,只是在 CSS3 中更加明确了这一点; 从整体上看,BFC 是隔离了的容器,这个具体可以表现为三个特性:
一直没有去深究BFC,定义化的东西总是要实践化才能更好的理解,这篇文章分享一些我对BFC的理解。 BFC(block formatting context)又叫块格式化上下文,简单来说BFC就是一种属性,这种属性会影响元素的定位以及与其兄弟元素之间的相互作用,但是BFC属于普通流,因此它对兄弟元素也不会造成什么影响。 注意: 这里需要说明一下,BFC 并不是元素,而是某些元素带有的一些属性,因此,是上面这些元素产生了 BFC ,而它们本身并不是 BFC ,这个概念需要区分清楚。 从样式上看,具有BFC的元素与普通容器没什么区别,但是从功能上,具有BFC的元素可以看作是隔离了的独立容器,容器里面的元素不会在布局上影响到外面的元素,并且BFC具有普通容器没有的一些特性,例如可以包含浮动元素,使用overflow方法清除浮动就是触发了浮动元素的父元素的BFC,使得它可以包含浮动元素,从而防止出现高度塌陷的问题。 触发BFC的条件: 浮动元素,float 除 none 以外的值; 绝对定位元素,position(absolute,fixed); display 为以下其中之一的值 inline-blocks,table-cells,table-captions; overflow 除了 visible 以外的值(hidden,auto,scroll); 在 CSS3 中,BFC 叫做 Flow Root,并增加了一些触发条件: display 的 table-caption 值; position 的 fixed 值,其实 fixed 是 absolute 的一个子类,因此在 CSS2.1 中使用这个值也会触发 BFC ,只是在 CSS3 中更加明确了这一点; 从整体上看,BFC 是隔离了的容器,这个具体可以表现为三个特性: