html - 使 flex 元素换行到现有行,而不是新行

标签 html css responsive-design flexbox

我正在尝试将表格(我无法更改 HTML)设置为响应式流动而不会留下间隙的 flexbox。

我在宽屏上的起始表

+---+---+---+---+
| A | B | C | D |
+---+---+---+---+
| w | x | y | z |
+---+---+---+---+

当我缩小屏幕时,这就是我得到的:

+---+---+---+
| A | B | C |
+---+---+---+
| D | 
+---+---+---+
| w | x | y |
+---+---+---+
| z | 
+---+

我想要什么:

+---+---+---+
| A | B | C |
+---+---+---+
| D | w | x |
+---+---+---+
| y | z |   |
+---+---+---+

这是我目前拥有的 CSS:

/* Relevant flexbox stuff */
.respondable {
  display: flex;
}
.respondable tr {
  display: flex;
  flex-direction: row;
  flex-wrap: wrap
}

/* Pretty stuff */
.respondable {
  border-collapse: collapse;
}
.respondable td {
  border: 1px solid black;
  border-collapse: collapse;
  width: 100px;
  text-align: center;
  background: #eeeeee
}
Narrow screen to see D jump onto line of its own
<table class="respondable">
  <tr>
    <td>A</td>
    <td>B</td>
    <td>C</td>
    <td>D</td>
  </tr>
  <tr>
    <td>w</td>
    <td>x</td>
    <td>y</td>
    <td>z</td>
  </tr>
</table>

https://jsfiddle.net/h9s7nkar/

最佳答案

当 flex 元素换行时,它们会创建新的行。

换句话说, flex 元素不会换行到现有行。

这就是为什么当第一行开始换行时第二行元素被推到第三行的原因。

来自规范:

6. Flex Lines

A multi-line flex container (i.e. one with flex-wrap: wrap or flex-wrap: wrap-reverse) breaks its flex items across multiple lines, similar to how text is broken onto a new line when it gets too wide to fit on the existing line.

最快和最简单的解决方案是将所有 flex 元素放在同一个容器中。 (我知道您不能更改 HTML。)

关于html - 使 flex 元素换行到现有行,而不是新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40683619/

相关文章:

javascript - 简单的 innerHTML 更新不起作用

css - 如何使用 less mixin 检查宽度范围?

html - Bootstrap 容器向网页的右端添加填充

html - CSS根据宽度更改标题高度

css - 当我向按钮添加自定义 Angular 类时,为什么 Angular Material 设计会消失?

javascript - 从div内的多个iframe中提取标题

javascript - 元刷新下载(txt、ini、css 或 html)文件

html - 移动设备中以毫米为单位定义的高度错误

javascript - 切换 jquery 容器内的链接不起作用

jquery - 最小宽度 0 不适用于按钮