【发布时间】:2021-07-30 18:56:05
【问题描述】:
我试图学习如何在一个非常简单的网格 (grid-template-columns: 1fr 1fr) 上更改列的顺序。答案很简单:将以下规则添加到第二项:grid-row-start: 1; /* grid-row: 1; shortcut also works */。
_________ _________
| A | B | --> | B | A |
--------- ---------
但我不明白为什么会这样。我正在尝试更改列的顺序,但我使用的是行规则?第二项已经在第一行。添加该规则后发生了什么变化?
我试图理解它。我重置了网格并将grid-column-start: 1; 添加到第二项。我最终得到了这个网格:
_________
| A | | #B { grid-column-start: 1; }
---------
| B | |
---------
之后,我在第一项添加了grid-column-start: 2;,结果是:
_________
| | A | #A { grid-column-start: 2; }
--------- #B { grid-column-start: 1; }
| B | |
---------
现在,我必须告诉第二个项目从第一行开始:grid-row-start: 1;,我终于得到了我想要的。
_________
| B | A | #A { grid-column-start: 2; }
--------- #B { grid-column-start: 1; grid-row-start: 1; }
但问题是,我只能保留grid-row-start: 1; 并获得相同的结果! 为什么?!
body {
background: lightgoldenrodyellow;
}
#content {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
}
h2 {
text-align: center;
}
.grid {
display: grid;
width: 480px;
height: 240px;
margin: 4rem auto;
grid-template-columns: 1fr 1fr;
gap: 5px;
font-size: 3rem;
}
.column {
border: black solid 1px;
}
.colorA {
background: turquoise;
text-align: center;
}
.colorB {
background: aliceblue;
text-align: center;
}
.column3 {
/* does nothing */
display: block;
}
.column4 {
grid-row-start: 1;
}
.column5 {
/* does nothing */
display: block;
}
.column6 {
grid-column-start: 1;
}
<div id="content">
<div>
<h2>Original</h2>
<div class="grid">
<div class="column colorA column1">A</div>
<div class="column colorB column2">B</div>
</div>
</div>
<div>
<h2>Using grid-row-start</h2>
<div class="grid">
<div class="column colorA column3">A</div>
<div class="column colorB column4">B</div>
</div>
</div>
<div>
<h2>Using grid-column-start</h2>
<div class="grid">
<div class="column colorA column5">A</div>
<div class="column colorB column6">B</div>
</div>
</div>
</div>
【问题讨论】:
-
grid-auto-flow:row是默认行为,如果将其重置为grid-auto-flow:row dense,它将填充空单元格,否则它将通过单元格后的网格单元格分配项目。还可以查看order以重新排序网格或弹性项目 (#B{order:-1})order默认为0。 -
我在您的 codepen 中添加了 3 个示例以完成我之前的评论:codepen.io/gc-nomade/pen/YzVLOKE ;)
-
谢谢。在附上示例的同时,我将彻底阅读算法。 ??????