HTML/CSS 滚动高度问题
HTML/CSS Scrolling Height Issue
考虑一下:
<!DOCTYPE html>
<html>
<style>
.container{position: fixed; width: 100%;height: 100%; left: 0; top: 0; z-index: 10;background-color: grey}
.header{height: 50px; width:100%;padding:10px;background-color: lightgrey;}
.nav{height: 50px; width:100%;padding:10px; background-color: darkgrey}
.content{height: 100%; width:100%; overflow-y: scroll}
.item{padding:20px;}
body {font-size: 32px; font-family: Arial, Helvetica, sans-serif;}
</style>
<body>
<div class='container'>
<div class='header'>this is the header</div>
<div class='nav'>This is the nav</div>
<div class='content'>
<div class='item'>I love chips 1</div>
<div class='item'>I love chips 2</div>
<div class='item'>I love chips 3</div>
<div class='item'>I love chips 4</div>
<div class='item'>I love chips 5</div>
<div class='item'>I love chips 6</div>
<div class='item'>I love chips 7</div>
<div class='item'>I love chips 8</div>
<div class='item'>I love chips 9</div>
<div class='item'>I love chips 10</div>
<div class='item'>I love chips 11</div>
<div class='item'>I love chips 12</div>
<div class='item'>I love chips 13</div>
<div class='item'>I love chips 14</div>
<div class='item'>I love chips 15</div>
</div>
</div>
</body>
</html>
内容 div 的高度为 100%,容器也是如此。但是 'content' div 中的内容不允许我一直滚动到底部。它似乎偏移了 'header' 和 'nav' 高度,但它隐藏在屏幕底部。我找到了一个解决方法,我给 'content' div 一些 'padding-bottom' 来将内容推回去,但是滚动条现在从浏览器底部消失了:(
如何让 'content' div 有 100% 的高度(我不能使用固定高度,因为整个东西需要填充浏览器的宽度和高度)并确保可以看到滚动条和内容?
提前致谢!
所以经过大量测试和环顾四周,我自己找到了答案!任何想解决相同问题的人都可以使用以下方法解决。
使用 SASS 或 CSS 变量设置滚动容器上方所有元素的高度。使用 calc 将这些高度的总和加在一起。然后使用这个总数和计算,从视口高度的 100% 中减去该数量。像下面的东西
--header-hold-height: 64px;
--tab-hold-height: 56px;
--filter-hold-height: 64px;
--total-top-nav-height: calc(var(--header-hold-height) + var(--tab-hold-height) + var(--filter-hold-height));
.scroll-container {
height: calc(100vh - var(--total-top-nav-height));
overflow-x: hidden;
position: relative;
overflow-y: scroll;
}
您可以尝试使用容器高度=100vh,而不是 100%。 enter link description here
考虑一下:
<!DOCTYPE html>
<html>
<style>
.container{position: fixed; width: 100%;height: 100%; left: 0; top: 0; z-index: 10;background-color: grey}
.header{height: 50px; width:100%;padding:10px;background-color: lightgrey;}
.nav{height: 50px; width:100%;padding:10px; background-color: darkgrey}
.content{height: 100%; width:100%; overflow-y: scroll}
.item{padding:20px;}
body {font-size: 32px; font-family: Arial, Helvetica, sans-serif;}
</style>
<body>
<div class='container'>
<div class='header'>this is the header</div>
<div class='nav'>This is the nav</div>
<div class='content'>
<div class='item'>I love chips 1</div>
<div class='item'>I love chips 2</div>
<div class='item'>I love chips 3</div>
<div class='item'>I love chips 4</div>
<div class='item'>I love chips 5</div>
<div class='item'>I love chips 6</div>
<div class='item'>I love chips 7</div>
<div class='item'>I love chips 8</div>
<div class='item'>I love chips 9</div>
<div class='item'>I love chips 10</div>
<div class='item'>I love chips 11</div>
<div class='item'>I love chips 12</div>
<div class='item'>I love chips 13</div>
<div class='item'>I love chips 14</div>
<div class='item'>I love chips 15</div>
</div>
</div>
</body>
</html>
内容 div 的高度为 100%,容器也是如此。但是 'content' div 中的内容不允许我一直滚动到底部。它似乎偏移了 'header' 和 'nav' 高度,但它隐藏在屏幕底部。我找到了一个解决方法,我给 'content' div 一些 'padding-bottom' 来将内容推回去,但是滚动条现在从浏览器底部消失了:(
如何让 'content' div 有 100% 的高度(我不能使用固定高度,因为整个东西需要填充浏览器的宽度和高度)并确保可以看到滚动条和内容?
提前致谢!
所以经过大量测试和环顾四周,我自己找到了答案!任何想解决相同问题的人都可以使用以下方法解决。
使用 SASS 或 CSS 变量设置滚动容器上方所有元素的高度。使用 calc 将这些高度的总和加在一起。然后使用这个总数和计算,从视口高度的 100% 中减去该数量。像下面的东西
--header-hold-height: 64px;
--tab-hold-height: 56px;
--filter-hold-height: 64px;
--total-top-nav-height: calc(var(--header-hold-height) + var(--tab-hold-height) + var(--filter-hold-height));
.scroll-container {
height: calc(100vh - var(--total-top-nav-height));
overflow-x: hidden;
position: relative;
overflow-y: scroll;
}
您可以尝试使用容器高度=100vh,而不是 100%。 enter link description here