我正在使用内部开发的框架,该框架依赖于我们的 HTML 的特定结构。棘手的事情之一是每一行都需要有自己的容器,有自己的类和数据属性。
所以这就是问题所在。在不彻底改变 DOM 的情况下,我怎样才能使下面的弹性框基本上像 HTML 表格一样呈现?还是只有一张桌子?该解决方案必须在 IE11 和 Chrome 中都有效。
我试图让它看起来像这样……
Column A | Column B | Column C
1 | 2 | 3
section {
display: flex;
flex-wrap: wrap;
}
section .col {
flex: 1 1 auto;
}
section .line-break {
flex-basis: 100%;
width: 0px;
height: 0px;
overflow: hidden;
}
<html>
<head>
</head>
<body>
<section>
<header>
<div class="col">Column A</div>
<div class="col">Column B</div>
<div class="col">Column C</div>
</header>
<div class="line-break"></div>
<div class="row">
<div class="col">1</div>
<div class="col">2</div>
<div class="col">3</div>
</div>
</section>
</body>
</html>
原文由 Steve Wortham 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您要呈现的内容是 表格数据 类型,那么
table
是正确的方法。HTML 5.1 W3C 建议,2016 年 11 月 1 日,4.9 表格数据
鉴于您不能或不想更改标记,这可以使用 CSS Table 来完成,并且可以在任何显示类型之间轻松切换,例如
flex
、block
等,甚至float
,使用媒体查询等。我还删除了
<div class="line-break"></div>
元素,因为您不需要,但如果它由组件或类似组件呈现,则保持原样不会造成任何问题。使用 CSS 表
如果您仍然需要或必须使用 Flexbox,我的这个答案提到了 CSS Table 和 Flexbox 在两个重要特性上的区别:
更新了一个示例,展示了一些有用的 Flexbox 内容,具有不同的宽度和跨度列。
使用弹性盒