<div class='container'>

  <div class='app'>

    <div class="app__nav js-hook--music">
      <div class='app__nav-hamburger'></div>
      <div class='app__nav-text'>Music</div>
      <div class='app__nav-settings reset'><i class="fa fa-repeat" aria-hidden="true"></i></div>
    </div>

    <div class="app__search js-hook--music">
      <input class='app__search-input' type="text" placeholder='Search music' />
      <i class="fa fa-search app__search-fa" aria-hidden="true"></i>
    </div>

    <div class="app__song app__song--1 js-hook--music">
      <div class="app__song-img app__song--1-img"></div>
      <div class="app__song-info">
        <h3 class='app__song-info-name'>U Make Me Wanna</h1>
        <h3 class='app__song-info-artist'>Blue</h3>
        <p class='app__song-info-likes'><i class="fa fa-heart-o" aria-hidden="true"></i>1200</p>
        <p class='app__song-info-dl'><i class="fa fa-arrow-down" aria-hidden="true"></i>2000</p>
      </div>
      <div class="app__song-dl">
        <div class='app__song-dl-arrow'><span></span></div>
      </div>
      <div class='app__song--1-likes app__song-likes'>
        <div class='app__song--1-likes-pause app__song-likes-pause'></div>
        <div class='app__song--1-likes-like app__song-likes-like'><i class="fa fa-heart-o" aria-hidden="true"></i></div>
        <div class='app__song--1-likes-dl app__song-likes-dl'></div>
      </div>
      <div class='app__song-wrapper'></div>
    </div>

    <div class="app__song app__song--2 js-hook--music">
      <div class="app__song-img app__song--2-img"></div>
      <div class="app__song-info">
        <h3 class='app__song-info-name'>You Are Not Alone</h1>
        <h3 class='app__song-info-artist'>Lobca</h3>
        <p class='app__song-info-likes'><i class="fa fa-heart-o" aria-hidden="true"></i>2000</p>
        <p class='app__song-info-dl'><i class="fa fa-arrow-down" aria-hidden="true"></i>3000</p>
      </div>
      <div class="app__song-dl">
        <div class='app__song-dl-arrow'><span></span></div>
      </div>
      <div class='app__song--2-likes app__song-likes'>
        <div class='app__song--2-likes-pause app__song-likes-pause'></div>
        <div class='app__song--2-likes-like app__song-likes-like'><i class="fa fa-heart-o" aria-hidden="true"></i></div>
        <div class='app__song--2-likes-dl app__song-likes-dl'></div>
      </div>
      <div class='app__song-wrapper'></div>
    </div>

    <div class="app__song app__song--3 js-hook--music">
      <div class="app__song-img app__song--3-img"></div>
      <div class="app__song-info">
        <h3 class='app__song-info-name'>Foll In Lover</h1>
        <h3 class='app__song-info-artist'>Ramzi</h3>
        <p class='app__song-info-likes'><i class="fa fa-heart-o" aria-hidden="true"></i>1200</p>
        <p class='app__song-info-dl'><i class="fa fa-arrow-down" aria-hidden="true"></i>1200</p>
      </div>
      <div class="app__song-dl">
        <div class='app__song-dl-arrow'><span></span></div>
      </div>
      <div class='app__song--3-likes app__song-likes'>
        <div class='app__song--3-likes-pause app__song-likes-pause'></div>
        <div class='app__song--3-likes-like app__song-likes-like'><i class="fa fa-heart-o" aria-hidden="true"></i></div>
        <div class='app__song--3-likes-dl app__song-likes-dl'></div>
      </div>
      <div class='app__song-wrapper'></div>
    </div>

    <div class="app__song app__song--4 js-hook--music">

      <div class="app__song-img app__song--4-img"></div>
      <div class="app__song-info">
        <h3 class='app__song-info-name'>One For Da Money</h1>
        <h3 class='app__song-info-artist'>Album</h3>
        <p class='app__song-info-likes'><i class="fa fa-heart-o" aria-hidden="true"></i>1300</p>
        <p class='app__song-info-dl'><i class="fa fa-arrow-down" aria-hidden="true"></i>2000</p>
      </div>
      <div class="app__song-dl">
        <div class='app__song-dl-arrow'><span></span></div>
      </div>
      <div class='app__song--4-likes app__song-likes'>
        <div class='app__song--4-likes-pause app__song-likes-pause'></div>
        <div class='app__song--4-likes-like app__song-likes-like'><i class="fa fa-heart-o" aria-hidden="true"></i></div>
        <div class='app__song--4-likes-dl app__song-likes-dl'></div>
      </div>
      <div class='app__song-wrapper'></div>
    </div>

    <div class='app__cross js-hook--1menu'></div>
    <div class='app__play js-hook--1menu'>
      <div class='app__play-btn'></div>
      <p class='app__play-par'>Play song in the bar</p>
    </div>

    <div class='app__bg'></div>
  </div>
  <div class='stuff'>
    <a href="https://dribbble.com/shots/2814885-Music-APP-Design" target='_blank'><i class="fa fa-dribbble" aria-hidden="true"></i></a>
    <a href="https://twitter.com/mrspok407" target="_blank"><i class="fa fa-twitter" aria-hidden="true"></i></a></div>
</div>
// Works bad in IE

*,
*:before,
*:after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

$backgroundCon: url('http://hdqwalls.com/wallpapers/forest-mist.jpg') center center no-repeat;
$backgroundApp: rgba(117, 142, 170, .4);
$backgroundPlay: rgba(47, 60, 96, .4);
$crossSize: 100px;
$crossClr: #fff;
$playBtnClr: #e8e8e8;
$white: #eaeaea;
$showInSpeedMusic: .6s;
@mixin pseudo {
  content: '';
  position: absolute;
  display: block;
}

.stuff {
  position: absolute;
  width: 100%;
  bottom: 0;
  right: 0;
  .fa-twitter {
    float: right;
    color: #1DA1F2;
    font-size: 50px;
    margin: 0 20px 20px 0;
  }
  .fa-dribbble {
    float: left;
    color: #C32361;
    font-size: 50px;
    margin: 0 0 20px 20px;
  }
}

.container {
  position: relative;
  height: 100vh;
  background: $backgroundCon;
  background-size: cover;
  font-family: 'Open Sans', sans-serif;
  overflow: hidden;
}

.app {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  margin: auto;
  width: 300px;
  height: 515px;
  background-color: $backgroundApp;
  box-shadow: 0 0 1px $backgroundApp;
  &__bg {
    position: absolute;
    top: 0;
    left: 0;
    transform: translateX(100%);
    width: 100%;
    height: 100%;
    background-color: darken($backgroundApp, 2%);
    z-index: 0;
    opacity: 0;
  }
  &__cross {
    position: absolute;
    top: 85px;
    left: 50%;
    transform: translateX(-50%);
    width: $crossSize;
    height: $crossSize;
    border: 2px solid $crossClr;
    border-radius: 50%;
    box-shadow: 0 0 1px $crossClr;
    opacity: 0;
    z-index: 0;
    animation: fadeInCross 1.5s forwards;
    @keyframes fadeInCross {
      33% {
        transform: translate(-50%, 75px) rotate(0);
        opacity: 1
      }
      40% {
        transform: translate(-50%, 75px) rotate(0);
        opacity: 1
      }
      65% {
        transform: translate(-50%, 75px) rotate(-45deg);
        opacity: 1
      }
      75% {
        transform: translate(-50%, 75px) rotate(-45deg);
        opacity: 1
      }
      100% {
        transform: translate(-50%, 75px) rotate(-90deg);
        opacity: 1
      }
    }
    &:after,
    &:before {
      @include pseudo;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%) rotate(45deg);
      width: 63px;
      height: 2px;
      background-color: $crossClr;
    }
    &:before {
      left: 17%;
      transform: rotate(-45deg);
    }
  }
  &__play {
    position: absolute;
    display: flex;
    justify-content: center;
    align-items: center;
    bottom: 0;
    width: 100%;
    height: 65px;
    transform: translateY(65px);
    background-color: $backgroundPlay;
    box-shadow: 0 0 1px $backgroundPlay;
    cursor: pointer;
    opacity: 0;
    z-index: 1;
    animation: fadeInPlay .5s forwards;
    @keyframes fadeInPlay {
      100% {
        transform: translateY(0);
        opacity: 1
      }
    }
    &:hover &-par,
    &-btn,
    &-btn:after {
      text-shadow: 0 0 1px $white;
      color: lighten($playBtnClr, 15%);
    }
    &:hover &-btn {
      text-shadow: 0 0 1px $white;
      border-color: lighten($playBtnClr, 15%);
    }
    &:hover &-btn:after {
      text-shadow: 0 0 1px $white;
      border-color: transparent transparent transparent lighten($playBtnClr, 15%);
    }
    &-par {
      position: relative;
      text-align: center;
      color: $playBtnClr;
      transition: .2s;
    }
    &-btn {
      position: relative;
      margin-right: 12px;
      width: 28px;
      height: 28px;
      border-radius: 50%;
      border: 1px solid darken($playBtnClr, 15%);
      transition: .2s;
      &:after {
        @include pseudo;
        top: 50%;
        left: 35%;
        transform: translateY(-50%);
        width: 0;
        height: 0;
        border-style: solid;
        border-width: 6px 0 6px 10px;
        border-color: transparent transparent transparent darken($playBtnClr, 15%);
        transition: .2s;
      }
    }
  }
  &__nav {
    position: relative;
    display: flex;
    justify-content: space-between;
    height: 56px;
    transform: translateX(100%);
    background-color: darken($backgroundApp, 5%);
    border-bottom: 2px solid lighten($backgroundApp, 5%);
    z-index: 5;
    opacity: 0;
    &-hamburger {
      position: relative;
      margin: 33px 0 0 15px;
      width: 8px;
      height: 1px;
      background-color: darken($white, 10%);
      box-shadow: 0 0 1px darken($white, 10%);
      &:after,
      &:before {
        @include pseudo;
        top: -5px;
        width: 13px;
        height: 1px;
        background-color: darken($white, 10%);
        box-shadow: 0 0 1px darken($white, 10%);
      }
      &:before {
        top: 5px;
      }
    }
    &-text {
      margin: 22px 0 0 15px;
      color: $white;
    }
    &-settings {
      margin: 20px 15px 0 0;
      font: {
        size: 20px;
      }
      color: $white;
      transition: .3s;
      cursor: pointer;
      &:hover {
        text-shadow: 0 0 2px $white;
      }
    }
  }
  &__search {
    position: relative;
    height: 45px;
    transform: translateX(100%);
    background-color: darken($backgroundApp, 5%);
    z-index: 1;
    opacity: 0;
    &-input {
      position: absolute;
      display: block;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      width: 85%;
      height: 25px;
      padding-left: 15px;
      font: {
        size: 12px;
      }
      color: $white;
      border: none;
      border-radius: 20px;
      background-color: darken($backgroundApp,
      10%);
      &::-webkit-input-placeholder {
        color: lighten($backgroundApp, 10%);
        text-shadow: 0 0 1px lighten($backgroundApp, 10%);
      }
      &::-moz-placeholder {
        color: lighten($backgroundApp, 10%);
        text-shadow: 0 0 1px lighten($backgroundApp, 10%);
      }
      &:-ms-input-placeholder {
        color: lighten($backgroundApp, 10%);
        text-shadow: 0 0 1px lighten($backgroundApp, 10%);
      }
      &:-moz-placeholder {
        color: lighten($backgroundApp, 10%);
        text-shadow: 0 0 1px lighten($backgroundApp, 10%);
      }
      &:focus {
        outline: none;
      }
    }
    &-fa {
      position: absolute;
      top: 15px;
      right: 35px;
      color: darken($white, 10%);
      font: {
        size: 14px;
      }
    }
  }
  &__song {
    position: relative;
    display: flex;
    flex-flow: row wrap;
    height: 88px;
    transform: translateX(100%);
    background-color: $backgroundApp;
    transition: .4s;
    z-index: 1;
    opacity: 0;
    &:after {
      @include pseudo;
      right: 0;
      bottom: 0;
      width: 208px;
      height: 1px;
      background-color: lighten($backgroundApp, 5%);
      box-shadow: 0 0 2px lighten($backgroundApp, 5%);
    }
    &-img {
      width: 88px;
      height: 88px;
      margin-left: 3px;
    }
    &-info {
      width: 160px;
      &-name,
      &-artist {
        color: $white;
        text-shadow: 0 0 1px $white;
        margin-left: 17px;
        font: {
          size: 12px;
          weight: 600;
        }
        cursor: default;
      }
      &-name {
        margin-top: 12px;
      }
      &-artist {
        position: relative;
        &:after {
          @include pseudo;
          top: 30px;
          width: 130px;
          height: 1px;
          background-color: rgba($white, .15);
          box-shadow: 0 0 1px rgba($white, .15);
        }
      }
      &-likes,
      &-dl {
        display: inline-block;
        margin: 20px 0 0 17px;
        font: {
          size: 10px;
        }
        color: darken($white,
        10%);
        text-shadow: 0 0 1px darken($white,
        10%);
        cursor: default;
        .fa {
          margin-right: 4px;
        }
      }
    }
    &-dl {
      &-arrow {
        position: relative;
        margin: 25px auto 0 auto;
        width: 25px;
        height: 25px;
        border-radius: 50%;
        border: 1px solid rgba($white, .5);
        span {
          position: absolute;
          left: 11px;
          top: 5px;
          height: 12px;
          width: 1px;
          background-color: rgba($white, .7);
          &:after,
          &:before {
            @include pseudo;
            left: -4px;
            bottom: 2px;
            width: 5px;
            height: 1px;
            background-color: rgba($white, .7);
            transform: rotate(45deg);
          }
          &:before {
            left: 0px;
            transform: rotate(-45deg);
          }
        }
      }
    }
    &-likes {
      position: relative;
      display: flex;
      justify-content: space-around;
      align-items: center;
      width: 100%;
      height: 60px;
      background-color: darken($backgroundApp, 5%);
      opacity: 0;
      transition: .5s;
      &-pause {
        opacity: 0;
        transition: .8s;
        &:after,
        &:before {
          @include pseudo;
          top: 17px;
          left: 45px;
          height: 24px;
          width: 2px;
          background-color: $white;
          border-radius: 5px;
        }
        &:before {
          left: 65px;
        }
      }
      &-like {
        width: 35px;
        text-align: center;
        opacity: 0;
        transition: .8s;
        margin-left: 15px;
        font: {
          size: 27px;
        }
        color: $white;
      }
      &-dl {
        position: relative;
        height: 24px;
        width: 2px;
        background-color: $white;
        opacity: 0;
        transition: .8s;
        &:after,
        &:before {
          @include pseudo;
          bottom: 0;
          left: -4px;
          height: 10px;
          width: 2px;
          background-color: $white;
          transform: rotate(-45deg);
        }
        &:before {
          transform: rotate(45deg);
          left: 4px;
        }
      }
    }
    &-wrapper {
      position: absolute;
      top: 0;
      left: 0;
      width: 100%;
      height: 100%;
      transition: .3s;
      cursor: pointer;
      &:hover {
        background-color: rgba((darken($backgroundApp, 10%)), .3);
      }
    }
  }
  &__song--1 {
    &-img {
      background: url('https://s26.postimg.org/u0f4tequh/tn1.png') center center no-repeat;
      background-size: cover;
    }
  }
  &__song--2 {
    flex-flow: row wrap;
    transition: .6s;
    &-img {
      background: url('https://s26.postimg.org/8s1gbzcdl/tn2.png') center center no-repeat;
      background-size: cover;
    }
  }
  &__song--3 {
    &-img {
      background: url('https://s26.postimg.org/np9xczpm1/tn3.png') center center no-repeat;
      background-size: cover;
    }
  }
  &__song--4 {
    border: none;
    &:after {
      display: none;
    }
    &-img {
      background: url('https://s26.postimg.org/h03dwz4a1/tn4.png') center center no-repeat;
      background-size: cover;
    }
  }
}

