<nav class="menu" tabindex="0">
  <div class="smartphone-menu-trigger"></div>
  <header class="avatar">
    <img src="https://s3.amazonaws.com/uifaces/faces/twitter/kolage/128.jpg" />
    <h2>John D.</h2>
  </header>
  <ul>
    <li tabindex="0" class="icon-dashboard"><span>Dashboard</span></li>
    <li tabindex="0" class="icon-customers"><span>Customers</span></li>
    <li tabindex="0" class="icon-users"><span>Users</span></li>
    <li tabindex="0" class="icon-settings"><span>Settings</span></li>
  </ul>
</nav>

<main>
  <div class="helper">
    RESIZE THE WINDOW
    <span>Breakpoints on 900px and 400px</span>
  </div>
</main>
@color-1st: #ffea92;
@color-2nd: #5bc995;

@menu-width-desktop: 240px;
@menu-width-tablet: 90px;
@menu-width-smartphone: 230px;

@icon-url-base: "http://www.entypo.com/images/";
@icon-url-dashboard: "@{icon-url-base}/gauge.svg";
@icon-url-customers: "@{icon-url-base}/briefcase.svg";
@icon-url-users: "@{icon-url-base}/users.svg";
@icon-url-settings: "@{icon-url-base}/tools.svg";

body{
  background:@color-1st;
  margin:0;
  font-family:"Open Sans", Helvetica Neue, Helvetica, Arial, sans-serif;
  color:#fff;
  padding-left:@menu-width-desktop;
}

main{
  position:relative;
  height:100vh;
  
  .helper{
    background:rgba(0,0,0,0.2);
    color:@color-1st;
    position:absolute;
    top:50%;
    left:50%;
    transform:translate3d(-50%,-50%,0);
    padding:1.2em 2em;
    text-align:center;
    border-radius:20px;
    font-size:2em;
    font-weight:bold;
    
    span{
      color:rgba(0,0,0,0.2);
      font-size:0.4em;
      display:block;
    }
  }
}

.menu{
  background:@color-2nd;
  height:100vh;
  width:@menu-width-desktop;
  position:fixed;
  top:0;
  left:0;
  z-index:5;
  outline:none;
  
  .avatar{
    background:rgba(0,0,0,0.1);
    padding:2em 0.5em;
    text-align:center;
    
    img{
      width:100px;
      border-radius:50%;
      overflow:hidden;
      border:4px solid @color-1st;
      box-shadow:0 0 0 4px rgba(255,255,255,0.2);
    }
    
    h2{
      font-weight:normal;
      margin-bottom:0;
    }
  }
  
  ul{
    list-style:none;
    padding:0.5em 0;
    margin:0;
    
    li{
      padding:0.5em 1em 0.5em 3em;
      font-size:0.95em;
      font-weight:regular;
      background-repeat:no-repeat;
      background-position:left 15px center;
      background-size:auto 20px;
      transition:all 0.15s linear;
      cursor:pointer;
      
      &.icon-dashboard{
        background-image:url(@icon-url-dashboard);
      }
      &.icon-customers{
        background-image:url(@icon-url-customers);
      }
      &.icon-users{
        background-image:url(@icon-url-users);
      }
      &.icon-settings{
        background-image:url(@icon-url-settings);
      }
      
      &:hover{
        background-color:rgba(0,0,0,0.1);
      }
      
      &:focus{
        outline:none;
      }
      
    }
  }
}

@media screen and (max-width:900px) and (min-width:400px){
  body{
    padding-left:@menu-width-tablet;
  }
  .menu{
    width:@menu-width-tablet;
    
    .avatar{
      padding:0.5em;
      position:relative;
      img{
        width:@menu-width-tablet - 30px;
      }
      
      h2{
        opacity:0;
        position:absolute;
        top:50%;
        left:@menu-width-tablet + 10px;
        margin:0;
        min-width:200px;
        border-radius:4px;
        background:rgba(0,0,0,0.4);
        transform:translate3d(-20px,-50%,0);
        transition:all 0.15s ease-in-out;
      }
      
      &:hover{
        h2{
          opacity:1;
          transform:translate3d(0px,-50%,0);
        }
      }
    }
    
    ul{
      li{
        height:@menu-width-tablet/1.5;
        background-position:center center;
        background-size:30px auto;
        position:relative;

        span{
          //display:none;
          opacity:0;
          position:absolute;
          background:rgba(0,0,0,0.5);
          padding:0.2em 0.5em;
          border-radius:4px;
          top:50%;
          left:@menu-width-tablet - 10px;
          transform:translate3d(-15px,-50%, 0);
          transition:all 0.15s ease-in-out;
          
          &:before{
            content:'';
            width:0;
            height:0;
            position:absolute;
            top:50%;
            left:-5px;
            border-top:5px solid transparent;
            border-bottom:5px solid transparent;
            border-right:5px solid rgba(0,0,0,0.5);
            transform:translateY(-50%);
          }
        }
        
        &:hover{
          span{
            opacity:1;
            transform:translate3d(0px,-50%, 0);
          }
        }
      }
    }
  }
}

@media screen and (max-width:400px){
  body{
    padding-left:0;
  }
  
  .menu{
    width:@menu-width-smartphone;
    box-shadow:0 0 0 100em rgba(0,0,0,0);
    transform:translate3d(-@menu-width-smartphone,0,0);
    transition:all 0.3s ease-in-out;
    
    .smartphone-menu-trigger{
      width:40px;
      height:40px;
      position:absolute;
      left:100%;
      background:@color-2nd;
      
      &:before, &:after{
        content:'';
        width:50%;
        height:2px;
        background:#fff;
        border-radius:10px;
        position:absolute;
        top:45%;
        left:50%;
        transform:translate3d(-50%, -50%, 0);
      }
      
      &:after{
        top:55%;
        transform:translate3d(-50%, -50%, 0);
      }
    }
    
    ul{
      
      li{
        padding:1em 1em 1em 3em;
        font-size:1.2em;
      }
    }
    
    &:focus{
      transform:translate3d(0,0,0);
      box-shadow:0 0 0 100em rgba(0,0,0,0.6);
      
      .smartphone-menu-trigger{
        pointer-events:none;
      }
    }
  }
}
View Compiled
/* No JS ;)
 *
 * Icons from entypo.com
 * Avatar from uifaces.com
 */

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.