<nav>
  <div class="navicon">
    <div></div>
  </div>
  
  <a>Home</a>
  <a>Notifications</a>
  <a>Messages</a>
  <a>Profile</a>
  <a>Settings</a>
  
</nav>
$page-background : #303f9f;
$nav-background : white;
$color : rgba(black, .87);
$transition : .75s;

@import url(https://fonts.googleapis.com/css?family=Roboto:400,300,500);

body {
  font: 100% Roboto;
  background: $page-background;
  margin: 50px;
}

nav {
  width: 300px;
  background: $nav-background;
  color: $color;
  -webkit-clip-path: circle(24px at 30px 24px);
  clip-path: circle(24px at 32px 24px);
  transition:
    -webkit-clip-path $transition*.75,
    clip-path $transition/2;
  
  &:hover {
    transition-timing-function: ease-out;
    transition-duration: $transition;
    -webkit-clip-path: circle(390px at 225px 24px);
    clip-path: circle(390px at 150px 24px);
  }
}

a {
  display: block;
  line-height: 50px;
  padding: 0 20px;
  color: inherit;
  cursor: pointer;
  user-select: none;
  
  &:hover { background: #ffe082; }
  &:active { background: #ffca28; }
}


@mixin line {
  width: 20px;
  height: 2px;
  background: $color;
}

.navicon {
  padding: 23px 20px;
  cursor: pointer;
  transform-origin: 32px 24px;
  
  div {
    position: relative;
    @include line;
    
    &:before, &:after {
      display: block;
      content: "";
      @include line;
      position: absolute;
    }
    
    &:before { top: -7px; }
    &:after { top: 7px; }
  }
}
View Compiled

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. //cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js