使网格项目填充列而不是行
Make grid items fill columns not rows
我希望我的网格垂直填充:
1 4 7
2 5 8
3 6 9
而不是横向填写:
1 2 3
4 5 6
7 8 9
在我的网格中,我想指定列数,而不是行数。
这是我的 div 的样子:
.grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
}
<div class="grid">
<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>9</div>
</div>
最初,网格在水平方向上布置项目。这是因为网格容器的初始设置是 grid-auto-flow: row
.
这就是您在布局中得到的:
.grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-auto-flow: row; /* default setting; can be omitted */
}
<div class="grid">
<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>9</div>
</div>
如果切换到 grid-auto-flow: column
,则网格项目将垂直排列。
.grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-auto-flow: column;
}
<div class="grid">
<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>9</div>
</div>
但对于垂直轴上的行行为,您需要定义行。
.grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-auto-flow: column;
grid-template-rows: 25px 25px 25px;
}
<div class="grid">
<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>9</div>
</div>
来自规范:
7.7. Automatic Placement: the grid-auto-flow
property
This property controls how the auto-placement algorithm works, specifying exactly how auto-placed items get flowed into the grid.
row
The auto-placement algorithm places items by filling each row in turn,
adding new rows as necessary. If neither row
nor column
is
provided, row
is assumed.
column
The auto-placement algorithm places items by filling each column in
turn, adding new columns as necessary.
对于不需要指定行数的 CSS 网格的替代解决方案,请尝试 CSS 列:
我希望我的网格垂直填充:
1 4 7
2 5 8
3 6 9
而不是横向填写:
1 2 3
4 5 6
7 8 9
在我的网格中,我想指定列数,而不是行数。
这是我的 div 的样子:
.grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
}
<div class="grid">
<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>9</div>
</div>
最初,网格在水平方向上布置项目。这是因为网格容器的初始设置是 grid-auto-flow: row
.
这就是您在布局中得到的:
.grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-auto-flow: row; /* default setting; can be omitted */
}
<div class="grid">
<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>9</div>
</div>
如果切换到 grid-auto-flow: column
,则网格项目将垂直排列。
.grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-auto-flow: column;
}
<div class="grid">
<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>9</div>
</div>
但对于垂直轴上的行行为,您需要定义行。
.grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-auto-flow: column;
grid-template-rows: 25px 25px 25px;
}
<div class="grid">
<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>9</div>
</div>
来自规范:
7.7. Automatic Placement: the
grid-auto-flow
propertyThis property controls how the auto-placement algorithm works, specifying exactly how auto-placed items get flowed into the grid.
row
The auto-placement algorithm places items by filling each row in turn, adding new rows as necessary. If neither
row
norcolumn
is provided,row
is assumed.
column
The auto-placement algorithm places items by filling each column in turn, adding new columns as necessary.
对于不需要指定行数的 CSS 网格的替代解决方案,请尝试 CSS 列: