用來幫你更明確地去描述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 | 與指定值相同 |