我有一个滚动容器,通常是整个屏幕的大小。我在其中放置了动态内容。所以我不知道它的高度或将插入多少个元素。
现在我想这样布局:
我创建了一个示例,尝试使用 Flexbox 解决这个问题。当内容高度小于容器高度时,它会按预期工作。但是当内容超过容器高度时,由于justify-content,内容的一些元素被截断:
您可以在图像上看到滚动容器的scrollTop 一直位于顶部,但元素1 和2 不可见。
我想知道是否有仅 CSS 的解决方案。我可以自己做一个 JS 解决方案,但这不是我想要的。如果不可能,那也没关系。
.container {
display: inline-block;
width: 300px;
height: 300px;
border: 2px solid red;
overflow-y: auto;
margin: 1rem 0;
display: flex;
flex-direction: column;
justify-content: center;
}
.block {
width: 80%;
height: 3rem;
margin: 1rem auto;
background: blue;
flex-shrink: 0;
color: #fff;
text-align: center;
}Run Code Online (Sandbox Code Playgroud)
<div class="container">
<div class="block">1</div>
</div>
<div class="container">
<div class="block">1</div>
<div class="block">2</div>
<div class="block">3</div>
</div>
<div class="container">
<div class="block">1</div>
<div class="block">2</div>
<div class="block">3</div>
<div class="block">4</div>
<div class="block">5</div>
<div class="block">6</div>
<div class="block">7</div>
<div class="block">8</div>
</div>Run Code Online (Sandbox Code Playgroud)
尝试将溢出应用到包含 div 的内部,如下所示:
.container {
display: inline-block;
width: 300px;
height: 300px;
border: 2px solid red;
margin: 1rem 0;
display: flex;
flex-direction: column;
justify-content: center;
}
.inner {
overflow-y: auto;
}
.block {
width: 80%;
height: 3rem;
margin: 1rem auto;
background: blue;
flex-shrink: 0;
color: #fff;
text-align: center;
}Run Code Online (Sandbox Code Playgroud)
<div class="container">
<div class="inner">
<div class="block">1</div>
</div>
</div>
<div class="container">
<div class="inner">
<div class="block">1</div>
<div class="block">2</div>
<div class="block">3</div>
</div>
</div>
<div class="container">
<div class="inner">
<div class="block">1</div>
<div class="block">2</div>
<div class="block">3</div>
<div class="block">4</div>
<div class="block">5</div>
<div class="block">6</div>
<div class="block">7</div>
<div class="block">8</div>
</div>
</div>Run Code Online (Sandbox Code Playgroud)