以下是解决方案。
CSS:
html {
height: 100vh;
width: 100vw;
}
body {
height: 100%;
width: 100%;
position: relative;
overflow: hidden;
}
.playlist-page {
display: flex;
flex-direction: column;
height: 100%;
width: 100%;
position: absolute;
}
.playlist-header {
flex-shrink: 0;
}
.playlist-fill {
flex-shrink: 1;
min-height: 0;
max-height: 100%;
}
.playlist-container {
height: 100%;
}
.playlist-row {
height: 100%;
}
.playlist-pane {
display: flex;
flex-direction: column;
height: 100%;
}
.playlist-pane-header {
flex-shrink: 0;
}
.playlist-list {
flex-shrink: 1;
min-height: 0;
max-height: 100%;
overflow: auto;
border-style: solid;
border-color: blue;
}备注:
100vh,100vw表示视区高度和宽度的100%。
高度: 100%;在子元素中总是相对于直接父元素,如果直接父元素没有指定的高度,100%将不做任何事情。这就是为什么我必须在.playlist-container和.playlist-row中指定height: 100%;的原因。
body的位置是相对的;而.playlist-page的位置是绝对的;因为在React中,.playlist-page不会是body的直接子对象,我们不能为所有中间的父对象设置height: 100%;。
flexshrink: 1;需要min-height: 0;max-height: 100%;强制元素缩小到小于其内容。
HTML:
<html>
<head>
<link
rel="stylesheet"
href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"
/>
<link rel="stylesheet" href="shrinklist.css" />
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
<title>Testi ng!</title>
</head>
<body>
<div class="playlist-page">
<div class="playlist-header">
<button class="btn" color="primary">Import</button>
</div>
<p />
<div class="playlist-fill">
<div class="container-fluid playlist-container">
<div class="row playlist-row">
<div class="col-6 col-sm-6 col-md-6 col-lg-6 playlist-pane">
<div class="playlist-pane-header">
<button class="btn">Playlist:</button>
<p />
</div>
<div class="list-group playlist-list">
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
</div>
</div>
<div class="col-6 col-sm-6 col-md-6 col-lg-6 playlist-pane">
<div class="playlist-pane-header">
<button class="btn">Playlist:</button>
<p />
</div>
<div class="list-group playlist-list">
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
<div class="list-group-item playlist-item">
<p>image   title</p>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>可执行文件:
https://codesandbox.io/s/long-leftpad-ltx97
在新窗口中打开预览并垂直调整其大小。当列表框的内容比页面高时,将出现滚动条。
发布于 2020-09-03 06:13:13
这就是解决方案,我必须输入至少30个字符。
https://stackoverflow.com/questions/63661140
复制相似问题