我希望使用 CSS Grid 来反转两个并排 div 的明显顺序,其中一个 div 任意增长(我不想使用浮点数)。
我在这里创建了一个 plunkr: http ://plnkr.co/edit/6WZBnHbwhD7Sjx2ovCO7?p=preview
#container {
grid-template-columns: 240px 1fr;
display: grid;
}
.a {
background: yellow;
}
.b {
background: blue;
color: white;
}
#container>.a {
grid-column: 1;
}
#container>.b {
grid-column: 2;
}
#container.reverse>.a {
grid-column: 2;
}
#container.reverse>.b {
grid-column: 1;
}
<div id="container" class="reverse" style="width: 800px;">
<div class="a">A</div>
<div class="b">B</div>
</div>
关键是当我应用了 .reverse
类时(这样你应该看到 B | A
), B
它看起来偏移到新行更像:
| A
B
如果我用 .b
反转 .a
的文档顺序,这会恢复正常(当然,如果我放弃 .reverse
类,我会得到相同的结果问题)。
为什么会这样,我该如何解决?
原文由 Rob 发布,翻译遵循 CC BY-SA 4.0 许可协议
由于 Grid 自动放置算法在容器中布置项目,它使用 下一个可用 的空单元格 ( source )。
在您的源代码中,A 元素位于 B 元素之前:
因此,网格容器首先放置 A,然后使用下一个可用空间放置 B。
grid-auto-flow: dense
此问题的一种解决方案( 如您所指出 的)是用 --- 覆盖默认值
grid-auto-flow: row
grid-auto-flow: dense
。使用
grid-auto-flow: dense
,网格自动放置算法将使用适合的项目回填未占用的单元格。grid-row: 1
另一种解决方案是简单地定义第二个项目的行。