【发布时间】:2017-02-18 16:38:02
【问题描述】:
据我所知,overflow: hidden 和display: inline-block 都在.mid-column 中建立了一个新的BFC。但是,前者会使.mid-column 成为块盒,而后者会使它成为原子内联盒。
使用
overflow: hidden
.left-column {
float: left;
background-color: grey;
}
.right-column {
float: right;
background-color: grey;
}
.mid-column {
overflow: hidden;
}
<div class="wrapper">
<div class="left-column">
<h3>Left Column</h3>
</div>
<div class="right-column">
<h3>Right Column</h3>
</div>
<div class="mid-column">
<h3>Mid Column</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
<div class="left-column">
<h3>Inner Left Column</h3>
</div>
<div class="right-column">
<h3>Inner Right Column</h3>
</div>
</div>
</div>
使用
display: inline-block
.left-column {
float: left;
background-color: grey;
}
.right-column {
float: right;
background-color: grey;
}
.mid-column {
display: inline-block;
}
<div class="wrapper">
<div class="left-column">
<h3>Left Column</h3>
</div>
<div class="right-column">
<h3>Right Column</h3>
</div>
<div class="mid-column">
<h3>Mid Column</h3>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</p>
<div class="left-column">
<h3>Inner Left Column</h3>
</div>
<div class="right-column">
<h3>Inner Right Column</h3>
</div>
</div>
</div>
我只能解释第一个演示中的布局。根据document(我的粗体):
在块格式化上下文中,每个框的左外边缘接触 包含块的左边缘(对于从右到左的格式,右 边缘接触)。即使有浮点数也是如此(尽管 box 的 line box 可能会因为浮动而缩小),除非 box 建立一个新的块格式化上下文(在这种情况下,盒子 本身 may become narrower 由于浮动)。
overflow: hidden规则建立了一个新的BFC,thus,.mid-column的边框不能与.left-column和right-column的边框重叠。
至于第二个demo,我唯一知道的是.mid-column周围有一个匿名block box,为它建立了一个IFC。不幸的是,我无法进一步解释。
我的问题是:加入 IFC 而不是 BFC 对布局有何影响?如果有人可以对第二个演示提供详细解释,或者至少提供相关文档的链接以便我弄清楚,那就太好了。
【问题讨论】:
-
他们创建的 BFC 是相同的。他们参与 BFC 的方式以及 - 在后一种情况下是其 IFC - 的方式完全不同。
-
@Alohci 你的意思是
display: inline-block创建的BFC是IFC? -
没有。
display: inline-block参与的国际金融公司。它可能会或可能不会建立一个国际金融公司,这取决于它的内容是什么。根据您的示例,它不会建立国际金融公司。 -
@Alohci 很抱歉,但我无法理解。请帮我清理一下:在我的第二个演示中,在
mid-column中创建了一个 BFC,而 IFC 在哪里? IFC 是包含在mid-column中,还是包含在mid-column中?另外,“参与”是什么意思? -
IFC 由anonymous block box 建立,在
.wrapperdiv 内部和.mid-columndiv 外部。我鼓励你仔细阅读section 9.4 of the CSS 2 spec非常。