示例HTML和CSS:
.root {
background-color: green;
}
.outer {
display: grid;
grid-template-rows: 100vh;
grid-template-columns: 100px;
padding: 5rem;
overflow-y: auto;
}
.nav {
background-color: red;
height: 150vh;
}
* {
box-sizing: border-box;
}
<div class="root">
<div class="outer">
<div class="nav"></div>
</div>
</div>
小提琴示例:https://jsfiddle.net/dr18cbet/
在这个精心设计的示例中,滚动到网格容器的底部不包括网格容器的底部填充.
当然还有更好的方法来组织这些代码,例如,将填充和溢出设置移动到网格项(在本例中为nav
).我还注意到,如果我将grid-template-rows
设置为默认值auto
,填充也会按预期显示.但是,在网格容器上的这种溢出+填充设置的组合以及获得外部高度(在示例中为100vh
)的网格项会导致不应用容器的底部填充.为什么会这样?我翻遍了css的说明书,但找不到解释.