<div class="device">
    <div class="screen">
      <div class="menu">
        <ul>
          <li class="lock"><a href="">Lock</a></li>
          <li class="share"><a href="">Share</a></li>
          <li class="download"><a href="">Download</a></li>
        </ul>
      </div>
      <div class="toggle">
        <div class="x"></div>
        <div class="y"></div>
      </div>
      <div class="content"></div>
    </div>
  </div>
  <div class="circle"></div>
  <script src="https://code.jquery.com/jquery-latest.min.js">
/*  Reset & General */
* { margin: 0px; padding: 0px; }
body {
  background: #2e2c35;
  width: 100%; height: 100%;
}

a.codepen {
  display: block;
  height: 43px; width: 150px;
  background: url('http://creativeda.sh/sandbox/bounce_menu/img/codepen.png');
  text-indent: -9999px; font-size: 0px;
  position: absolute;
  top: 50%; left: 50%;
  z-index: 200;
  margin: 420px 0px 0px -72px;
}

div.circle {
  height: 77px; width: 77px;
  background: url('http://creativeda.sh/sandbox/bounce_menu/img/circle.png');
  position: absolute;
  top: 50%; left: 50%;
  z-index: 1000;
  margin: 164px 0px 0px -168px; 
  pointer-events: none;
  animation: pulse 5s infinite;
  -webkit-animation: pulse 1.5s infinite; 
  opacity: 0;
}
  @keyframes pulse {
    0%   { opacity: 0; }
    50%  { opacity: 1; }
    100% { opacity: 0; }
  }
  @-webkit-keyframes pulse {
    0%   { opacity: 0; }
    50%  { opacity: 1; }
    100% { opacity: 0; }
  }


/*  Device & Screen */
div.device {
  height: 798px; width: 378px;
  width: 440px; height: 807px;
  background: url('http://creativeda.sh/sandbox/bounce_menu/img/iphone_black.png') no-repeat center center; 
  -webkit-background-size: cover;
     -moz-background-size: cover;
       -o-background-size: cover;
          background-size: cover;
  position: absolute; margin: auto;
  top: 0px; bottom: 100px; left: 0px; right: 0px;
}
div.screen { 
  height: 568px; width: 320px;
  position: absolute;
  top: 119px; left: 60px;
  overflow: hidden;
}
div.content {
  height: 568px; width: 320px;
  background: #375585;
  position: absolute;
  top: 0px; left: 0px;
  z-index: 300;
  -webkit-transition: all 250ms ease;
     -moz-transition: all 250ms ease;
      -ms-transition: all 250ms ease;
       -o-transition: all 250ms ease;
          transition: all 250ms ease;
}
div.content.bounce { 
  -webkit-transform: translate3d(70px, -65px, 0px); 
     -moz-transform: translate3d(70px, -65px, 0px); 
       -o-transform: translate3d(70px, -65px, 0px); 
          transform: translate3d(70px, -65px, 0px); 
}
div.content.open { 
  -webkit-transform: translate3d(60px, -55px, 0px); 
     -moz-transform: translate3d(60px, -55px, 0px); 
       -o-transform: translate3d(60px, -55px, 0px); 
          transform: translate3d(60px, -55px, 0px); 
}


/*  Toggle & Menu */
div.toggle {
  height: 30px; width: 40px;
  position: absolute;
  bottom: 15px; left: 10px;
  z-index: 500;
  cursor: pointer;
}
  div.x,
  div.y {
    position: absolute; margin: auto;
    top: 0px; bottom: 0px;
    left: 0px; right: 0px;
    background: #fff;
    -webkit-transition: all 200ms ease-out;
       -moz-transition: all 200ms ease-out;
        -ms-transition: all 200ms ease-out;
         -o-transition: all 200ms ease-out;
            transition: all 200ms ease-out;
  }
  div.x { height: 4px; width: 30px; }
  div.y { height: 30px; width: 4px; }
  div.x.stretch { width: 40px; }
  div.x.shrink { width: 15px; }
  div.y.minus { height: 0px; }

