<nav class="nav">
  <a href="#" class="nav__link">Home</a>
  <a href="#" class="nav__link">About</a>
  <a href="#" class="nav__link">Shop</a>
  <a href="#" class="nav__link">Contact</a>
</nav>

<div class="hamburger">
  <span class="hamburger__patty"></span>
  <span class="hamburger__patty"></span>
  <span class="hamburger__patty"></span>
</div>

<div class="bg"></div>
$navWidth: 350px;
$hamburgerSize: 60px;

* {
  box-sizing: border-box;
}

body {
  -webkit-font-smoothing: antialiased;
  font-family: 'Open Sans';
  height: 120vh;
  background: #E84545;
}

.nav {
  display: flex;
  flex-flow: column nowrap;
  justify-content: center;
  position: fixed;
  top: 0;
  right: 0;
  width: $navWidth;
  height: 100%;
  background: #2B2E4A;
  clip-path: circle(29px at calc(#{$navWidth} - 5vw - #{$hamburgerSize / 2}) calc(5vh + #{$hamburgerSize / 2}));
  transition: all .8s cubic-bezier(0.86, 0, 0.07, 1);
  
  &.active {
    clip-path: circle(75% at #{$navWidth / 2} 50vh);
  }
  
  &__link {
    display: block;
    font-size: 30px;
    font-weight: 800;
    text-transform: lowercase;
    letter-spacing: -1px;
    text-align: right;
    padding: 1vh 5vw;
    color: #FFE26F;
    text-decoration: none;
    transition: all 0.8s cubic-bezier(0.86, 0, 0.07, 1);
    opacity: 0;
    transform: translateY(50%);
    
    @for $i from 1 through 4 {
      &:nth-child(#{$i}) {
        transition-delay: $i * 0.05s;
      }
    }
    
    &.active {
      opacity: 1;
      transform: translateY(0);
    }
  }
}

.hamburger {
  $p: &;
  width: $hamburgerSize;
  height: $hamburgerSize;
  border-radius: 50%;
  cursor: pointer;
  position: fixed;
  z-index: 10;
  top: 5vh;
  right: 5vw;
  background: #2B2E4A;
  
  &__patty {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    height: 2px;
    width: 50%;
    backgroud-clip: padding-box;
    background: darken(white, 3);
    transition: all .8s cubic-bezier(0.86, 0, 0.07, 1);
    
    &:nth-child(1) {
      transform: translate(-50%, calc(-50% - 8px));
    }
    
    &:last-child {
      transform: translate(-50%, calc(-50% + 8px));
    }
  }
  
  &.active {
    
    #{$p}__patty {
      background: #FFE26F;
      
      &:nth-child(1) {
        transform: translate(-50%, -50%) rotate(45deg);
      }
      
      &:nth-child(2) {
        opacity: 0;
      }
      
      &:nth-child(3) {
         transform: translate(-50%, -50%) rotate(-45deg);
      }
    }
  }
}

.bg {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  opacity: 0.15;
  background: url('https://unsplash.it/1920/1080?image=1031') center/cover ;
  z-index: -1;
  
  &:before {
    content: "";
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: linear-gradient(to bottom, rgba(black, 0) 0%, rgba(black, 1) 100%);
  }
}

.onlyp {
  color: black;
  position: absolute;
  bottom: 5vh;
  left: 5vw;
  opacity: 0.35;
}
View Compiled
var nav = document.querySelector('.nav');
var toggle = document.querySelector('.hamburger');
var navItems = nav.querySelectorAll('.nav__link');

toggle.addEventListener('click', toggleNav);

function toggleNav() {
  
  // Show Nav
  nav.classList.toggle('active');
  
  // Transform Hamburger into 'X'
  toggle.classList.toggle('active');
  
  // Show Nav Items
  for (var i = 0, ii = navItems.length; i < ii; i++) {
    navItems[i].classList.toggle('active');
  }
}

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.