.showIn {
  animation: showIn $showInSpeedMusic forwards;
  @keyframes showIn {
    15% {
      opacity: 0
    }
    50% {
      transform: translateX(-8px)
    }
    70% {
      transform: translateX(5px)
    }
    100% {
      transform: translateX(0);
      opacity: 1
    }
  }
}

.showInBg {
  animation: showIn .5s forwards;
}

.fadeOutCross {
  animation: fadeOutCross .5s forwards;
  @keyframes fadeOutCross {
    0% {
      transform: translate(-50%, 75px) rotate(-90deg);
      opacity: 1
    }
    100% {
      transform: translate(-50%, 75px) rotate(-90deg);
      opacity: 0
    }
  }
}

.fadeOutPlay {
  animation: fadeOutPlay .5s forwards;
  @keyframes fadeOutPlay {
    0% {
      transform: translateY(0);
      opacity: 1
    }
    99% {
      transform: translateY(0);
      opacity: 0
    }
    100% {
      transform: translateY(100%);
      opacity: 0
    }
  }
}

.songopen {
  height: 148px;
  &:after {
    opacity: 0;
    transition: .2s;
  }
}

.resetFade {
  transform: translateX(0);
  opacity: 1;
  animation: test .5s forwards;
  @keyframes test {
    100% {
      transform: translate(0px, 100px);
      opacity: 0
    }
  }
}
View Compiled
(function() {
  var $app = document.querySelector('.app');
  var $play = document.querySelector('.app__play');
  var $cross = document.querySelector('.app__cross');
  var $appSongs = document.querySelectorAll('.app__song');
  var $arrMusic = document.querySelectorAll('.js-hook--music');
  var $appBg = document.querySelector('.app__bg');
  var $likes = document.querySelectorAll('.app__song-likes');
  var $reset = document.querySelector('.reset');
  var animSpeed = 50;
  var crossAnimSpeed = 1500;
  var crossAnim = false;
  var animDuration = animSpeed * ($arrMusic.length - 2);
  var animShowIn = false;
  var animLikes = false;
  var showMusicDelay = 500;
  var songOpenDelay = 1000;
  var likesDelay = 300;
  var songsChangeDelay = 500;
  var resetFadeDelay = 500;
  var fadeOutCrossDelay = 400;

  var showIn = function() {
    if (!animShowIn) {
      animShowIn = true;
      $cross.classList.add('fadeOutCross');
      $play.classList.add('fadeOutPlay');

      setTimeout(function() {
        $appBg.classList.remove('resetFade');
        $appBg.classList.add('showInBg');
        for (let i = 0, l = $arrMusic.length; i < l; i++) {
          setTimeout(function() {
            $arrMusic[i].classList.add('showIn');
          }, animSpeed * i)
        }

        setTimeout(function() {
          animShowIn = false;
          $app.style.overflow = 'hidden';
        }, animDuration + 1000)

        setTimeout(function() {
          $arrMusic[3].classList.add('songopen');
          $likes[1].style.opacity = '1';

          setTimeout(function() {
            for (var i = 0, l = $likes[0].children.length; i < l; i++) {
              $likes[1].children[i].style.opacity = '1';
            }
          }, likesDelay)
        }, songOpenDelay)
      }, showMusicDelay)
    }
  }

  var showLikes = function(e) {
    var $parent = e.target.parentNode;
    var $likes = $parent.children[3];

    if (!$parent.classList.contains('songopen') && animLikes === false && animShowIn === false) {
      animLikes = true;
      for (var i = 0; i < $appSongs.length; i++) {
        $appSongs[i].classList.remove('songopen');
        $appSongs[i].children[3].style.opacity = '0';
        $likes.children[i].style.opacity = '0';

        setTimeout(function() {
          $parent.classList.add('songopen');
          $likes.style.opacity = '1';
          setTimeout(function() {
            for (var i = 0, l = $likes.children.length; i < l; i++) {
              $likes.children[i].style.opacity = '1';
            }
          }, likesDelay)
        }, songsChangeDelay)

        setTimeout(function() {
          animLikes = false;
        }, songsChangeDelay + likesDelay)
      }
    }
  }

  var reset = function() {
    if ($appBg.classList.contains('showInBg') && animShowIn === false) {
      animShowIn = true;
      for (var i = 0; i < $appSongs.length; i++) {
        $appSongs[i].classList.remove('songopen');
        $appSongs[i].children[3].style.opacity = '0';
      }

      for (let i = 0, l = $arrMusic.length; i < l; i++) {
        $arrMusic[i].classList.add('resetFade');
        $appBg.classList.add('resetFade');
        setTimeout(function() {
          $arrMusic[i].classList.remove('showIn');
          $arrMusic[i].classList.remove('resetFade');
          $appBg.classList.remove('showInBg');
        }, resetFadeDelay)
      }

      setTimeout(function() {
        $cross.classList.remove('fadeOutCross');
        $play.classList.remove('fadeOutPlay');
      }, fadeOutCrossDelay)

      setTimeout(function() {
        animShowIn = false;
      }, crossAnimSpeed + fadeOutCrossDelay)
    }
  }

  $reset.addEventListener('click', reset);

  setTimeout(function() {
    if (!crossAnim) {
      $play.addEventListener('click', showIn);
    }
  }, crossAnimSpeed)

  for (var i = 0, l = $appSongs.length; i < l; i++) {
    $appSongs[i].addEventListener('click', showLikes);
  }
})();
View Compiled

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.