我第一次使用 CSS 网格布局,它们很棒。然而,现在,我无法控制我的一个网格单元。
我想要的是有一个元素占用现有的可用空间而 _不是更多_,当内容变得太大时滚动。我的理解是,在计算完其他所有内容后, 1fr
的网格大小会占用统一数量的可用空间。我尝试了各种尺寸,例如 minmax(auto, 1fr)
但无济于事 - 1fr
似乎可以扩展以适应我不想要的内容。设置最大尺寸大小,如 100px
也不好,因为我希望大小由网格中的其他元素确定。
这是示例:
.container {
display: grid;
grid-template-rows: auto 1fr auto;
grid-template-columns: 1fr 1fr;
}
.container>div {
border: 1px solid blue;
border-radius: 5px;
}
.left {
grid-column: 1;
grid-row: 1/4;
}
.header {
grid-column: 2;
grid-row: 1;
}
.problem-child {
grid-column: 2;
grid-row: 2;
overflow-y: scroll;
}
.footer {
grid-column: 2;
grid-row: 3;
}
<div class="container">
<div class="left">left<br>I don't want this one to scroll<br>this should<br>determine<br>the height of the whole grid container</div>
<div class="header">column header</div>
<div class="problem-child">problem child:<br>I<br>want<br>this<br>to<br>scroll<br>rather<br>than<br>making<br>everything<br>tall</div>
<div class="footer">column footer</div>
</div>
我可以使用什么网格声明(如果有)让“问题孩子”在溢出时滚动而不是扩展?
原文由 waterproof 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用
max-height:100%;
以及min-height
留下足够的高度来显示适当的滚动条。 (firefox 可以,chrome 暂时不行)作为一种解决方法,您还可以在
absolute
位置使用额外的包装器将其从流中取出并将其调整为行的高度:( 两种情况都需要最小高度才能在需要时正确显示滚动条)