JSFiddle - React, Tailwind, and code Playground
HTML
<body>
<button id='btn'>Toggle Modal</button>
<div class='modalWrap'>
<div class="modal"></div>
</div>
<div class="content"></div>
</body>
CSS
body {
background: blue;
}
button{
z-index: 2;
position: absolute;
top: 2px;
left: 2px;
}
.content {
background: red;
height: 3000px;
}
.modalWrap{
position: fixed;
top: 0;
left: 0;
height: 100%;
width: 100%;
display: none;
overflow: auto;
z-index: 1;
padding: 50px;
box-sizing: border-box;
background-color: rgba(0,0,0,0.4);
}
.modal {
background: yellow;
position: relative;
height: 2300px;
top: 5px;
width: 80%;
margin: 0 auto;
}
JavaScript
let modalIsOpen = false;
let btn = document.querySelector('#btn');
let modalWrap = document.querySelector('.modalWrap');
let content = document.querySelector('body');
btn.addEventListener('click', ()=>{
if(modalIsOpen){
modalWrap.style.display = 'flex';
content.style.overflow = 'hidden';
} else {
modalWrap.style.display = 'none';
content.style.overflow = 'auto';
}
modalIsOpen = !modalIsOpen;
})