我的布局有一个容器flex-container
和一个孩子。
HTML:
<div class="flex-container">
<div>text</div>
</div>
容器和孩子的身高未知。目标是:
- 如果孩子的身高低于容器,则其水平和垂直居中。
- 如果孩子的身高比容器大,则它会调整到顶部和底部,我们可以滚动。
方案:
使用flexbox将元素居中的最快方法是:
.flex-container
{
display: flex;
align-items: center;
justify-content: center;
width: 100%;
height: 300px;
overflow-y: scroll;
background: #2a4;
}
.flex-container > div
{
background: #E77E23;
width: 400px;
}
<div class="flex-container">
<div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iure fugit voluptas eius nemo similique aperiam quis ut! Ipsa aspernatur rem nesciunt est sed hic culpa nisi delectus error explicabo reprehenderit. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iure fugit voluptas eius nemo similique aperiam quis ut! Ipsa aspernatur rem nesciunt est sed hic culpa nisi delectus error explicabo reprehenderit. </div>
</div>
Codepen:http://www.codepen.io/ces/pen/slicw
但是,如果容器的子级具有更高的高度,则该子级将无法正确显示。子项显示为割伤(仅顶部)。
html,body
{
height: 100%;
width: 100%;
padding: 0;
margin: 0;
}
.flex-container
{
display: flex;
align-items: center; // vertical
justify-content: center; // horizontal
width: 100%;
height: 100px;
overflow-y: scroll;
background: #2a4;
}
.flex-container > div
{
background: #E77E23;
width: 400px;
}
<div class="flex-container">
<div>Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iure fugit voluptas eius nemo similique aperiam quis ut! Ipsa aspernatur rem nesciunt est sed hic culpa nisi delectus error explicabo reprehenderit. Lorem ipsum dolor sit amet, consectetur adipisicing elit. Iure fugit voluptas eius nemo similique aperiam quis ut! Ipsa aspernatur rem nesciunt est sed hic culpa nisi delectus error explicabo reprehenderit. </div>
</div>
Codepen:http://www.codepen.io/ces/pen/sGtfK
方案:
有解决此问题的方法吗?