我position: fixed
在布局中有一个 div,作为侧边栏。我被要求将它的部分内容固定在它的顶部(内部),如果它溢出 div 的底部,其余的则滚动。
我看过这个答案,但是那里提出的解决方案不适用于容器position: fixed
,position: absolute
这很痛苦。
我在这里做了一个 JSFiddle 演示我的问题。理想情况下,大量文本应该滚动,而不是溢出到页面底部。标题的高度可以随内容而变化,并且可以是动画的。
body {
background: #eee;
font-family: sans-serif;
}
div.sidebar {
padding: 10px;
border: 1px solid #ccc;
background: #fff;
position: fixed;
top: 10px;
left: 10px;
bottom: 10px;
width: 280px;
}
div#fixed {
background: #76a7dc;
padding-bottom: 10px;
color: #fff;
}
div#scrollable {
overlow-y: scroll;
}
<div class="sidebar">
<div id="fixed">
Fixed content here, can be of varying height using jQuery $.animate()
</div>
<div id="scrollable">
Scrolling content<br><br>
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
</div>
</div>
如果没有固定的标题,我可以简单地添加overflow-y: scroll
,div.sidebar
如果它溢出容器的底部,我可以愉快地滚动它的所有内容。但是,我遇到了在侧边栏顶部有一个固定的、可变高度的标题的问题,并且如果滚动条太长而无法放入容器中,则在该滚动条下方有任何内容。
div.sidebar
必须留下来position: fixed
,我非常希望在没有任何黑客攻击的情况下做到这一点,并尽可能使其成为跨浏览器。我尝试了各种事情,但没有一个有效,我不确定从这里尝试什么。
当容器内的 div 的内容溢出包含的 div 时,如何使position: fixed
容器内的 div 仅在 Y 方向上滚动,并且具有可变的、不确定的高度的固定标题?我非常想远离 JS,但如果我必须使用它,我会的。