本文是根据网上一段 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>
复制代码
(完)