【发布时间】:2020-03-03 02:41:09
【问题描述】:
我正在尝试创建一个 div 网格,所有这些 div 都需要 X 像素宽,并根据需要包含尽可能多的行来适应所有这些。我不知道外部 div 的宽度。使用 css 网格很容易做到这一点:
#container {
resize: both;
overflow: auto;
width: 170px;
display: grid;
grid-template-columns: repeat(auto-fill, minmax(50px, 1fr));
}
#container div {
border: 1px solid red;
}
<div id="container">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
</div>
现在,我的问题是我不希望网格中有任何空单元格(出于美学原因)。所以我想隐藏最后一行的所有元素,如下所示:
请注意,让网格适合 3 列只是问题的一个特例:如果我可以在网格中适合 5 列,我想删除第二行的所有项目。
是否可以在 CSS 中实现这一点? 理想情况下,无需手动添加媒体断点并手动隐藏 css 中的项目?
如果不行,可以用Javascript解决吗?
请注意,尽管我在示例中使用了 css display:grid,但这不是必需的 - 我想要的只是看起来像网格的东西。
【问题讨论】:
-
不,CSS 不能检测溢出等,所以你需要 Javascript
-
不知道列数是这里的杀手锏。使用 :nth-child 和 :last,您可以检测该行是否已满...您需要根据列数隐藏媒体查询。
标签: javascript html css css-grid