用来帮你更明确地去描述HTML/CSS世界的事物。html
在CSS中,一个元素就能够看做一个box。具体信息能够参考盒模型的解释,这里暂且不做展开。布局
Box的位置和大小时根据一个称为containing blocks的边界进行计算的。flex
block-level elements 通常指HTML中的特定类型的元素,好比div,p,ul等。
block boxes 指造成一个block formatting contexts的boxes。能够肯定的时正常的block-level(没有改变它的position,display等默认属性值)能够造成一个BFC。But,若是元素等display属性值为 'block', 'list-item', 或 'table'中的一种,也能够对外表现出块级元素的行为。也会成为一个block box。atom
哪些状况会产生一个BFC:spa
在一个BFC中,造成一个独立的布局环境,里面元素等布局位置不会受外部元素影响。code
与BFC对应,一个行内元素默认也会造成一个IFC(行内格式化上下文)。IFC有个不一样于通常的常识的特性:orm
当inline-level box宽度大于父容器宽度时会被拆分红多个inline-level box;
当属性direction为ltr时,margin/border/padding-left将做用于第一个的inline-level box,margin/border/padding-right将做用于最后一个的 inline-level box;
若属性direction为rtl时,margin/border/padding-right将做用于第一个的inline-level box,margin/border/padding-left将做用于最后一个的inline-level box;
<p style="margin-left:100px;margin-right:20px;border:1px dashed #ccc;"> <span class="before"> before </span> <span class="cotent" style="margin-left: 100px; margin-right: 20px;"> An inline box is one that is both inline-level and whose contents participate in its containing inline formatting context. A non-replaced element with a 'display' value of 'inline' generates an inline box. Inline-level boxes that are not inline boxes (such as replaced inline-level elements, inline-block elements, and inline-table elements) are called atomic inline-level boxes because they participate in their inline formatting context as a single opaque box. </span> <span class="after"> after </span> </p>
注意示例中,content 元素这段话开头和结尾的外边距大小。htm
在CSS2中, 一个盒子的定位模式一般是一下三种:ip
position属性值不是static的元素称之positioned element。ci
咱们知道,display,position和float都会对元素的布局位置表现产生影响。那么它们三者之间是如何起做用的呢?
指定值 | 最终表现值 |
---|---|
inline-table | table |
inline, table-row-group, table-column, table-column-group, table-header-group, table-footer-group, table-row, table-cell, table-caption, inline-block | block |
others | 与指定值相同 |