我看到还有其他题目类似的问题,但我没有从这些问题中找到令人满意的答案。
问题是.content
需要在.container
内部100%的可用视图空间,但是当.content
设置为100%高度时,占用的空间相当于.container
div的100%,导致其底部大部分被隐藏,即使滚动到底部。
原因是因为.header
向下推.container
div内部的.content
div。我知道CSS calc()
函数,但在这种特殊情况下,我不知道.header
div的确切高度是多少,所以需要另一个选项。
下面是代码:
html, body {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
.container {
height: 100%;
width: 100%;
}
.header {
padding: 10px;
background: dodgerblue;
width: 100%;
color: #fff;
}
.content {
width: 100%;
height: 100%;
overflow-y: scroll;
background: ivory;
}
.contentData {
padding: 20px;
margin: 20px;
border: 1px solid silver;
}
<div class="container">
<div class="header">
Header Title
</div>
<div class="content">
<div class="contentData">
Donec mollis hendrerit risus.
Etiam imperdiet imperdiet orci.
Maecenas egestas arcu quis ligula mattis placerat.
Vestibulum purus quam, scelerisque ut, mollis sed, nonummy id, metus.
Donec mollis hendrerit risus.
</div>
<div class="contentData">
Donec mollis hendrerit risus.
Etiam imperdiet imperdiet orci.
Maecenas egestas arcu quis ligula mattis placerat.
Vestibulum purus quam, scelerisque ut, mollis sed, nonummy id, metus.
Donec mollis hendrerit risus.
</div>
<div class="contentData">
Donec mollis hendrerit risus.
Etiam imperdiet imperdiet orci.
Maecenas egestas arcu quis ligula mattis placerat.
Vestibulum purus quam, scelerisque ut, mollis sed, nonummy id, metus.
Donec mollis hendrerit risus.
</div>
<div class="contentData">
Donec mollis hendrerit risus.
Etiam imperdiet imperdiet orci.
Maecenas egestas arcu quis ligula mattis placerat.
Vestibulum purus quam, scelerisque ut, mollis sed, nonummy id, metus.
Donec mollis hendrerit risus.
</div>
<div class="contentData">
Donec mollis hendrerit risus.
Etiam imperdiet imperdiet orci.
Maecenas egestas arcu quis ligula mattis placerat.
Vestibulum purus quam, scelerisque ut, mollis sed, nonummy id, metus.
Donec mollis hendrerit risus.
</div>
<div class="contentData">
Donec mollis hendrerit risus.
Etiam imperdiet imperdiet orci.
Maecenas egestas arcu quis ligula mattis placerat.
Vestibulum purus quam, scelerisque ut, mollis sed, nonummy id, metus.
Donec mollis hendrerit risus.
</div>
<div class="contentData">
Donec mollis hendrerit risus.
Etiam imperdiet imperdiet orci.
Maecenas egestas arcu quis ligula mattis placerat.
Vestibulum purus quam, scelerisque ut, mollis sed, nonummy id, metus.
Donec mollis hendrerit risus.
</div>
<div class="contentData">
Donec mollis hendrerit risus.
Etiam imperdiet imperdiet orci.
Maecenas egestas arcu quis ligula mattis placerat.
Vestibulum purus quam, scelerisque ut, mollis sed, nonummy id, metus.
Donec mollis hendrerit risus.
</div>
<div class="contentData">
Donec mollis hendrerit risus.
Etiam imperdiet imperdiet orci.
Maecenas egestas arcu quis ligula mattis placerat.
Vestibulum purus quam, scelerisque ut, mollis sed, nonummy id, metus.
Donec mollis hendrerit risus.
</div>
<div class="contentData">
Donec mollis hendrerit risus.
Etiam imperdiet imperdiet orci.
Maecenas egestas arcu quis ligula mattis placerat.
Vestibulum purus quam, scelerisque ut, mollis sed, nonummy id, metus.
Donec mollis hendrerit risus.
</div>
<div class="contentData">
Donec mollis hendrerit risus.
Etiam imperdiet imperdiet orci.
Maecenas egestas arcu quis ligula mattis placerat.
Vestibulum purus quam, scelerisque ut, mollis sed, nonummy id, metus.
Donec mollis hendrerit risus.
</div>
<div class="contentData">
Donec mollis hendrerit risus.
Etiam imperdiet imperdiet orci.
Maecenas egestas arcu quis ligula mattis placerat.
Vestibulum purus quam, scelerisque ut, mollis sed, nonummy id, metus.
Donec mollis hendrerit risus.
</div>
<div class="contentData">
Donec mollis hendrerit risus.
Etiam imperdiet imperdiet orci.
Maecenas egestas arcu quis ligula mattis placerat.
Vestibulum purus quam, scelerisque ut, mollis sed, nonummy id, metus.
Donec mollis hendrerit risus.
</div>
</div>
</div>
4条答案
按热度按时间x33g5p2x1#
从
html, body{}
中卸下width: 100%
和height: 100%
。我假设它的行为是这样的,因为你也设置了overflow-y: scroll
,所以计算有点不稳定。irlmq6kh2#
您可能会发现,为页眉部分定义一个高度百分比,然后定义一个将使页面高度达到97%的量是很有用的。任何超过97%的内容都将迫使Edge和Chrome自动尝试通过为页面添加滚动条来进行补偿。
根据页面的设计,您可能还需要添加页脚。如果是,则从内容部分中减去高度。请记住,如果您不希望浏览器为页面实现第二个滚动条,则需要将页面高度限制为97%。
不管你有两个部分还是三个部分,都要摆弄它,直到它在视觉上看起来平衡而有吸引力。这将给予你你正在寻找的专业外观。
t5fffqht3#
您可以使标题具有
position: absolute;
,这样它就不会向下推内容。这样你的div就可以占据整个页面。eiee3dmh4#
所以我想出来了,以防其他人也有这个问题。通过使用
flex: 1;
属性,我们可以让.content
div只填充剩余的垂直空间。这确保了任何标题或顶部元素不会将.content
数据“推”到滚动范围之外。