【发布时间】:2016-10-22 01:14:10
【问题描述】:
我有一个outerWrapper、innerWrapper 和孩子。 outerWrapper 的高度为300px,为display: flex。 innerWrapper 也是display: flex,是flex-direction: column。
当我将带有除stretch 之外的任何值的align-items 添加到outerWrapper 时,子项会显示一长列。他们忽略了300px 高度。这是其显示方式的图像:
它应该像这样显示:
只需align-items: flex-end。
为什么会发生这种情况,我如何使用align-items: flex-end 并让孩子们像第二张图片一样显示?
#outerWrapper {
height: 300px;
background-color: lightgreen;
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: flex-end;
}
ul {
padding: 0;
margin: 0;
display: flex;
align-items: center;
flex-wrap: wrap;
flex-direction: column;
}
li {
list-style-type: none;
width: 100px;
height: 100px;
background-color: lightblue;
border: 1px solid;
}
<div id="outerWrapper">
<ul id="innerWrapper">
<li class="child">I'm #01</li>
<li class="child">I'm #02</li>
<li class="child">I'm #03</li>
<li class="child">I'm #04</li>
<li class="child">I'm #05</li>
</ul>
</div>
更新
这个问题的答案是将210px 的高度添加到innerWrapper。但我需要使用 JavaScript 来获得这个数字,因为盒子的数量是动态的。
我尝试了以下代码:
innerWrapper.style.height = (lastChild.offsetTop - innerWrapper.offsetTop + lastChild.offsetHeight) + 'px';
但它没有解决它。它只是将高度设为:5 * 102(5 = 框数;102 = 高度 + 边框)。
如何使用 JavaScript 将正确的高度设置为 innerWrapper? (我不能设置 height: 100% 因为我无法设置 align-items: flex-end 或 center。)
var innerWrapper = document.getElementById('innerWrapper');
var lastChild = innerWrapper.lastElementChild;
newHight = lastChild.offsetTop - innerWrapper.offsetTop + lastChild.offsetHeight;
innerWrapper.style.height = newHight + 'px';
#outerWrapper {
height: 300px;
background-color: lightgreen;
display: flex;
flex-wrap: wrap;
justify-content: center;
align-items: flex-end;
}
ul {
padding: 0;
margin: 0;
display: flex;
align-items: center;
flex-wrap: wrap;
flex-direction: column;
/*height: 206px;*/
}
li {
list-style-type: none;
width: 100px;
height: 100px;
background-color: lightblue;
border: 1px solid;
}
<div id="outerWrapper">
<ul id="innerWrapper">
<li class="child">I'm #01</li>
<li class="child">I'm #02</li>
<li class="child">I'm #03</li>
<li class="child">I'm #04</li>
<li class="child">I'm #05</li>
</ul>
</div>
【问题讨论】:
标签: javascript html css flexbox