<nav role="navigation">
  <div class="menu-toggle"><span>Menu</span></div>
  <ul class="menu">
    <li><a href="#"><span>Home</span></a></li>
    <li><a href="#"><span>Learn More</span></a></li>
    <li><a href="#"><span>Get Involved</span></a></li>
    <li><a href="#"><span>Have Some Fun</span></a></li>
    <li><a href="#"><span>Don't Miss Out</span></a></li>
    <li><a href="#"><span>Get The Gear</span></a></li>
  </ul>
</nav>
nav {
  top: 0;
  right: 0;
  z-index: 1;
  width: 100%;
  position: absolute;
  .menu {
    top: 0;
    left: 0;
    margin: 0;
    z-index: 1;
    width: 100%;
    background: #FF7012;
    padding: 3em 0 2em;
    position: absolute;
    transform: translateY(-100%);
    transition: transform 0.3s cubic-bezier(1,0.5,0,1);
    &.active {
      transform: translateY(0);
    }
    li {
      list-style: none;
      a {
        padding: 1em;
        color: #fff;
        display: block;
        background: none;
        line-height: 1em;
        font-size: 1.125em;
        text-align: center;
        text-decoration: none;
        transition: background 0.2s ease-in-out;
        span {
          border-bottom: 1px dotted #fff;
        }
        &:hover, &:focus, &:active {
          background: rgba(255,255,255,0.2);
        }
      }
    }
  }
}

.menu-toggle {
  top: 24px;
  z-index: 2;
  right: 12px;
  width: 22px;
  height: 4px; // If you have *{box-sizing:border-box} applied, you'll want to change this to 20px
  padding: 8px 0;
  cursor: pointer;
  border-radius: 50%;
  position: absolute;
  span {
    height: 4px;
    display: block;
    overflow: hidden;
    text-indent: 100%;
    background: #FF7012;
    border-radius: 2px;
    white-space: nowrap;
    transition: background 0.3s ease-in-out;
  }
  &::before, &::after {
    left: 0;
    content: '';
    width: 22px;
    height: 4px;
    background: #FF7012;
    border-radius: 2px;
    position: absolute;
    transform-origin: center center;
    transition: width 0.2s ease-in-out, background 0.2s ease-in-out, transform 0.2s ease-in-out, top 0.2s ease-in-out, bottom 0.2s ease-in-out, left 0.2s ease-in-out, right 0.2s ease-in-out;
  }
  &::before {
    top: 0;
  }
  &::after {
    bottom: 0;
  }
  &.menu-open {
    span {
      background: rgba(255,255,255,0);
    }
    &::before {
      top: 8px;
      transform: rotate(-45deg);
    }
    &::after {
      bottom: 8px;
      transform: rotate(45deg);
    }
    &::before, &::after {
      width: 26px;
      background: #fff;
    }
    &:hover, &:focus, &:active {
      span {
        background: rgba(255,255,255,0);
      }
      &::before {
        top: 8px;
        left: -3px;
        transform: rotate(-45deg);
      }
      &::after {
        left: 9px;
        bottom: 8px;
        transform: rotate(45deg)
      }
      &::before, &::after {
        width: 18px;
      }
    }
  }
  &:hover, &:focus, &:active {
    span {
      background: rgba(255,255,255,0);
    }
    &::before {
      top: 8px;
      left: -3px;
      transform: rotate(45deg);
    }
    &::after {
      left: 9px;
      bottom: 8px;
      transform: rotate(-45deg)
    }
    &::before, &::after {
      width: 18px;
    }
  }
}
View Compiled
var menu = document.querySelector(".menu"),
    toggle = document.querySelector(".menu-toggle");

function toggleToggle() {
  toggle.classList.toggle("menu-open");
};

function toggleMenu() {
  menu.classList.toggle("active");
};

toggle.addEventListener("click", toggleToggle, false);
toggle.addEventListener("click", toggleMenu, false);

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