Onclick popup menu with sub items.

Right panel menu with sub items.

by Vishnuprasad ps

HTML

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<button id="open">Open Panel</button>

<div class="overlay"></div>

<div class="panel">
  <ul class="master">
    <li><a href="#">Link One</a></li>
    <li><a href="#">Link Two</a></li>
    <li><a href="#">Link Three</a></li>
    <li><a href="#">Link Four</a></li>
  </ul>
  <button id="close">Close</button>

  <div class="sub-panel">
    <ul>
      <li><a href="#">Sub Link One</a></li>
      <li><a href="#">Sub Link Two</a></li>
      <li><a href="#">Sub Link Three</a></li>
      <li><a href="#">Sub Link Four</a></li>
      <li><a href="#">Sub Link Five</a></li>
      <li><a href="#">Sub Link Six</a></li>
    </ul>
    <button id="back">Back</button>
  </div>

</div>

CSS

body {
  padding: 0;
  margin: 0;
  height: 2000px;
  font-family: sans-serif;
  font-size: 14px;
  overflow: hidden;
}

button {
  border: 0;
  background: red;
  color: #fff;
  font-weight: bold;
  padding: 10px 40px;
  cursor: pointer;
  margin: 20px;
}

.overlay {
  position: fixed;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background: rgba(0, 0, 0, 0.6);
  z-index: 10;
  display: none;
}

.panel {
  position: fixed;
  right: 0;
  top: 0;
  bottom: 0;
  width: 300px;
  height: 100%;
  background: #fff;
  z-index: 11;
  display: none;
}

.sub-panel {
  position: fixed;
  right: -300px;
  top: 0;
  bottom: 0;
  width: 300px;
  height: 100%;
  background: #e4e4e4;
  z-index: 11;
  transition: all 0.4s;
}

.sub-panel.show {
  right: 0;
}

ul {
  list-style: none;
  padding: 0;
  margin: 0;
}

ul li {
  width: 100%;
}

ul li a {
  width: 100%;
  display: block;
  background: #eee;
  border-bottom: 1px solid #ddd;
  text-decoration: none;
  padding: 8px 14px;
  margin-bottom: 1px;
  color: #333;
}

JavaScript

$("#open").click(function() {
  $('.panel').css('display', 'block');
  $('.overlay').css('display', 'block');
  $('body').css('overflow-y', 'hidden');
  $('html').css('overflow-y', 'hidden');
});

$("#close, .overlay").click(function() {
  $('.panel').css('display', 'none');
  $('.overlay').css('display', 'none');
  $('body').css('overflow-y', 'auto');
  $('html').css('overflow-y', 'auto');
});

$(".master li a").click(function() {
  $(".sub-panel").addClass("show");
});

$("#back").click(function() {
  $(".sub-panel").removeClass("show");
});