css - 现代浏览器是否仍然需要基于 float 的布局?

标签 css html layout css-float

<分区>


想要改进这个问题? 更新问题,以便 editing this post 可以用事实和引用来回答它.

关闭 8 年前

曾几何时,IE6 缺乏对 CSS 功能的支持,例如“display: table-cell”和 inline-block,导致“float”被劫持并用于布局——这从来不是为(或特别擅长)设计的).

使用 float 似乎会导致布局过于脆弱,难以维护,并且经常会随着动态内容的变化而完全崩溃。

这在当时是一个必要的邪恶,但是现在对 IE8 之前的浏览器的支持不再那么令人担忧,理论上我们应该能够摆脱 float 并使用 CSS 中真正适用于布局的部分- 比如前面提到的显示:table-cell 和 inline-block。

我目前正在考虑建议我的团队完全放弃基于 float 的设计 - 我是否有将自己逼入 Angular 落并在未来遇到问题的风险,或者如果旧版浏览器支持不重要,这是否是更好的选择在我们的元素上?

最佳答案

您应该完全摆脱 float 吗?

当然可以,只要您不需要更深入的浏览器支持。归根结底,真正重要的是页面是否为尽可能多的网站访问者正确显示,对吗?

您应该关心的另一个问题是可维护性,但我不能说在任何情况下这两种方法都比另一种方法更难维护。所以我只想问问你自己,你的团队更熟悉哪种布局方法,以及你需要支持多远。

display: table-cell 在 IE8+ 中被支持。 float 显示可以一直回到 IE6。

其他想法和 future ...

与您所说的关于 float 的内容相反,我认为如果使用得当,它们是非常可预测的。我对他们的主要疑虑是需要清除父级,这有点尴尬。此外,流行的脚手架系统如 Bootstrap960-Grid仍然选择使用 float ,并且有充分的理由:它们很有用,具有强大的跨浏览器支持,并且可以完成您需要做的事情。

话虽如此,CSS 和布局的前景还是不错的。在 Css 中有两种即将推出的布局模型:grid system。和 flexbox model .还没有建议,所以 browser support is a bit shaky on them .

网格系统与 display: table-cell 类似,但给您更大的控制权。 Flexbox 试图概括和抽象显示元素的想法,这允许真正强大、流畅(或“灵活”)的布局。一旦在浏览器中实现,这两者都会非常惊人。

如果你想阅读更多关于 flexbox 的用法,我 recommend the excellent MDN article about it

如果我是你,我会坚持并使用 float ——特别是通过使用脚手架框架。我已经很久很久没有担心编写脚手架 Css 了;我使用框架,因为代码已经为我编写好了。而且,对我来说,只有在 flexbox 和网格系统得到推荐并得到更广泛的实现后,我才会发现完全重组一个元素是值得的。

关于css - 现代浏览器是否仍然需要基于 float 的布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16813192/

上一篇:javascript - 消失元素的 OnClick 事件

下一篇:html - Firefox 无法检测到我的 css 文件,但 IE 可以

相关文章:

javascript - 我们可以通过 css 将 div 元素强制为 "wrap"吗?

javascript - 在动态复选框上添加 onclick 事件

javascript - 使 HTML 元素在 JQuery 对话框窗口中更新后保持可见

html - 在同一行问题中布置具有不同高度的不同列

java - 软键盘推送布局

java - 如何正确避免SWT表扩大?

javascript - 帮助将这段代码从 jQuery 转换为纯 javascript

css pos系统布局与flex

css - Antora supplemental-ui 从 doc.css 中的文档中删除最大宽度

python - Pyqt5 - 网格布局行为不当