2014-04-19 40 views
5

我已经使用了Bootstrap,并且研究了Foundation。从我所看到的,他们都使用float:来实现响应式网格。响应式网格框架 - float:vs display:table-cell

我也见过只使用display: table-cell@media查询的响应式网格。

后者对我来说似乎更好,因为float:旨在实现特定的印刷效果,因此使用它来实现响应式网格布局看起来像是一种破解。

我的问题:float:是由bootstrap,foundation和其他响应式网格使用,以避免在旧浏览器中缺少适当的table-cell支持?如果还有其他原因,我也想听听。

+0

据我所知,你可以要求Bootstrap使用堆栈('z-index')而不是'float's。 – TylerH

回答

4

大致有3种方式,使网格系统:floatinline-blocktable-cell

它们都各有利弊。 Bootstrap可能使用float,因为作为一个框架,它可以很容易地适应不同的场景。

float方法的一大局限是您不能垂直对齐网格元素,并且我个人更喜欢使用inline-block方法。

然而,inline-block方法带来的问题空白(因为网格项目成为类的词语),它可以固定各种方式,如广泛克里斯Coyier解释说:

http://css-tricks.com/fighting-the-space-between-inline-block-elements/

在我看来,table-cell方法的最大问题在于,您只能将网格元素放置在的一行中,因为您无法通过CSS将它们推送到新行上。这意味着每行都需要一个新的容器元素,并且对于响应式设计而言变得非常不灵活。

+3

准确地说,当所有浏览器都支持Flexbox时,这3种方法将会过时。 – gyo

+0

你也可以检查这个答案的网格浮动和元素之间的利润率相等:http://stackoverflow.com/a/23352245/1811992。不能等待flexbox,因为这会变得非常复杂。 –

0

我同意gyo所写的所有内容,只会补充说我发现Pure grids(以前称为YUI3网格)是一种有效且跨浏览器友好的内联块方法应用。有趣的是,它还包含了前面提到的一些Flexible Box属性。然而,如果需要国际化,一个巨大的胜利是,当设置dir =“rtl”时,内联块会自动反转,而不像基于浮点的布局(不确定表格)。