【发布时间】:2015-02-20 15:55:23
【问题描述】:
我正在尝试实现此定位概述的以下场景的弹性框
+----+----------+----+
| 1|2> | <3|
+----+----------+----+
| 4|5 |
| v|v |
+----+ |
| |
+----+------+--------+
|7> | <6|
+-----------+--------+
说明
- 上面的每个弹性项目都有它的订单号
- 数字根据最终结果对齐(垂直和水平)
- 只有编号的项目具有预定义的宽度
-
<>v显示项目的维度灵活性,具体取决于它具有的内容量;-
>内容将向右延伸 -
<内容将向左延伸 -
v内容会向下延伸
-
- 1 具有固定的宽度和高度
- 1、2 和 3 的高度相同,但 2 和 3 的宽度可变
- 4 和 5 已定义宽度但高度不同
- 6 和 7 具有相同的高度但不同的宽度
- 项目编号对应于它们在 HTML 中的位置
- 请注意,与 HTML 相比,输出中的 6 和 7 是相反的
问题
主要问题是所有项目都在同一个弹性容器中。因此,我在正确的点包装它们(断线)时遇到问题,即项目应该在项目 3 之后换行,而项目 2 和 3 必须延伸到整行,所以项目 3 可以完全在其右侧显示内容。
Here a working JSFiddle 带有您可以处理的初始 HTML 和 CSS。
一些想法
也许只是因为我脑海中闪过的想法。通过使用:before 和:after 并给它们正确的顺序,可以在flexbox 容器中使用另外两个项目。这样可以模拟一些额外的内容来获得所需的结果。
如果有弹性组,这会容易得多,因为可以将flex-direction 更改为column 并将多个项目组合在一起:1&2&3、4&5 和 6&7 并将它们放置在具有适当宽度的弹性组内的row 中。
【问题讨论】:
-
"主要问题是所有项目都在同一个弹性容器中。", "如果有弹性组会容易得多我>”。为什么你不能这样做?
-
@Oriol:因为根据项目类型,并非所有项目都以相同的顺序显示。将它们分组将无法在单个组之外订购。