我在flexbox容器中有三个div。
我希望三个divs
显示如下:
+-----------------------------------------------+
| +-----------------+-----------------+ |
| | | | |
| | | | |
| +-----------------+-----------------+ |
| |
| +-----------------------------------+ |
| | | |
| | | |
| +-----------------------------------+ |
| |
+-----------------------------------------------+
因此容器必须垂直适应其内容,但仅限于其内容,而不是更多。
我在divs
之间获得了很大的空白,但是容器正在获得其父级height
的100%。
我试过没有将height
属性放到容器中并设置height: auto;
但是它们都没有工作。
这是我的代码:
*{
box-sizing: border-box;
}
html,body{
width: 100%;
margin: 0;
}
#container{
display: flex;
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
margin: auto;
justify-content: center;
align-items: center;
flex-wrap: wrap;
max-width: 450px;
border: 1px solid;
}
#div1{
width: 50%;
height: 155px;
background-color: blue;
}
#div2{
width: 50%;
height: 155px;
background-color: red;
}
#div3{
width: 70%;
height: 155px;
background-color: green;
}

<div id="container">
<div id="div1"></div>
<div id="div2"></div>
<div id="div3"></div>
</div>
&#13;
注意:将其放大以查看div之间的空白区域。
如何让容器收缩包装内容而不是其父级的100%高度?
提前致谢!
答案 0 :(得分:1)
创建弹性容器时,初始设置为align-content: stretch
。
这会导致多行flex项目在容器的整个长度上分布。
在align-content: flex-start
上使用#container
覆盖此设置。
要使#container
垂直收缩包装其内容,您需要删除此规则:
#container { bottom: 0; }
因为#container
是绝对定位的,并且没有定位的父元素,这将为#container
建立包含块,所以默认包含块将成为包含 的初始值阻止 或视口。
这就是容器从上到下伸展的原因,如您应用的黑色边框所示。移除bottom: 0
后,容器的行为将更像height: auto
。
在此处详细了解CSS定位:https://developer.mozilla.org/en-US/docs/Web/CSS/position