对于Box Model和Positioning Scheme中3种定位模式的细节,已经经过如下几篇文章记录了我对其的理解和思考。
《CSS魔法堂:从新认识Box Model、IFC、BFC和Collapsing margins》
《CSS魔法堂:你必定误解过的Normal flow》
《CSS魔法堂:Absolute Positioning就这个样》
《CSS魔法堂:说说Float那个被埋没的志向》
深刻细节后会发现3中定位模式之间,Box Model和Positioning Scheme之间存在千丝万缕的关系,必须以俯瞰的角度捋一下。html
简单粗暴上规则:)布局
以前我总以为Box Model是一个随定位模式变化的结构,但其实我是被一些表象给蒙蔽了而已。
首先咱们要坚决不移地记住:每个元素只要不是display:none
,则它一定会产生一个遵循Box Model的盒子,而这个盒子无论任何状况均由margin box、border box、padding box和content area这4个框组成。(所以说每个元素会生成0~N个框是正确的哦^_^)
而Positioning Scheme则决定盒子间布局关系,并经过影响display
属性影响Ccontent area宽高的设置方式。code
position:relative
来引入top/right/bottom/left来提供盒子定位微调的功能。** 注意:不管采用哪一种定位模式,盒子依然由margin/border/padding/content4个框组成 **orm
display
的结果值当采用Float和Absolute positioning时,display属性值将根据下列规则被重置:htm
设定值 inline-table 实际值 table
设定值 inline, run-in, table-row-group, table-column, table-column-group, table-header-group, table-footer-group, table-row, table-cell, table-caption, inline-block 实际值 block
另外当设置display:none
,就再也不考虑Positioning scheme了。由于元素没有对应的盒子,还说什么定位,说什么布局呢。blog
尊重原创,转载请注明来自:http://www.cnblogs.com/fsjohnhuang/p/5377955.html^_^肥仔Johnelement