Responsive Menu

by Faisal Khan Janjua

HTML

<div class="header">
  <div class="toggleButton">
    <span></span>
  </div>
  <ul class="menu">
    <li>Home</li>
    <li>About</li>
    <li>Profile</li>
    <li>Contact</li>
  </ul>
</div>

SCSS

body {
  margin: 0;
}

.menu {
  padding: 0;
  margin: 10px;
  list-style: none;
  & li {
    display: inline-block;
    padding: 8px 20px;
    border: 1px solid #ddd;
  }
}

.toggleButton {
  width: 40px;
  height: 40px;
  position: relative;
  border: 1px solid #ddd;
  & span {
    top:0;
    bottom: 0;
    margin: auto;
    width: 100%;
    height: 2px;
    display: block;
    background: #666;
    position: absolute;
    transition: all ease .2s;
    &:before, &:after {
      content: '';
      width: 100%;
      height: 2px;
      display: block;
      background: #F99;
      margin-top: -10px;
      position: absolute;
      transition: all ease .2s;
    }
    &:after {
      margin-top: 10px;
    }
  }
  &.open {
    & span {
      background: rgba(0,0,0,0);
      &:before {
        margin: 0;
        transform: rotate(-45deg);
      }
      &:after {
        margin: 0;
        transform: rotate(45deg);
      }
    }
  }
}

@media screen and (max-width: 559px) {
  .menu {
    display: none;
    & li {
      display: block;
    }
  }
}

JavaScript

alert('ready');

$(document).on('click', '.toggleButton', function(){
	$(this).toggleClass('open');
  $('.menu').slideToggle();
});