BFC与IFC_html/css_WEB-ITnose
因为我现在天天在做网页了,之前没怎么关注bfc与ifc原理,以至于我做出来的网页有点偏差。所以要深刻学习以下知识。
bfc:指它里面的子元素不会影响到外面的元素
加上一个overflow:hilden该元素的子元素是一个bfc下面
只要触发的是个bfc那么它对外面都没有影响。
1.block-level box:display 属性为 block, list-item, table 的元素,会生成 block-level box。并且参与 block fomatting context;
2.inline-level box:display 属性为 inline, inline-block, inline-table 的元素,会生成 inline-level box。并且参与 inline formatting context;
块级元素,在浏览器中通常是垂直布局,然后可以用margin来控制块级元素之间的间距,并列和嵌套的块级元素都存在外边距,也就是margin合并的问题。
而行内元素是以水平的方式布局,垂直方向的margin,padding都是无效的,并且设置的宽高也是无效的。
它还有一些布局的规则:
- 内部的Box会在垂直方向,一个接一个地放置。
- Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠
- 每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。
- BFC的区域不会与float box重叠。
- BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。
- 计算BFC的高度时,浮动元素也参与计算
而IFC为"内联格式化上下文",IFC的line box(线框)高度由其包含行内元素中最高的实际高度计算而来的
1.IFC中的line box一般左右都贴紧整个IFC,但是会因为float元素而扰乱。float元素会位于IFC与与line box之间,使得line box宽度缩短。
2.水平居中:当一个块要在水平居中时,设置为inline-block则会在外层产生IFC,通过text-align可以水平居中。
3.垂直居中:创建一个IFC,用其中一个元素撑开父元素的高度,然后设置其vertical-align:middle,其他行内元素则可以在此父元素下垂直居中。
同个ifc下的多个line box高度会不同。 IFC中时不可能有块级元素的,当插入块级元素时(如p中插入div)会产生两个匿名块与div分隔开,即产生两个IFC,每个IFC对外表现为块级元素,与div垂直排列。
上一篇: c++ switch用法
推荐阅读
-
HTML与CSS布局技巧总结_html/css_WEB-ITnose
-
HTML5:web语义化与SEO_html/css_WEB-ITnose
-
求高手帮我写个列表与列表之间的嵌套问题_html/css_WEB-ITnose
-
HTML XML XHTML DHTML区别与联系_html/css_WEB-ITnose
-
【急】如何快速高效地复制某个网页的一部分?使这一部分的布局与样式和原网站一样_html/css_WEB-ITnose
-
关于web页面性能测量指标与建议_html/css_WEB-ITnose
-
html与字符&_html/css_WEB-ITnose
-
[前端框架] Bootstrap 3 与 Foundation 5 的五大区别 (译)_html/css_WEB-ITnose
-
CSS3 波浪简单模拟我是波浪,我有起伏,有大波与小波(坏笑中.)_html/css_WEB-ITnose
-
HTML5与CSS3基础教程:普通页面构成和创建页眉_html/css_WEB-ITnose