【发布时间】:2018-06-19 13:59:22
【问题描述】:
我正在尝试使用 CSS Grid 规范创建一个 3 列布局,但我遇到了行和元素大小的问题。我的列需要包含数量不定且高度不同的内容。
这是我理想的布局:
问题:
1) 如果我告诉元素 A 和 B 使用第 1 行第 1 列,那么它们会相互堆叠,而不是 A 下方的 B。
2) 如果我指定元素 B 使用第二行,那么由于元素 C 使第 1 行高,它会被推到元素 C 下方。
3) 如果我指定元素 B 使用第二行,则元素 A 会拉伸以填充第 1 行。
有什么方法可以让元素的行为与第一张图片中的一样?
我知道的唯一解决方案是在这样的列内创建“脚手架”div:
<div class="grid">
<div class="col">
<div class="itemA"></div>
<div class="itemB"></div>
</div>
<div class="col">
<div class="itemC"></div>
</div>
<div class="col">
<div class="itemD"></div>
<div class="itemE"></div>
<div class="itemF"></div>
</div>
</div>
但我不喜欢这样做,我认为网格规范应该允许在没有脚手架的情况下创建布局。
问题:
1) 有什么办法可以防止元素拉伸以垂直填充行?
2) 是否可以将两个元素放在同一行,并让它们一个在另一个下方而不是相互冲突?
这是我的 2 支钢笔,我正在尝试寻找有无脚手架的解决方案:
【问题讨论】:
-
网格的所有直接子项都是网格项,因此您定义 2 列并且您有 5 个直接子项,它们将堆叠成 3 行的 2 列,您可能可以摆脱跨列和行
-
我会指出你想要做的不是网格,所以 CSS-Grid 在这里不是正确的工具。
-
当您说“定义列”时,您是指使用网格模板列还是我谈到的脚手架?我试图避免使用脚手架,因为我希望我的 html 在正常运行的同时尽可能精简。另外,我正在寻找 3 列,如果可能的话最好不要行。我希望它看起来像我发布的第一张图片。我只能用脚手架来完成。
-
尽可能避免搭建脚手架并没有错——我只是不确定在这种情况下你能避免多少。
-
尤其是脚手架的重量可以忽略不计。