html - Flexbox 100% 高度,里面有可滚动的 div
问题描述
我想要一个弹性框来调整整个浏览器窗口/设备的大小。在里面我想要带有可滚动div的内容。
我不知道为什么内容区域会飞过页脚 div,以及为什么两个 Content-Div 不能以正确的方式滚动。
我为所有 div 着色以获得更好的视图。我也尝试了 100vh 的高度,但没有成功。我只想要包装器 div 的固定(100%)高度和宽度。
html, body{
height: 100%;
margin:0;
font-size: 20px;
}
.wrapper{
height: 100%;
background-color:aqua;
}
.flex-container {
display: flex;
justify-content: space-between;
height:50px;
}
.header01 {
flex:0 0 49px; /*grow shrink basis*/
background-color: white;
}
.header02 {
flex:0 1 214px;
background-color: red;
}
.header03 {
flex:1;
background-color: green;
}
.header04 {
flex:0 1 245px;
background-color: blue;
}
.header05 {
flex:0 1 147px;
background-color: yellow;
}
.navcon {
display: flex;
justify-content: row;
height:100%;
}
.nav {
flex:0 0 250px; /*grow shrink basis*/
background-color: green;
}
.con {
flex:1; /*grow shrink basis*/
background-color:brown;
}
.maincon {
display: flex;
flex-direction: column;
}
.header {
flex: 0 0 100%;
height: 45px;
background-color:white;
}
.con {
background-color:blueviolet;
flex:1;
}
.innercon{
display:flex;
flex-direction: row;
}
.nav_ext{
flex:0 0 50px;
background-color:bisque;
}
.content1{
flex:0 0 247px;
background-color:burlywood;
overflow-x: hidden;
overflow-y: scroll;
}
.content2{
flex:0 1 247px;
background-color:chocolate;
overflow-x: hidden;
overflow-y: scroll;
}
.content3{
flex:1;
background-color:crimson;
overflow-x: hidden;
overflow-y: scroll;
}
.content4{
flex:0 0 50px;
background-color:darkgoldenrod;
}
.footer {
display:flex;
flex-direction: row;
background-color:darkred;
}
<div class="wrapper">
<div class="flex-container">
<div class="header01">H1</div>
<div class="header02">H2</div>
<div class="header03">H3</div>
<div class="header04">H4</div>
<div class="header05">H5</div>
</div>
<div class="navcon">
<div class="nav">Nav</div>
<div class="con">
<div class="maincon">
<div class="header">Header</div>
<div class="con">
<div class="innercon">
<div class="nav_ext">NavExt</div>
<div class="content1">C1</div>
<div class="content2">C2<br/><br/>test<br/>1231123123132<br/>test<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>test2<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>test3</div>
<div class="content3">C3</div>
<div class="content4">C4</div>
</div>
</div>
</div>
</div>
</div>
<div class="footer">
Footer
</div>
</div>
编辑:在这里你可以看到一个小的视觉演示我的意思是: https ://imgur.com/a/D1vijSS 浏览器窗口充满了它,并且可以在div 内滚动,我已经“绘制”了一些滚动条形象化。
解决方案
删除 100% 的高度。然后给包装器 css 属性:position: absolute;
并将其与top: 0; bottom: 0; left: 0; right: 0;
div 将整个屏幕高度和宽度相结合。要在溢出时使内容可滚动,请添加:overflow-y: auto;
html, body{
margin:0;
font-size: 20px;
}
.wrapper{
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background-color:aqua;
overflow-y: auto;
}
.flex-container {
display: flex;
justify-content: space-between;
height:50px;
}
.header01 {
flex:0 0 49px; /*grow shrink basis*/
background-color: white;
}
.header02 {
flex:0 1 214px;
background-color: red;
}
.header03 {
flex:1;
background-color: green;
}
.header04 {
flex:0 1 245px;
background-color: blue;
}
.header05 {
flex:0 1 147px;
background-color: yellow;
}
<div class="wrapper">
<div class="flex-container">
<div class="header01">H1</div>
<div class="header02">H2</div>
<div class="header03">H3</div>
<div class="header04">H4</div>
<div class="header05">H5</div>
</div>
<div class="navcon">
<div class="nav">Nav</div>
<div class="con">
<div class="maincon">
<div class="header">Header</div>
<div class="con">
<div class="innercon">
<div class="nav_ext">NavExt</div>
<div class="content1">C1</div>
<div class="content2">C2<br/><br/>test<br/>1231123123132<br/>test<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>test2<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>test3</div>
<div class="content3">C3</div>
<div class="content4">C4</div>
</div>
</div>
</div>
</div>
</div>
<div class="footer">
Footer
</div>
</div>
推荐阅读
- ios - 如何在 Objective-C 中测试类类型?
- r - 如何在update.formula中冻结交互项的顺序
- iis - 如何在 IIS 中配置进程启动超时?
- sql - 也许很简单 - 用另一个表的真实姓名更改 ID
- python - Tensorflow 似乎可以安装,但实际上并不能正常工作
- c - Linux 内核中使用类型限定符 inline 的时机
- node.js - Node.js/JavaScript 等待所需模块完成运行
- python-3.x - 当无法调整大小时,tkinter 窗口会在缩放状态下更改大小
- css - 由于自定义 CSS(语义 UI React)而导致的模糊
- alpine - 在高山找不到mailx