【发布时间】:2021-05-20 19:25:27
【问题描述】:
如何使用 CSS 网格并通过 CSS 设置列的顺序。
使用 CSS 网格的 3x3 网格示例
.grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-gap: 1px;
}
.grid>* {
background: orange;
}
<div class="grid">
<div class="fruit">Apple</div>
<div class="color">Red</div>
<div class="cost">$1.00</div>
<div class="fruit">Banana</div>
<div class="color">Yellow</div>
<div class="cost">$1.20</div>
<div class="fruit">Lime</div>
<div class="color">Green</div>
<div class="cost">$0.75</div>
</div>
但是,如果我尝试使用 grid-column 更改列的顺序,自动布局会失败
.grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-gap: 1px;
grid-template-areas: "column-1 column-2 column-3";
}
.grid>* {
background: orange;
}
.fruit { grid-column: 3 / 4; }
.color { grid-column: 2 / 3; }
.cost { grid-column: 1 / 2; }
<div class="grid">
<div class="fruit">Apple</div>
<div class="color">Red</div>
<div class="cost">$1.00</div>
<div class="fruit">Banana</div>
<div class="color">Yellow</div>
<div class="cost">$1.20</div>
<div class="fruit">Lime</div>
<div class="color">Green</div>
<div class="cost">$0.75</div>
</div>
我尝试使用order
.grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-gap: 1px;
}
.grid>* {
background: orange;
}
.fruit { order: 3; }
.color { order: 2; }
.cost { order: 1; }
<div class="grid">
<div class="fruit">Apple</div>
<div class="color">Red</div>
<div class="cost">$1.00</div>
<div class="fruit">Banana</div>
<div class="color">Yellow</div>
<div class="cost">$1.20</div>
<div class="fruit">Lime</div>
<div class="color">Green</div>
<div class="cost">$0.75</div>
</div>
行变成了列,列变成了行????
我试过这样的grid-template-areas
.grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-gap: 1px;
grid-template-areas: "column-1 column-2 column-3";
}
.grid>* {
background: orange;
}
.fruit { grid-area: column-3; }
.color { grid-area: column-2; }
.cost { grid-area: column-1; }
<div class="grid">
<div class="fruit">Apple</div>
<div class="color">Red</div>
<div class="cost">$1.00</div>
<div class="fruit">Banana</div>
<div class="color">Yellow</div>
<div class="cost">$1.20</div>
<div class="fruit">Lime</div>
<div class="color">Green</div>
<div class="cost">$0.75</div>
</div>
最终将所有行压缩成一行
如何更改列的顺序?
【问题讨论】: