我应该使用 display: block,还是应该始终使用 display: flex?

Posted

技术标签:

【中文标题】我应该使用 display: block,还是应该始终使用 display: flex?【英文标题】:Should I ever use display: block, or should I always use display: flex? 【发布时间】:2016-12-21 06:13:24 【问题描述】:

我最近学习了很多关于 flexbox 的知识,但有一件事我还不清楚。我应该始终将display 设置为flex/inline-flex,还是使用block/inline-block 更有利?

我找到了几篇有用的文章,但没有一篇文章回答了这个特定的问题。 This article 使用 flexbox 解释了不同 display 值之间的差异,而不是将它们与 display: block 进行比较。该问题确实表明使用block/inline-block 已过时,但我还没有看到任何其他消息来源证实这一点。如果display: block 现在已经过时了,我会认为它会在W3 Schools 上这么说(并不是说它们总是正确的,但它们似乎是一个很好的来源)。

几个答案提到了this article,但同样,它没有解释何时应该使用display: block 而不是display: flex(如果有的话)。

回答类似问题的其他文章是this one 和this one。虽然两者都是很棒的文章。第一个对两者都有优点和缺点,但 flexbox 的唯一显着缺点是浏览器兼容性,这不是这个项目关心的问题。后一篇文章给出了我看到的最佳答案,即使用display: flex 允许元素保留弹性框属性。这是否意味着如果它不需要 flexbox 属性我应该只使用display: block?是否会对性能产生影响,还是我应该一直使用display: flex

【问题讨论】:

我个人喜欢* display: flex; 的大重置,效果出奇的好。试试看。 @torazaburo ,你认为一切都应该是 display:flex 吗? 这是一些人喜欢的选项。 【参考方案1】:

它们是不同的盒子布​​局模型。都是有效的,各有优缺点。

blockinline-block 都不是过时的。您仍然可以使用它们,而且 CSS 工作组仍在添加您可以与这些旧布局一起使用的新功能。

flexbox 的唯一显着缺点是浏览器兼容性

这是错误的,flexbox 有很多缺点,比如lack of floating and lack of multicolumns:

Flex 布局表面上类似于块布局。它缺少很多 可以使用的更复杂的以文本或文档为中心的属性 在块布局中,例如floats 和columns。作为回报,它变得简单 以及用于分配空间和对齐内容的强大工具 Web 应用程序和复杂网页通常需要的。

这是否意味着如果它不需要 flexbox 属性我应该只使用display: block

即使您不需要弯曲,Flexbox 仍然可以工作。但在那种情况下,我会劝阻它。块布局更简单,这可能意味着浏览器可以更快地呈现它。

【讨论】:

【参考方案2】:

'flex' 是为使用更简单和更好的响应式设计而创建的,因此它需要更多的渲染计算时间,如果您不需要响应式设计,最好使用 'block',因为它更快。

【讨论】:

以上是关于我应该使用 display: block,还是应该始终使用 display: flex?的主要内容,如果未能解决你的问题,请参考以下文章

display:blockdisplay:inline与displayinline:block的概念和区别

DIVs包装,即使是“display:inline-block”

用 display:block 输入不是块,为啥不呢?

柴油机应该使用同步参与者 actix_web::web::block 还是 futures-cpupool 运行?

深入了解display:inline-block

css里面“display=block”是啥意思?是换行吗?