如何设计 HTML/CSS 结构,将固定大小的容器水平分成三部分。第一部分的高度应与其内容需求一样高。第二部分和第三部分将共享剩余的空间五五十——无论它们的内容如何。如果其内容的大小超过此限制,则该部分应该是可滚动的。
它的 HTML 部分很简单:Adiv
容器有三个div
就像孩子一样。
我尝试用 flexbox 来解决这个问题 - 但是可能有更好的选择:
CSS部分:
#container {
position: absolute;
width: 100%; height: 100%;
display: flex;
flex-direction: column;
}
#item1 { flex: 0 0 auto; }
#item2 { flex: 1 1 auto; }
#item3 { flex: 1 1 auto; }
不幸的是,这仅在第 2 项或第 3 项的内容不太大时才有效。
See 这把小提琴 https://jsfiddle.net/2vjktkfa/1/有关问题的更详细的实现。
body {
margin: 0;
overflow: hidden;
}
* {
box-sizing: border-box;
}
#container {
position: absolute;
width: 100%;
height: 100%;
border: 2px solid green;
display: flex;
flex-direction: column;
}
#item1 {
flex: 0 0 auto;
background-color: Bisque;
}
#item2 {
flex: 1 1 auto;
background-color: DarkOrange;
}
#item3 {
flex: 1 1 auto;
background-color: MediumAquaMarine;
}
<div id="container">
<div id="item1">I'll be as tall as my content takes.</div>
<div id="item2">From the rest, I'll take exactly 50%. No matter how short or long my content is. If needed there should be scrollbars.</div>
<div id="item3">I'll take the other 50% of the rest!
<br>right?
<br>right?
<br>right?
<br>right?
<br>right?
<br>right?
<br>right?
<br>right?
<br>right?
<br>right?
<br>right?
<br>right?
<br>right?
<br>right?
<br>right?
<br>right?
<br>right?
<br>right?
<br>right?
<br>right?
<br>right?
<br>right?
<br>right?
</div>
</div>
是的,你可以使用弹性。这是对您的代码的一点改进。 Item1 不需要有 Flex 规则,而 item2 和 item3 将有flex: 1
.
我还添加了overflow-y: auto;
规则使其可滚动。
Example https://jsfiddle.net/2vjktkfa/2/
#item1 {background-color: Bisque ; }
#item2 { flex: 1; background-color: DarkOrange ; overflow-y: auto;}
#item3 { flex: 1; background-color: MediumAquaMarine ; overflow-y: auto;}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)