<div id="main-body">
  <!--上层-->
  <header>
    <h1>左</h1>
    <div id="menu" (click)="clickR()">点我</div>
  </header>
  <div class="nav" id="navMenu">
    <div id="close" (click)="close()">x</div>
    <div>内容</div>
  </div>
  <main>
    其他内容
  </main>
  <div class="overlay"></div>
</div>
#main-body {
  transition: all 0.7s;
}
#main-body header {
  height: 15vh;
  background-color: #92b35a;
  color: #333;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1rem;
}
#main-body .nav {
  list-style: none;
  width: 0;
  height: 100vh;
  background-color: #86c28b;
  transition: all 0.4s linear;
  overflow-x: hidden;
  position: fixed;
  top: 0;
  right: 0;
  z-index: 1;
}
#main-body .nav #close {
  width: 20px;
  height: 20px;
  line-height: 20px;
  text-align: center;
  background-color: darkred;
}
#main-body .overlay {
  width: 100%;
  height: 100vh;
  background: rgba(53, 52, 52, 0.43);
  position: absolute;
  pointer-events: none;
  top: 0;
  left: 0;
  visibility: hidden;
  transition: all 0.5s linear;
}
    let nav = document.querySelector('#navMenu');
    let bodys=document.querySelector('#main-body')
    let clear=document.querySelector('#close')
    let overlay = document.querySelector('.overlay');
 
document.querySelector('#menu').addEventListener('click',e=>{
  nav.style.width = '250px';
   bodys.style.marginRight = '250px';
   overlay.style.visibility='visible'
})
 document.querySelector('#close').addEventListener('click',e=>{
    nav.style.width = '0';
    bodys.style.marginRight = '0';
    overlay.style.visibility='hidden';
 })
Run Pen

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.