Consider a container with an overflowing content. User can scroll in both directions to inspect the content.
When user presses a button (missing in the demo below), the whole container is covered with an overlay that has a sidebar.
At this point, the scrolling is not desirable.
How could I disable it?
.container {
width: 200px;
height: 100px;
border: 1px solid black;
overflow: auto;
position: relative;
}
.line {
white-space: nowrap;
}
.overlay {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background-color: rgba(0, 0, 0, 0.8);
}
.sidebar {
position: absolute;
top: 0;
bottom: 0;
right: 0;
width: 100px;
display: grid;
place-items: center;
background-color: #ccc;
}
<div class="container">
<div>
<div class="line">Hello World, Hello World, Hello World</div>
<div class="line">Hello World, Hello World, Hello World</div>
<div class="line">Hello World, Hello World, Hello World</div>
<div class="line">Hello World, Hello World, Hello World</div>
<div class="line">Hello World, Hello World, Hello World</div>
<div class="line">Hello World, Hello World, Hello World</div>
<div class="line">Hello World, Hello World, Hello World</div>
<div class="line">Hello World, Hello World, Hello World</div>
<div class="line">Hello World, Hello World, Hello World</div>
<div class="line">Hello World, Hello World, Hello World</div>
<div class="line">Hello World, Hello World, Hello World</div>
</div>
<div class="overlay">
<div class="sidebar">Sidebar</div>
</div>
</div>
You can add the overflow for the content only not the main div
Check the snippet:
.container {
width: 200px;
border: 1px solid black;
position: relative;
}
.content
{
overflow: auto;
height: 100px;
}
.line {
white-space: nowrap;
}
.overlay {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
background-color: rgba(0, 0, 0, 0.8);
}
.sidebar {
position: absolute;
top: 0;
bottom: 0;
right: 0;
width: 100px;
display: grid;
place-items: center;
background-color: #ccc;
}
<div class="container">
<div class="content">
<div class="line">Hello World, Hello World, Hello World</div>
<div class="line">Hello World, Hello World, Hello World</div>
<div class="line">Hello World, Hello World, Hello World</div>
<div class="line">Hello World, Hello World, Hello World</div>
<div class="line">Hello World, Hello World, Hello World</div>
<div class="line">Hello World, Hello World, Hello World</div>
<div class="line">Hello World, Hello World, Hello World</div>
<div class="line">Hello World, Hello World, Hello World</div>
<div class="line">Hello World, Hello World, Hello World</div>
<div class="line">Hello World, Hello World, Hello World</div>
<div class="line">Hello World, Hello World, Hello World</div>
</div>
<div class="overlay">
<div class="sidebar">Sidebar</div>
</div>
</div>