【发布时间】:2014-08-23 15:45:18
【问题描述】:
我的布局有一个容器 flex-container 和一个孩子。
HTML:
<div class="flex-container">
<div>text</div>
</div>
容器和孩子的高度未知。目标是:
- 如果子元素的高度低于容器,它会在水平和垂直方向居中显示。
- 如果孩子的高度大于容器,它会调整到顶部和底部,我们可以滚动。
方案:
使用 flexbox 使元素居中的最快方法如下:
.flex-container
{
display: flex;
align-items: center; /* vertical */
justify-content: center; /* horizontal */
width: 100%;
height: 300px; /* for example purposes */
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
方案:
有没有办法解决这个问题?
【问题讨论】:
标签: css flexbox height overflow