任何人都可以解释这种行为吗?我已经创建了两个水平堆叠的柔性盒,我希望这是一个全屏web应用程序的简单轮廓。但是,在我的顶部flexbox中添加内容似乎会扩展它,最终将底部的一个推离屏幕。
var buttonEl = document.getElementById('addButton');
buttonEl.addEventListener('click', function() {
var newEl,
ulEl;
// Create a list item element
newEl = document.createElement('li');
newEl.innerHTML = "Test List Item";
// Add the list item element to the list
ulEl = document.getElementById('list');
ulEl.appendChild(newEl);
}, false);
* {
padding: 0px;
margin: 0px;
overflow: hidden;
}
html {
width: 100%;
height: 100%;
}
body {
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
background: lightblue;
}
#top {
flex-grow: 1;
overflow-y: auto;
}
#bottom {
flex-basis: 1em;
}
li {
width: 100%;
height: 2em;
line-height: 2em;
background: white;
}
<div id="top">
<button id="addButton">add list item</button>
<ul id="list">
</ul>
</div>
<div id="bottom">
Bottom
</div>
答案 0 :(得分:6)
以下是一种方法:http://jsfiddle.net/1ejgybmv/。
* {
padding: 0px;
margin: 0px;
}
html, body {
height: 100%;
}
body {
display: flex;
flex-direction: column;
background: lightblue;
}
#top {
flex: 1 1 auto;
overflow-y: auto;
}
#bottom {
flex: 0 0 1em;
}
li {
height: 2em;
line-height: 2em;
background: white;
}
答案 1 :(得分:-1)
overflow:hidden
的所有元素
* {
padding: 0px;
margin: 0px;
overflow: hidden;
}
然后用{:1}覆盖#top
div的属性:
#top {
flex-grow: 1;
overflow-y: auto;
}
有效地杀死&#34;您最初定义的属性。只需摆脱overflow-y
或定义overflow-y:hidden
即可。请记住,CSS中的定义顺序非常重要,因此您在一个定义之后添加的所有内容都将被新定义覆盖