flex div中的中心div,同时保持纵横比

时间:2015-02-23 08:45:13

标签: html css flexbox

我正试图保留这个盒子' c'在' a'中间并且填充30px 10px 10px 10px,这样它在顶部有更多的空间,从另一侧有相同的空间。但我想要盒子' c'不仅要在这些界限之间,而且要在纵向和横向中心位于这些范围之内。当你制作盒子时,' b'宽度大于缩小的范围' a'和' c'保持c的长宽比,制作''宽度更小,停止' c'从超出其极限的增长,并防止它溢出。还' b'宽度/高度只会增长到200px。

这是模板和我在css中的尝试:

<div class='z'>
<div class='a'>
    <div class='c'></div>
</div>
<div class='b'>
</div>

.z {
    display: flex;
    width: 300px;
    height: 200px;
}

.a {
    background-color: blue;
    padding: 30px 10px 10px 10px;
    flex: 1;
}

.b {
    background-color: yellow;
    width: 50%;
    max-width: 200px;
    transition: all 1s;
}

.c {
    background-color: red;
    margin: auto;
    width: 100%;
    padding-bottom: 100%;
}

这是我在jsfiddle的尝试:http://jsfiddle.net/c8w79mLx/

2 个答案:

答案 0 :(得分:0)

你想要的是什么? FIDDLE

我没有使用填充到“a”框,而是使用绝对定位到c框:

.c {
    background-color: red;
    margin: auto;
    padding-bottom: 100%;
    position:absolute;
    bottom:10px;top:30px;right:10px;left:10px;
}

答案 1 :(得分:0)

将类的css更改为:

.a {
background-color: blue;
flex: 1;
padding: 50px 10px;
align-items: center;

}

并且c类要:

.c {
background-color: red;
width: 100%;
height: 100%;

}

这里的小提琴更新 - &gt; http://jsfiddle.net/c8w79mLx/6/