gpt4 book ai didi

html - 在百分比高度容器中使用溢出

转载 作者:行者123 更新时间:2023-11-28 11:25:38 27 4
gpt4 key购买 nike

我想创建一个占据全屏高度(没有滚动条)但内部有一个可滚动容器的页面。我曾尝试使用百分比高度,但每次百分比在彼此内部使用时都不起作用。

这是我正在尝试做的一个例子。我尝试了很多其他版本,但都没有用。

HTML

<body>
<div id="pageheader">
<h1>Header</h1>
</div>
<div id="container">
<div id="header">
<h2>Section header</h2>
<p>Header text</p>
</div>
<div id="overflower">
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>
</div>
</div>
</body>

CSS

body {
height: 100%;
background: red;
}

#container {
height: 100%;
background: green;
}
#overflower {
overflow: auto;
height: 100%;
background: blue;
}

http://jsfiddle.net/RDSx9/

overflower div 应该是可滚动的,而页面的其余部分保持静态,占据整个屏幕的高度。

最佳答案

嵌套百分比高度一直是 CSS 2 的一个问题。值得庆幸的是,CSS 3 带来了一个有值(value)的工具,可以用来一劳永逸地解决这个问题(以及类似的问题):flexboxes。

这个想法很简单:flexboxes 允许开发人员定义一个部分如何根据可用空间增长或收缩,在这种情况下可以用来定义 overflower div 应该在其父级内部获得尽可能多的空间,它被设置为在其父级内部占用尽可能多的空间......一直到 body (它被设置为占用整个屏幕高度)。

HTML

<body>
<div id="pagecontainer">
<div id="pageheader">
<h1>Header</h1>
</div>
<div id="container">
<div id="header">
<h2>Section header</h2>
<p>Header text</p>
</div>
<div id="overflower">
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo.</p>
</div>
</div>
</div>
</body>

CSS

body {
height: 100%;
margin: 0;
padding: 0;
}

#pagecontainer {
display: flex;
flex-direction: column;
background: red;
height: 100%;
}
#pageheader {
flex: none;
}
#container {
display: flex;
flex-direction: column;
flex: auto;
background: green;
}
#header {
flex: none;
}
#overflower {
overflow: auto;
flex: auto;
background: blue;
}

不幸的是,jsfiddle 在处理 body 时做了一些奇怪的事情,所以测试这个的唯一方法是制作一个单独的 HTML 文件。请注意包含一个 div id="pagecontainer - 这是应用 display: flex 所必需的。如果您在 overflow 之间堆叠更多元素div 和 body,确保将 3 个 flex 属性应用于每个!

关于html - 在百分比高度容器中使用溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21363109/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com