<nav>
  <ul>
    <li><a href="#">Home</a></li>
    <li><a href="#">About</a></li>
    <li><a href="#">Services</a></li>
    <li><a href="#">Contact</a></li>
  </ul>
  <div class="burger">
    <div class="line"></div>
    <div class="line"></div>
    <div class="line"></div>
  </div>
</nav>
/* Transformed it into mobile-first */

nav {
  background-color: #333;
  display: flex;
  justify-content: end;
  align-items: center;
  padding: 0 2rem;
  height: 4rem;
  border-radius: 10px;
  box-shadow: 1px 3px 10px #333;
  position: relative;
}

ul {
  background-color: #333;
  position: absolute;
  top: 2rem;
  left: 0;
  width: 100%;
  height: 0;
  overflow: hidden;
  /*   visibility: hidden; */
  padding: 0;
  display: flex;
  flex-flow: column nowrap;
  justify-content: center;
  align-items: center;
  list-style: none;
  transition: all 0.2s;
  border-radius: 10px;
  box-shadow: 1px 3px 10px #333;
  transform-origin: top;
}

ul.show {
/*   visibility: visible; */
  height: 15rem;
}

.burger {
  display: block;
  cursor: pointer;
}

.line {
  width: 30px;
  height: 3px;
  background-color: white;
  margin: 5px;
  transition: all 0.3s;
}

ul.show ~ .burger .line:nth-child(1)  {
  transform: rotate(45deg) translateY(10px);

}

ul.show ~ .burger .line:nth-child(2)  {
  opacity: 0;
}

ul.show ~ .burger .line:nth-child(3)  {
  transform: rotate(-45deg) translateY(-10px);

}

li {
  margin: 1rem;
}

a {
  color: white;
  text-decoration: none;
  font-size: 18px;
}

a:hover {
  color: pink;
}

@media screen and (min-width: 768px) {
  nav { 
    justify-content: start;
  }
  .burger{
    display: none;
  }
  ul {
    position: static;
    height: auto;
    flex-flow: row nowrap;
    justify-content: start;
  }
}
const burger = document.querySelector(".burger"),
  ul = document.querySelector("nav ul"),
  nav = document.querySelector("nav");


const closeMenu = () => {
  ul.classList.remove("show");
};

burger.addEventListener("click", () => {
  ul.classList.toggle("show");
});

window.document.addEventListener("click", (event) => {
   const isClikedOutside = !nav.contains(event.target);
   const isMenuOpen = ul.classList.contains("show");  
  if (isMenuOpen && isClikedOutside) {
     closeMenu();
  }
});

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.