【发布时间】:2019-06-08 20:55:13
【问题描述】:
我想要完成的事情:
有 4 个网格项目。在最宽的屏幕尺寸下,我希望将项目排成一排:
item_1 item_2 item_3 item_4
随着屏幕宽度的缩小,我希望项目像这样换行到下一行:
item_1 item_2
item_3 item_4
最后在最窄的地方,我希望时间是单列
item_1
item_2
item_3
item_4
我找到了一个例子,它只在可能的情况下包装下一个项目 – https://labs.jensimmons.com/2017/03-009.html
在此基础上,我尝试使用基于示例模型的嵌套网格容器:
grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));
HTML
<div class="outer_grid">
<div class="grid">
<div class="item">item 1</div>
<div class="item">item 2</div>
</div>
<div class="grid">
<div class="item">item 3</div>
<div class="item">item 4</div>
</div>
</div>
CSS
.outer_grid {
display:grid;
grid-template-columns: repeat(auto-fit, minmax(600px, 1fr));
grid-template-row:1fr 1fr;
grid-gap:1em;
border:5px solid blue;
}
.grid {
display:grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
grid-template-row:1fr 1fr;
grid-gap:1em;
border:5px solid green;
height:200px;
}
.item {
border:2px solid red;
}
它几乎可以工作了(下面的 codepen),但我不确定这是否是正确的方法,或者是否有更好的方法来实现这一点。我也尝试过使用 Flexbox,但由于 grid-gap 功能而选择了 CSS Grid。另外,我知道这是可以做到的,但我试图在没有媒体查询的情况下做到这一点。
【问题讨论】:
-
嵌套容器看起来是个不错的方法,前提是您不需要项目 1 和 2 来与项目 3 和 4 交互。例如,
order属性在它们之间不起作用。正如您所指出的,媒体查询是另一种(可能更简洁、更高效)的选项。
标签: html css responsive-design css-grid minmax