内联块可以识别空白,具有实际内容的自动宽度,并按照它们在 HTML 中的顺序堆叠。浮点数不是但需要 clearfix 方法,并且基于块元素。这些元素在水平可用空间上具有自动宽度。纯粹从语义上讲,内联块的语义较少,因为空格感知格式和顺序的重要性。但是纯粹从功能的角度来看,两者都不是为网格而设计的。如果不是伪 CSS,我们也会有非语义的 HTML 标签 clearfixe。所以在我看来,他们都不是赢家。但是在未来几年 flexbox 将成为强制要求时,暂时别无选择。
使用内联块:
<div>
<div style="display:inline-block; width:30%;">col1
</div><div style="display:inline-block; width:70%;">col2</div>
</div>
标签必须粘在一起/附加,以消除任何排水沟。容器 div 是强制项目成为单独行的一部分所必需的。
带花车:
<div class="clearfix">
<div style="float:left; width:30%;">col1</div>
<div style="float:left; width:70%;">col2</div>
</div>
Clearfix 是强制“行”所必需的(在浮动后消除任何正常的流程项目问题或浮动)
是否使用其中一种取决于您的目标(和品味)。我必须说我喜欢 inline-blocks 多于浮动,只要你知道 col 宽度或使用相对大小 (%)。我认为它比带有 clearfix 的浮动更直观和可预测,一个修复“如果按照它应该如何使用它甚至不是问题的问题。只有内联块的空白意识迫使你使用一些时髦的 html ,这是一个缺点。
具有讽刺意味的是,表格完全可以完成所有这些(甚至是 col-heights 和垂直对齐),没有任何问题。由于内联块必须按顺序放置,这里有一个讨论的动机。
如果我们谈论的是响应式,表格会“丢失”内联块。假设您在台式机上有 4 个 cols,而您希望在平板电脑上有 2 个 cols,而在移动设备上有 1 个 cols。使用内联块,您“只是”为 cols 提供其他宽度尺寸,并且它们希望包裹得很好(注意它们折叠时的边距)。使用表格,您必须绑定到实际的行,这可能非常顽固。 Flexbox 用了很久,看起来很漂亮。您可以在某些情况下灵活调整布局。
Bootstrap 可以方便地了解他们是如何做某事的。只需阅读 3.0,他们正在使用相对网格大小。这给嵌套网格和对齐带来了问题。
---- --a- ---- ----
---b------
.... ..c.
Col a 是一个普通的父 col。 Col c 是 b 的子嵌套 col。除非您使用填充和边框模型,否则很难将 c 与具有相对大小的 a 对齐,因为装订线对于容器是可变的。但是那样你会失去很多灵活性。当您希望 col 具有一些背景和填充时,您会弄乱网格系统,因此您必须使用您设置样式的容器,这会使代码混乱。我还没有研究他们是否找到了解决方案。我还没有。我使用了固定像素,但这意味着在响应式设计中,您只能有几个固定宽度,并且对于移动设备周围的一切都使用相对网格。