[英]Vertically center element with dynamic height in scroll container
我有一个滚动容器,它通常是整个屏幕的大小。 在其中放置动态内容。 所以我不知道它具有哪个高度或将插入多少个元素。
现在我要这样布局:
我创建了一个示例,尝试使用flexbox解决此问题。 当内容物高度小于容器高度时,它会按预期工作。 但是当内容超出容器高度时,由于justify-content
, 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; }
<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>
尝试将溢出应用于内部包含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; }
<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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.