CSS BFC
#
BFC的定义BFC决定了元素对其内容进行定位,以及与其他元素的关系和相互作用。
创建了BFC的元素中,子元素会依次放置。两个相邻的元素之间的垂直距离取决于margin
特性。相邻的块级元素的垂直边距会折叠。
每个元素左外边与包含块的左边想接触,即使存在浮动也是如此(一个元素的内容区域由于浮动而压缩),除非这个元素新建一个新的BFC。
浮动元素会形成BFC,浮动元素内部子元素只要受该浮动元素影响,两个浮动元素之间互不影响。
#
怎样才能形成BFCfloat
的值不为none
overflow
的值不为visible
display
的值为table-cell
,table-caption
,inline-block
中的任何一个position
的值不为relative
和static
#
BFC的作用不和浮动元素重叠
一个浮动元素后面跟着非浮动元素,就会产生覆盖现象,自适应两栏布局。
清除元素内部浮动
只要把父元素设为BFC就可以清理子元素的浮动,最常见的用法就是在父元素上设置overflow: hidden
样式,对于IE6加上zoom: 1
嵌套元素margin
边距折叠问题的解决
只有同属于一个BFC时,两个元素才有可能发生垂直margin
的重叠,包括相邻元素、嵌套元素,只要它们之间没有阻挡(例如边框、非空元素,padding
)就会发生margin
重叠。
解决margin
重叠,让它们不在同一个BFC即可。
#
IE HasLayout下列元素默认具有layout
:
html
、body
table
、tr
、th
、td
img
hr
input
、button
、select
、textarea
、fieldset
、legend
iframe
、embed
、object
、applet
marquee
下列CSS属性和取值将让元素获得layout
:
position: absolute
- 绝对定位元素的包含区块
float: left|right
display: inline-block
width/height
除auto
外的任意值zoom
除normal
外的任意值
IE7中引入的hasLayout成员
overflow: hidden|scroll|auto
position: fixed
min-width
任意值max-width
除none
之外的任意值min-height
任意值max-height
除none
之外的任意值