【发布时间】:2013-05-09 17:38:06
【问题描述】:
我有一个容器 div 和 3 div 在里面如下。
<div>
<div>1</div>
<div>2</div>
<div>3</div>
</div>
我不知道里面每个div的内容,但它们的高度和宽度是可变的。
容器的高度由里面最高的div决定。
我想展示这些div,这样它们首先填充高度(从左到右),然后像下面那样移动到下一列。
+------------------+
|+-------++-------+|
|| || ||
|| || ||
|+-------+| ||
|+-------+| ||
|| || ||
|| || ||
|+-------+| ||
| +-------+|
+------------------+
显然,如果这些divs 都很大并且不能放在一列中,那么布局将是如下所示的 3 列
+---------------------------+
|+-------++-------++-------+|
|| || || ||
|| || || ||
|| || || ||
|| || || ||
|| |+-------+| ||
|| | | ||
|+-------+ | ||
| +-------+|
+---------------------------+
问题:是否可以最好只使用 CSS 以及如何做到这一点?
编辑:
- 我需要澄清几件事
- 容器最多可以有 2 或 3 列(永远不能有 1 列,也不能超过 3 列)。
- 容器的宽度不固定,但所有内部 div 的宽度相同。
- 容器的高度由最高的内部 div 决定。例如,如果最高的 div 是 300px,容器的高度也将是 300px。
- 另外两个较短的 div 应该决定它们是否可以放在一列中,或者应该显示在两个单独的列中。基于示例(上一项)。
- 另外两个最小的 div 应该决定是在一列还是两列。
- 不应包装任何内部 div。
示例:div 高度:第一个 300 像素、第二个 100 像素、第三个 150 像素
结果:这是一个 2 列布局(同一列中的第 2 列和第 3 列)。
示例:div 高度:第一个 100px、第二个 300px、第三个 150px
结果:这是一个 3 列布局。
示例:div 高度:第一个 100px、第二个 200px、第三个 300px
结果:这是 2 列布局(同一列中的第 1 列和第 2 列)。
示例:div 高度:第一个 100 像素、第二个 210 像素、第三个 300 像素
结果:这是一个 3 列布局。
【问题讨论】:
-
我不确定这是否完全适合您的需求,但您可能会发现它很有用:masonry.desandro.com
-
请创建一个小提琴,我不明白你想要什么?我很困惑
-
我最近正在阅读有关 boxflex 的内容。我还没有深入研究它,但它似乎是您描述的布局情况的一个很好的解决方案。 developer.mozilla.org/en-US/docs/Web/Guide/CSS/Flexible_boxes
标签: javascript html css