在 @mtyaka 提供的 flexbox 方法之上,如果你的可滚动区域深入嵌套在 DOM 中,需要对所有父元素使用 overflow: auto/hidden 直到我们得到一个固定高度。
jsfiddle
https://jsfiddle.net/rohilaharsh/cuazdnkh/1/
HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Dynamic Container</title>
</head>
<body>
<div class="one">
One
<div class="two">
Two
<div class="three">
Three
<div class="table">
Table
<div class="header">Table Header</div>
<div class="body">Lorem ipsum dolor sit amet consectetur adipisicing elit. Iure maiores corporis quisquam enim at nam earum non atque dolorum nulla quidem perferendis, porro eveniet! Quisquam, fugit ex aspernatur, aliquid necessitatibus amet aperiam pariatur facilis suscipit ea dolorum qui ratione assumenda eum minima. At a ullam magnam eveniet, hic sit quis dicta perferendis excepturi nemo voluptate ipsum doloremque expedita illo dolor voluptates culpa consequuntur quaerat porro reprehenderit ab alias! Maxime reprehenderit nihil doloribus exercitationem, cupiditate quasi dolorum voluptas repellendus vel fugit incidunt praesentium molestias modi numquam! Quo porro laudantium aperiam suscipit, molestiae quibusdam veniam cum nam fuga facere fugit quisquam distinctio!</div>
</div>
</div>
</div>
</div>
</body>
</html>
CSS(层叠样式表):
html {
height: 100%;
}
html, body, .one,.two,.three,.table {
display: flex;
flex-direction: column;
overflow: hidden;
flex: 1;
margin: 0;
}
.body {
width: 200px;
overflow: auto;
}
max-height
而不是固定的height
。 - mtyaka#content
元素没有固定的高度。在#body
元素上设置的固定高度仅是为了演示当高度受限时,#content
div会自动收缩,但您也可以将#body
的固定高度删除,或将其替换为类似于max-height: 100%
的内容。 - mtyaka