I'm trying to get a a layout where I have a main header, a sidebar, the main content, and a main content header, where the only scroll bars are in vertical direction for the sidebar and the vertical and horizontal directions of the main content.
In my current code, I am only able to get a vertical scroll bar on the body and a horizontal scroll bar on the content, and it is hard to access because the scroll bar for the content is at the very bottom of the body, which I don't want to grow in height.
What I'm having trouble figuring out is how to make the body fit to width and height of the screen, while the contents of #menu_bar
and #main_content
have the correct scroll bars.
Here is a mock up of what I am trying to achieve:
Here is what I have right now.
body {
min-width: 800px;
min-height: 500px;
overflow: auto;
margin: 10px;
border: solid black 1px;
max-width: 100%;
min-height: 100%;
font-family: Arial, Helvetica, sans-serif;
user-select: none;
}
#content {
position: relative;
display: flex;
flex-direction: row;
width: 100%;
height: 100%;
}
#menu_bar {
position: relative;
border-top: none;
overflow-y: auto;
}
#tabs {
width: 100%;
}
.tab {
margin: 5px;
padding: 5px;
width: max-content;
max-width: 300px;
}
#main {
position: relative;
display: flex;
flex-direction: column;
overflow: hidden;
width: 100%;
height: 100%;
}
#main_header {
display: flex;
flex-direction: column;
}
#main_content {
box-sizing: inherit;
display: flex;
flex-direction: column;
position: relative;
overflow-x: auto;
overflow-y: auto;
margin: 10px;
max-height: 100%;
}
.vertical-divider {
border-left: black solid 1px;
}
.horizontal-divider {
border-top: black solid 1px;
}
<!DOCTYPE html>
<html lang="en">
<body>
<header>
PAGE HEADER
</header>
<div class="horizontal-divider" id="header_content_divider"></div>
<div id="content">
<div class="vertical-divider hidden" style="display: none;"></div>
<!-- Left Menu Bar -->
<div id="menu_bar">
<div id="tabs">
<div class="tab">Tab 0</div>
<div class="horizontal-divider"></div>
<div class="tab">Tab 1</div>
<div class="horizontal-divider"></div>
<div class="tab">Tab 2</div>
<div class="horizontal-divider"></div>
<div class="tab">Tab 3</div>
<div class="horizontal-divider"></div>
<div class="tab">Tab 4</div>
<div class="horizontal-divider"></div>
<div class="tab">Tab 5</div>
<div class="horizontal-divider"></div>
<div class="tab">Tab 6</div>
<div class="horizontal-divider"></div>
<div class="tab">Tab 7</div>
<div class="horizontal-divider"></div>
<div class="tab">Tab 8</div>
<div class="horizontal-divider"></div>
<div class="tab">Tab 9</div>
<div class="horizontal-divider"></div>
<div class="tab">Tab 10</div>
<div class="horizontal-divider"></div>
<div class="tab">Tab 11</div>
<div class="horizontal-divider"></div>
<div class="tab">Tab 12</div>
</div>
</div>
<div class="vertical-divider" id="left_main_divider"></div>
<div id="main">
<div id="main_header">
MAIN HEADER
</div>
<div class="horizontal-divider"></div>
<div id="main_content">
<div id="wide">
ThisIsWideContentThisIsWideContentThisIsWideContentThisIsWideContentThisIsWideContentThisIsWideContentThisIsWideContentThisIsWideContentThisIsWideContentThisIsWideContentThisIsWideContentThisIsWideContent
</div>
<div id="tall">
<p>ThisIsTallContent</p>
<p>ThisIsTallContent</p>
<p>ThisIsTallContent</p>
<p>ThisIsTallContent</p>
<p>ThisIsTallContent</p>
<p>ThisIsTallContent</p>
<p>ThisIsTallContent</p>
<p>ThisIsTallContent</p>
<p>ThisIsTallContent</p>
<p>ThisIsTallContent</p>
<p>ThisIsTallContent</p>
<p>ThisIsTallContent</p>
<p>ThisIsTallContent</p>
<p>ThisIsTallContent</p>
<p>ThisIsTallContent</p>
<p>ThisIsTallContent</p>
<p>ThisIsTallContent</p>
<p>ThisIsTallContent</p>
<p>ThisIsTallContent</p>
<p>ThisIsTallContent</p>
<p>ThisIsTallContent</p>
<p>ThisIsTallContent</p>
</div>
</div>
</div>
</body>
</html>