【发布时间】:2021-01-13 14:27:21
【问题描述】:
我希望有人可以帮助我,我一生都无法理解自动适应/填充网格布局的工作原理。我知道基本的 CSS,但我以前从未使用过网格布局。
我有大量带有标签的复选框项目,我想将它们排列成几列(取决于屏幕大小),并带有列流。
我已经成功使用
grid-template-columns: repeat( auto-fit, minmax(200px, 1fr) );
这给了我几乎正确的东西,但只要我添加
grid-auto-flow: column;
它只输出 1 行数百列。我已经尝试阅读有关其工作原理的文章,并尝试了 grid-row-template 和 grid-column-template 的不同配置,但我无法获得令人满意的结果。我不想指定确切的行数,因为项目的数量可能会发生变化,它应该只根据需要填写它们,同时保持列适合屏幕并保持相同的宽度。
我将尝试添加我的代码示例,我希望它有意义,因为我正在使用 Smalltalk 从存储库中提取复选框项目并将 HTML 打印到浏览器。
样式
.grid-container {
font-size: .7em;
display: grid;
}
.grid-container--fit {
grid-template-columns: repeat( auto-fit, minmax(250px, 1fr) );
Smalltalk 打印 HTML,迭代生成每个复选框元素。
aHTML nextPutAll: '<form><div class="grid-container grid-container--fit">'.
subjectItems do: [ :i | aHTML nextPutAll: '<label><input type="checkbox" name="subjects" value="', i description, '">', i description, '</label><br>' ].
aHTML nextPutAll: '</div></form>'.
【问题讨论】:
-
它只输出 1 行数百列 --> 因为默认情况下只有一行,除非您定义更多。如果您考虑
grid-auto-flow: row;,则与列完全一样(除非您定义更多,否则只有一列) -
你可能正在寻找这个:stackoverflow.com/a/63795684/8620333
-
您好,谢谢,但我如何配置它以便自动为所有项目添加所需的行数?我不知道它需要多少,并且项目的数量可能会随着时间的推移而增加
-
查看我分享的链接
-
哦,非常感谢!不知何故,我第一次错过了链接。我尝试了该解决方案,并且效果很好。再次感谢,我非常感谢。
标签: css css-grid grid-layout