Flexbox vs Twitter Bootstrap(或类似框架)


161

我最近发现,Flexbox当我在寻找一种解决方案来使divs相同,取决​​于最高的解决方案。

我已经阅读了CSS-tricks.com上的以下页面,它使我确信这flexbox是一个非常强大的学习和使用模块。但是,这也让我想到了Twitter Bootstrap(和类似框架)为其网格系统提供某种相同功能(当然还有很多额外功能)的事实。

现在,问题是:优缺点是flexbox什么?Flexbox不能提供与Bootstrap这样的框架可以做到的某些功能(当然,纯粹是在谈论网格系统)吗?在网站上实施时哪个更快?

我猜想仅用于网格系统会更聪明flexbox,但是如果您已经在使用框架,flexbox可以添加一些内容吗?

是否有任何理由选择flexbox框架的“网格系统”?


5
我将Flexbox与Bootstrap结合使用。
Aibrean 2014年

2
看看Zurb的Apps基金会。它完全建立在Flexbox网格系统之上
Salem Ouerdani 2015年


1
Bootstrap 4现在默认为flexbox!Flexbox是一个功能强大的布局工具,可为网格系统和核心组件提供无与伦比的灵活性和控制力。它以放弃对IE9的支持为代价,但是对组件的布局,对齐和大小进行了重大改进。
Nermien Barakat

5
我不同意将其作为意见而关闭。询问者正在寻找事实,而不是意见。“ flexbox的优缺点是什么?” 询问者(像我一样)正在尝试确定每个系统的优点和缺点。
达林·卡丹

Answers:


107

由于几个原因,flexbox比bootstrap好得多:

  • Bootstrap使用浮动工具来制作网格系统,这在很多人看来并不适合于Web,Flex-box通过对项目的大小和内容保持灵活来做相反的事情。与使用像素vs.em / rem的区别相同,或者仅使用边距和填充来控制div,而从不设置预定义的大小。

  • Bootstrap由于使用浮点数,因此每行后都需要clearfix,否则您将获得不同高度的div对齐。Flex-box不会这样做,而是检查容器中最高的div并保持其高度。

我会通过flex-box进行引导的唯一原因是缺乏浏览器支持(主要是IE)(已经死亡)。有时即使您使用相同的Webkit引擎,您的行为也会与Chrome和Safari不同。

编辑:

顺便说一句,如果您面临的唯一问题是等高柱,则有很多解决方案:

  • 您可以display: table在父级display: table-cell;上使用,在子级上使用。请参阅如何在显示中获得相同的高度:table-cell

  • 您可以在每个div上使用绝对定位:
    position: absolute; top: 0; bottom: 0;

  • 还有一个jquery / JS解决方案,还有一个我不记得的解决方案,我稍后会尝试添加。

编辑2:

另外,请查看http://chriswrightdesign.com/experiments/flexbox-adventures/https://scotch.io/tutorials/a-visual-guide-to-css3-flexbox-properties以了解flex-box的工作方式。

编辑3: https : //kyusuf.com/post/almost-complete-guide-to-flexbox-without-flexbox

编辑4: https : //caniuse.com/#feat=flexbox


1
谢谢你的评论。对于这两个“更好”的内容,我找不到任何解释,因此,我希望我的问题(以及您和您将来的回答)将有助于人们做出决定。幸运的是,现在IE 11的市场份额已经超过了前三个版本(IE10支持的三个版本)的总和flexbox,因此在我看来,它是可以安全使用的。您对结合使用框架和框架flexbox有何看法?当然,在使用框架时忽略框架的网格系统。
Rvervuur​​t 2014年

2
Flexbox可用于以更简单的方式创建功能更强大的网格系统,但它本身并不是网格系统。更好,更简单的网格系统展示了一些想法,ZURB Foundation for Apps使用flexbox进行布局
ckuijjer 2014年

实际上,如果愿意的话,您可以同时使用两者,我认为这是最佳选择,因为您不需要在很多时间里就已经习惯了的事物包扎思维(例如对于那些不知道任何东西的人) BS),但对我来说,flex-box的卖点是它具有相同的灵活性,只有使用JS才能获得,而无需编写任何代码。
ctf0 2014年

完整兼容性数据:caniuse.com/#feat=flexbox请注意,较旧的Android也存在问题。
cvrebert

大坝,我以为我们快要使用它了,看来还需要一年或更长时间,我们要在野外看到它,谢谢。
ctf0 2014年

6

我还没有使用Flexbox(我已经读过它,并且看起来很棒),但是我是一个Bootstrap前端开发人员。我建议您在做出最终决定之前测试Flexbox打印页面。您知道...有时打印样式令人头疼,当我必须设计打印格式时,Bootstrap对我有很大帮助。


这就是为什么您只将float网格与可引导div类一起使用于可打印div的原因
ctf0

1

恐怕您错过了另一篇有关CSS技巧的文章

注意:Flexbox布局最适合应用程序的组件和小规模布局,而Grid布局则用于较大规模的布局。

并不意味着您可能不会尝试,但请三思而后行。最终,一切都取决于所需的浏览器支持。


24
确保您了解该文章是在谈论一种新出现的Grid布局-而不是引导网格。
getsetbro

5
必须说我确实错过了!:)谢谢你的指正。
Kout Kout

赞成,您已经指出了一个非常明显的区别,即如何在没有意图和目的冲突的情况下使用弹性框和网格,对于我来说,您是指引导网格还是网格退出都没关系
Ahmad Farouk
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.