将CSS flex元素的高度设置为相同的量?

时间:2014-03-26 21:44:27

标签: html css css3 center flexbox

我有两个div,彼此相邻,我使用flex和justify-content / align-items垂直和水平居中。

实施例 HTML:

<div class="inner">
    <div class="section green">
        <img src="http://i.imgur.com/hEOMgVf.png">
    </div>
    <div class="section red">
         <img src="http://i.imgur.com/nEybO1g.png">
    </div>
</div>

CSS:

.inner {
    float: left;
    width: 500px;
    display: flex;
    justify-content: center;
    align-items: center;
    background-color: #343434;
    text-align: center;
}
.section {
    float: left;
    flex: 1;
}

.green { background-color: #7dc242; }
.red { background-color: #ed1c24; }

我的问题是我需要将两个'section'div的高度设置为相同,并将它们垂直和水平居中。您可以在下面的JSFiddle中看到绿色背景与红色的高度不同。如何让两个div成为容器div的整个高度?

这是我所拥有的简化JSFiddle: http://jsfiddle.net/beK28/1/

3 个答案:

答案 0 :(得分:6)

为了达到你想要的效果,你不应该尝试在容器元素中进行任何对齐,而应该将.section设置为display:flex。然后,您可以在子元素中正确地对齐和居中图像。

.section {
    align-items: center;
    display: flex;
    flex: 1;
    justify-content:center;
    text-align: center;
}

http://jsfiddle.net/beK28/8/

您也不需要使用浮动,这是使用柔性容器的重点。

答案 1 :(得分:5)

您的元素不再垂直拉伸,因为您已设置align-items: center。如果您希望它们的高度相等,则必须是stretch的默认值。如果您的元素是多行的,那么您可以使用align-content: center代替,这将为您提供所需的效果。对于单线弹性项目,您似乎无法通过Flexbox单独使用垂直居中+相同的高度。

http://jsfiddle.net/beK28/6/

.inner {
    float: left;
    width: 400px;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-content: center;
    background-color: #343434;
    text-align: center;
    height: 500px;
}

但请注意,您可以拥有具有table-cell显示属性的弹性项目。

http://jsfiddle.net/beK28/7/

.inner {
    float: left;
    width: 400px;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    background-color: #343434;
    text-align: center;
    height: 500px;
}
.section {
    display: table-cell;
    flex: 1;
}

答案 2 :(得分:0)

之前我遇到拉伸/居中问题,最后格式化为display: table-cell

.inner {
    float: left;
    width: 500px;
    display: table;
    background-color: #343434;
    text-align: center;
}
.section {
    display: table-cell;
    width: 50%;
    vertical-align: middle;
}
相关问题