javascript - 如何使可滚动的 div 的高度动态化?
问题描述
我正在尝试构建一个具有定义高度的部分。在本节中,有一个粘性标题(其高度可能会增加)和一个正文。我想要的是使正文可滚动。但由于标题的动态高度,我不能给它一个确切的高度!我该怎么办??
<div class="section">
<div class="header"></div>
<div class="body"></div>
</div>
.section{
height: 100vh;
overflow: hidden;
position: relative;
}
.header{
position: sticky;
top: 0;
background: #fff;
z-index: 2;
}
.body{
// height: ???;
overflow-y: auto
}
我可以给出该部分overlfow-y: auto
,但它会在整个部分(甚至在标题中)显示滚动,但我只希望正文是可滚动的,并且整个部分的高度必须是窗口高度(100vh
)
解决方案
我将<body>
toheight: 100vh
和 div 设置为body
toheight: 100%
和.section
to类height: 100%
。
我还补充说:
* {
margin: 0;
padding: 0;
}
从所有元素中删除所有填充和边距,以防止<body>
. 这种组合允许标题和主要内容部分都具有动态高度。
* {
margin: 0;
padding: 0;
}
body {
height: 100vh;
}
.section {
height: 100%;
overflow: hidden;
position: relative;
}
.header {
position: sticky;
top: 0;
background: #fff;
z-index: 2;
border-bottom: 1px solid red;
}
.body {
height: 100%;
overflow-y: auto
}
<div class="section">
<div class="header">Header</div>
<div class="body">
<div class="content">
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sed convallis purus, iaculis tempor lorem. Praesent rhoncus mi blandit pellentesque hendrerit. Donec tincidunt congue metus, in molestie orci suscipit eget. Orci varius natoque penatibus
et magnis dis parturient montes, nascetur ridiculus mus. Sed malesuada ex quis eros elementum bibendum. Fusce sodales semper nibh, laoreet dapibus felis cursus eu. Donec gravida sit amet sem quis molestie. Sed odio neque, tincidunt sit amet eros
ac, molestie varius velit. Suspendisse et velit eget nunc posuere tristique. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Integer pharetra, ligula eu pretium bibendum, magna nibh iaculis tellus, non
malesuada odio lacus nec magna. Aliquam elementum fermentum ultricies. Donec sed nibh sed mauris congue eleifend a sed dui. In hac habitasse platea dictumst. Curabitur ultrices felis ut molestie viverra. Pellentesque dignissim tempus tortor a auctor.
Duis lorem lacus, luctus pulvinar scelerisque a, ultrices vitae massa. Suspendisse imperdiet diam velit, non iaculis dolor euismod in. Sed tincidunt euismod nisl, eu sodales sapien malesuada ac. Vestibulum in consequat leo. Phasellus rhoncus augue
id nisl pretium feugiat. In hac habitasse platea dictumst. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae; Mauris tincidunt pulvinar nulla. Nulla facilisi. Nulla finibus a mi eget lobortis. Etiam laoreet dui
at porttitor pharetra. Duis vel nisi enim. Aenean consequat vitae felis vel euismod. Morbi pharetra tristique massa, quis ultrices tortor viverra et. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec
dapibus ultrices nisl, vitae commodo magna mollis et. Sed nibh turpis, facilisis at magna vitae, semper ultricies mi. Maecenas non ante rhoncus, semper ipsum vitae, tempor ligula. Quisque lorem libero, commodo sit amet nisl vitae, sodales lobortis
neque. Maecenas sagittis sapien eu scelerisque consequat. Maecenas nec porttitor felis. Fusce dignissim elementum elit vitae fringilla. Integer auctor elementum dui et auctor. Sed sit amet dui dui. Ut nunc arcu, venenatis at sem sit amet, ullamcorper
luctus erat. Donec ut pellentesque ipsum, id pellentesque enim. Aenean in justo tincidunt, sollicitudin quam a, varius erat. Suspendisse ante massa, viverra in lacus in, eleifend sollicitudin risus. Morbi dignissim porttitor varius. Integer eu dolor
vel elit consequat vulputate. Donec sagittis et leo ac molestie. Donec odio orci, scelerisque in nisl a, interdum condimentum eros. Nulla at tortor lacus. Quisque condimentum maximus purus at luctus. Quisque vel consectetur justo, id efficitur nunc.
Etiam consequat est a neque vulputate consequat. Aliquam et odio bibendum, mollis tortor rutrum, porttitor massa. Donec dignissim ligula justo, sed aliquet lorem finibus in. Sed vel velit bibendum urna bibendum faucibus vitae eget odio. Fusce dapibus
enim eros. In hac habitasse platea dictumst. In varius maximus eleifend. Suspendisse ut sodales risus. Phasellus bibendum scelerisque ex sit amet maximus.
</div>
</div>
</div>
推荐阅读
- c - pow() 函数不适用于 CLion
- mongodb - pymongo 插入大整数
- java - 如何从 pixelmed 获取 C_FIND 中的私有供应商属性标签?
- amazon-web-services - aws api 网关是否支持与后端服务的双向 TLS 连接?
- python - 从python中的数据框中删除0.0而不是0
- java - 从arraylist中获取特定元素
- c# - UWP RequestedTheme 在 ListView 和 ListViewItem 中不一致
- reactjs - 如何使 MUI Fade 在渲染时淡入?
- c# - C# 无法从“Gameserver.Client.TCP”转换为“Sytem.Net.Sockets.TcpClient”
- vb.net - 如何返回reponse.statuscode