div.menu {
  background: #222;
  height: 568px; width: 320px;
  position: absolute;
  top: 0px; left: 0px;
  z-index: 100;
}
  div.menu ul {
    list-style: none;
    padding: 0px; margin: 0px;
    height: 150px;
    width: 35px;
    position: absolute;
    bottom: 60px; left: 11px;
  }
  div.menu ul li {
    margin-top: 15px;
  }
  div.menu ul li a {
    display: block;
    height: 31px; width: 31px;
    text-indent: -9999px; font-size: 0px;
    background: #375585 center center; 
  }
  div.menu ul li.animate a {
    -webkit-transition: all 300ms ease-out;
       -moz-transition: all 300ms ease-out;
        -ms-transition: all 300ms ease-out;
         -o-transition: all 300ms ease-out;
            transition: all 300ms ease-out;
  }
  div.menu ul li.lock a { 
    background-image: url('http://creativeda.sh/sandbox/bounce_menu/img/icon_lock.png'); 
    -webkit-transform: translate3d(-50px, -30px, 0px);
       -moz-transform: translate3d(-50px, -30px, 0px);
         -o-transform: translate3d(-50px, -30px, 0px);
            transform: translate3d(-50px, -30px, 0px);
  }
  div.menu ul li.share a { 
    background-image: url('http://creativeda.sh/sandbox/bounce_menu/img/icon_share.png'); 
    -webkit-transform: translate3d(-50px, 0px, 0px);
       -moz-transform: translate3d(-50px, 0px, 0px);
         -o-transform: translate3d(-50px, 0px, 0px);
            transform: translate3d(-50px, 0px, 0px);
  }
  div.menu ul li.download a { 
    background-image: url('http://creativeda.sh/sandbox/bounce_menu/img/icon_download.png'); 
    -webkit-transform: translate3d(-50px, 30px, 0px);
       -moz-transform: translate3d(-50px, 30px, 0px);
         -o-transform: translate3d(-50px, 30px, 0px);
            transform: translate3d(-50px, 30px, 0px);
  }
  div.menu ul li.color a {  background-color: #fff; }
  div.menu ul li.move a { 
    -webkit-transform: translate3d(0px, 0px, 0px); 
       -moz-transform: translate3d(0px, 0px, 0px); 
         -o-transform: translate3d(0px, 0px, 0px); 
            transform: translate3d(0px, 0px, 0px); 
  }
  
  /*  Define Click Event for Mobile */
  if( 'ontouchstart' in window ){ var click = 'touchstart'; }
  else { var click = 'click'; }


  /*  Click menu toggle */
  $('div.toggle').on(click, function(){
    if( flag ){
      if( !$(this).hasClass('minus') ){ openMenu(); } 
      else { closeMenu(); }
    }
  });
  
  
  /*  Click menu icons */
  $('div.menu ul li a').on(click, function(e){
    e.preventDefault();
    closeMenu();
  });
  
  
  /*  Open/ Close Menu Functions */
  var flag = true; // Prevent menu change while animating
  function openMenu(){
    flag = false;
    
    // Remove circle
    $('div.circle').remove();
          
    // Update toggle
    $('div.toggle').addClass('minus');
    $('div.y').addClass('minus');
    setTimeout(function(){ $('div.x').addClass('stretch'); }, 100);
    setTimeout(function(){ $('div.x').removeClass('stretch'); }, 300);
    
    // Move content
    $('div.content').addClass('bounce');
    setTimeout(function(){ $('div.content').removeClass('bounce').addClass('open'); }, 250);
    
    // Animate menu icons
    $('div.menu ul li').addClass('animate');
    $('div.menu ul li').addClass('move');
    setTimeout(function(){ $('div.menu ul li').addClass('color'); }, 200);
    setTimeout(function(){ flag = true; }, 400);
  }
  
  function closeMenu(){
    flag = false;
        
    // Update toggle
    $('div.toggle').removeClass('minus');
    $('div.y').removeClass('minus');
    $('div.x').addClass('shrink');
    setTimeout(function(){ $('div.x').removeClass('shrink'); }, 200);
    
    // Move content
    $('div.content').removeClass('open');
    
    // Reset menu icons
    setTimeout(function(){          
      $('div.menu ul li').removeClass('animate');
      $('div.menu ul li').removeClass('color move');
      flag = true;
    }, 300);
  }

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.