我想要一个元素从第一列开始,到最后一列结束,无论有多少列。
它应该像这样工作:
item {
grid-column-start: 1;
grid-column-end: -1;
}
according to MDN:
因此,这仅适用于显式网格吗?为什么它不能在隐式网格上工作?
最佳答案
因为我们可以轻松地在未定义的case1或循环依赖项上运行。如果它是隐式网格,则意味着我们需要首先放置所有其他元素以标识隐式网格,然后放置元素BUT如果放置我们的元素,我们将获得另一个隐式网格,因此从技术上讲,如果没有放置元素。
隐式网格背后的想法是,在放置具有已知位置的元素后,自动放置未为其放置定义任何元素的元素。
您可以通过对行或列使用一些技巧来克服这一问题:
Stretch an element to the end of the automatically calculated grid, not just the explicit grid
Forcing a column to be empty in a responsive grid layout
1一个基本示例:
.grid {
display: grid;
grid-template-columns: 50px;
grid-gap: 5px;
grid-auto-flow: column;
grid-auto-columns:50px;
}
.grid>span {
height: 50px;
background: red;
}
.grid>span.place {
grid-column: 1 / -1;
background: blue;
}
<div class="grid">
<span></span>
<span class="place"></span>
</div>
从逻辑上讲,我们首先将蓝色跨度放置在显式网格中,然后将红色自动跨度自动放置以获得2列的隐式网格。
考虑到您的逻辑,我有以下几种情况: