本文是根據網上一段 2013 年視頻整理出來的,原視頻標題爲 The secrets of block formatting context - Fiona Chan,由 Fiona Chan 分享。css
這段視頻主要介紹講了兩塊內容。html
下面將視頻中涉及到的關鍵內容整理以下。ide
格式化上下文(Block Formatting Context,簡稱 BFC)賦予元素一個新的行爲表現能力,由如下之一的屬性聲明建立(W3C CSS2 中的定義):佈局
簡單點說,就是spa
下面展現了沒有 BFC 做用的狀況:code
接下來使用 display: table-cell,爲右邊的文本段落建立 BFC:orm
咱們給了 table cell 元素足夠的寬度,不過不用擔憂,若是橫向的空間不夠,它會自動縮減來適應的。不過在這以前,咱們須要給它一個足夠寬的寬度。cdn
上面佈局使用的核心代碼以下(以第二行爲例):視頻
<style> .line .col { width: 33.33333%; } .line .col:not(:last-child) { float: left; } .line .col:last-child { display: table-cell; width: 10000px; } </style>
<div class="line">
<div class="col"></div>
<div class="col"></div>
<div class="col"></div>
</div>
複製代碼
一行裏的最後一列的寬度是自適應的,不會由於多了或者少了幾像素就掉到下面去。而且這種佈局方式是能兼容到 IE6+ 的。htm
不過須要注意的是,這裏中間黃色的內容區域(main content area)在 HTML 中位於最後的位置,若是放在中間佈局就不正確了。這也是使用這種佈局方式的一個缺點。
<style> aside { float: left; } .sidebar { float: right; } main { display: table-cell; width: 10000px; } </style>
<aside role="complementary">
Left column
</aside>
<div class="sidebar">
Right column
</div>
<!-- 結構上,main content area 位於 DOM 結構中的最後一個 -->
<main role="main">
This is the main content area. And it's stretchy!
</main>
複製代碼
(完)