I have a complex html page where for a certain div I need it to have a sticky header & footer and scrollable content. I've found samples on how to do this on an whole page, but it doesn't;t work on an arbitrary div.
Here is my attempt with a simplified version of my situation
/* Required */
body {
margin: 0;
height: 100%;
}
#wrapper {
height: 100vh;
display: grid;
grid-template-rows: 30px 1fr 30px;
}
#content {
overflow-y: scroll;
}
/* Optional */
#wrapper > * {
padding: 5px;
}
#header {
background-color: #ff0000ff;
}
#content {
background-color: #00ff00ff;
}
#footer {
background-color: #0000ffff;
}
.app-wrapper {
height: 100vh;
display: grid;
grid-template-rows: 64px 1fr;
}
.sub-header {
background: yellowgreen;
}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" href="index.css">
</head>
<body>
<div class="app-wrapper">
<div class="sub-header">
Some content here
</div>
<div id="wrapper">
<div id="header">Header Content</div>
<div id="content">
Lorem ipsum dolor sit amet, consectetur adipiscing 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 adipiscing 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.
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
<p>asdfasdfasdfasfasdfasdfasdfasfasdf</p>
</div>
<div id="footer">Footer Content</div>
</div>
</div>
</body>
</html>
as a result I do get 2 scrollbars

if I add overflow: hidden for the .app-wrapper then I don't see anymore the footer from my div.
How do I solve this nicely?