// TITLE & CREDITS
.title
   .title-content
      h1 Card opening effect
      p 
       | Inspired on 
       a href="https://dribbble.com/shots/1893589-Material-design-card-animation" target="_blank" Material design card animation.
      button.toggle-btn.ripple data-ripple-color="#d7751e" Toggle effect
// END TITLE & CREDITS

// PHONE
.phone
   .phone-buttons
   .phone-camera
   // APP
   main.app
      // STATUS BAR
      section.status-bar
         .right
            .fa.fa-wifi.left
            .fa.fa-signal.left
            .batery-level.left
            .left 12:00
      // END STATUS BAR
      
      // NAB BAR
      section.nav-bar
         button.left.ripple
            i.fa.fa-bars
         h1.left Events
      // END NAB BAR
      
      // ACTION BAR
      section.action-bar
         button.ripple data-ripple-color="rgba(0,0,0, .3)"
            i.fa.fa-arrow-left
         .right
            button
               i.fa.fa-info-circle
            button
               i.fa.fa-share-alt
      // END ACTION BAR
      
      // CARD
      article.card
         .card-overlay
         header.card-cover-placeholder
            .card-cover
         .card-content
            h2
               a.card-title href="javascript:0"
                  | Iron City, Birmingham, AL
            p
               a.card-description href="javascript:0"
                  | Run the Jewels is an American hip hop duo, formed by rappers EL-P and Killer Mike in 2013. That same year, they released their sel...
                  
            .card-content-opened
               label Venue Name
               h2 Iron City, Birmingham, AL
               label Ticked Price
               strong.left $30.00
               button.right.ripple data-ripple-color="#d7d7d7" Buy ticket
               .clearfix
               label About
               p Run the Jewels is an American hip hop duo, formed by New York City-based rapper-music producer EL-P and Atlanta-based rapper Killer Mike, in 2013. Later that year, they released their eponymous debut studio album, Run the Jewels, as a free digital download. The duo announced they would begin recording the highly anticipated sequel to their debut, in February 2014, after a series of Australian live dates as part of St. Jerome's Laneway Festival.
               
            button.card-content-button.ripple data-ripple-color="#ededed"
               i.fa.fa-plus
              
         footer.card-actions.clearfix
            button.card-btn.ripple data-ripple-color="#ededed" Add to calendar
      // END CARD
      
      // CARD
      article.card
         .card-cover-2
      // END CARD
View Compiled
// IMPORTS
@import url(https://fonts.googleapis.com/css?family=Roboto:400,700);
// END IMPORTS

// GLOBAL
body {
   height: 100%;
   background-color: #FC3;
   font-family: 'Roboto', sans-serif;
}

* {
   box-sizing: border-box;
}

button {
   cursor: pointer;
   border: none;
   background: none;
   font-size: 20px;
   outline: none;
}

h1,
h2 {
   font-weight: bold;
   margin-bottom: 20px;
}

a {
   color: #3498db;
   text-decoration: none;
}

p {
   font-size: 16px;
   line-height: 1.5em;
   margin-bottom: 10px;
}
// END GLOBAL

// HELPERS
.clearfix {
   &:after {
      display: table;
      clear: both;
      content: " ";
   }
}

.left {
   float: left;
}

.right {
   float: right;
}
// END HELPERS

// TITLE
.title {
   width: 400px;
   height: 100vh;
   text-align: center;
   background-color: #f39c12;
   color: white;
   
   .title-content {
      position: relative;
      top: 50%;
      transform: translateY(-50%);
   }
   
   h1 {
      font-size: 30px;
   }

   .toggle-btn {
      background-color: #e67e22;
      padding: 20px;
      margin: 20px;
      color: white;
      border-radius: 4px;
      box-shadow: 0 4px #d7751e;
   }
}
// END TITLE

// PHONE
.phone {
   position: absolute;
   left: 50%;
   bottom: 0;
   width: 460px;
   padding: 85px 20px 0 20px;
   background-color: #212121;
   border-radius: 50% 50% 0 0 / 40px;
   
   .phone-buttons {
      &:before,
      &:after {
         background-color: #1D1D1D;
         width: 5px;
         position: absolute;
         content: "";
      }
      
      &:before {
         top: 180px;
         left: -5px;
         height: 160px;
         border-radius: 4px 0 0 4px;
      }
      
      &:after {
         right: -5px;
         top: 140px;
         height: 80px;
         border-radius: 0 4px 4px 0; 
      }
   }
   
   .phone-camera {
      position: absolute;
      top: 30px;
      left: 50%;
      width: 36px;
      height: 36px;
      border-radius: 50%;
      margin-left: -13px;
      border: 4px solid #1D1D1D;
      background-color: #424242;
   }
}
// END PHONE

// APP
.app {
   height: 540px;
   overflow: hidden;
   position: relative;
   background-color: #EFEFEF;
}
// END PHONE

// STATUS BAR
.status-bar {
   position: absolute;
   top: 0;
   left: 0;
   right: 0;
   z-index: 3;
   height: 24px;
   padding: 6px;
   background-color: rgba(black, .2);
   color: white;
   font-size: 12px;
   
   div {
      margin-left: 10px;
   }
}

// NAV BAR
.nav-bar {
   position: absolute;
   top: 0;
   left: 0;
   right: 0;
   z-index: 2;
   height: 90px;
   background-color: #00BDE7;
   box-shadow: 0 2px rgba(0,0,0,.1);
   padding: 49px 20px 25px 20px;
   transition: all 200ms;
   
   h1 {
      color: white;
      font-size: 20px;
      font-weight: normal;
   }
   
   button {
      margin-right: 30px;
      color: #0C88AD;
   }
   
   &.hide {
      top: -90px;
      opatity: 0;
   }
}
// END NAV BAR

// ACTION BAR
.action-bar {
   position: absolute;
   left: 0;
   right: 0;
   top: 24px;
   z-index: 3;
   opacity: 0;
   transition: all 60ms;
   transition-delay: 0;
   
   button {
      overflow: hidden;
      padding: 25px 20px;
      color: white;
      border-radius: 50%;
      font-size: 20px;
   }
   
   &.show {
      transition-duration: 400ms;
      transition-delay: 100ms;
      opacity: 1;
   }
}
// END ACTION BAR

// CARD
.card {
   width: 95%;
   margin: 20px auto;
   background-color: white;
   box-shadow: 0 1px 1px rgba(0, 0, 0, .2);
   border-radius: 4px;
   
   .card-overlay {
      background-color: black;
      opacity: 0;
      position: absolute;
      left: 0;
      right: 0;
      top: 0;
      bottom: 0;
      z-index: 1;
      visibility: hidden;
      transition: all 400ms; 
   }
   
   .card-cover-placeholder {
      height: 240px;
   }
   
   .card-cover,
   .card-cover-2 {
      cursor: pointer;
      background-image: url(http://cdn.ticketfly.com/i/00/01/33/64/99-atjmbo1.jpg);
      background-clip: content-box;
      background-repeat: no-repeat;
      background-size: cover;
      background-position: center;
      height: 240px;
      border-radius: 4px 4px 0 0;
      transition: all 450ms;
   }
   
   .card-cover-2 {
      background-image: url(http://blogs.phoenixnewtimes.com/uponsun/The%20Growlers/the_growlers_surf_music.jpg);
   }
   
   .card-content {
      position: relative;
      padding: 20px 20px 10px 20px;
   }
   
   .card-title {
      display: inline-block;
      color: #7C7C7C;
      font-weight: bold;
   }
   
   .card-description {
      display: inline-block;
      color: #BDBDBD;
      font-size: 15px;
   }
   
   .card-actions {
      border-top: 1px solid #EDEDED;
   }
   
   .card-btn {
      display: block;
      width: 100%;
      padding: 20px;
      text-align: right;
      font-weight: bold;
      text-transform: uppercase;
      color: #FE1C7A;
      font-size: 16px;
   }
   
   .card-content-opened {
      width: 100%;
      height: 0;
      background-color: white;
      position: absolute;
      top: 0;
      left: 0;
      z-index: 2;
      padding: 0 30px 10px 80px;
      transition: all 300ms;
      transition-delay: 200ms;
      overflow: hidden;
      color: #9E9E9E;
      
      label,
      h2,
      strong,
      button,
      p {
         transform: scale(.9);
         opacity: 0;
         transition: all 300ms;
         transition-delay: 500ms;
      }
      
      h2 {
         color: #7A7A7A;
         font-size: 18px;
      }
      
      label {
         color: #4DCFEF;
         font-size: 14px;
         font-weight: bold;
         text-transform: uppercase;
         margin: 30px 0 5px 0;
         display: block;
      }
      
      strong {
         color: #7A7A7A;
         font-size: 44px;
      }
      
      button {
         line-height: 1;
         background-color: #F7F7F7;
         padding: 12px 20px;
         color: #7A7A7A;
         font-weight: bold;
         font-size: 16px;
         text-transform: uppercase;
         box-shadow: 0 2px 2px rgba(0,0,0,.3);
         border-radius: 4px;
      }
   }
   
   .card-content-button {
      position: absolute;
      left: 15px;
      top: -45px;
      z-index: 3;
      width: 50px;
      height: 50px;
      background-color: white;
      color: #FE1C7A;
      box-shadow: 0 2px 4px rgba(0,0,0,.3);
      border-radius: 50%;
      transform: scale(0);
      transition: all 200ms;
      transition-delay: 0ms;
   }
   
   &.open {
      .card-overlay {
         opacity: .3;
         visibility: visible;
      }
      .card-cover {
         transform: scale(1.2) translateY(-25px);
         position: relative;
         z-index: 2;
      }
      .card-content-opened {
         transform: scale(1.1);
         height: 400px;
         * {
            opacity: 1;
         }
      }
      .card-content-button {
         transform: scale(1);
         transition-duration: 200ms;
         transition-delay: 600ms;
      }
   }
}
// END CARD

// RIPPLE EFFECT
.ripple {
   overflow: hidden;
   position:relative;
}

.ripple-effect {
   position: absolute;
   border-radius: 50%;
   width: 50px;
   height: 50px;
   background: white;
   animation: ripple-animation 2s;
}

@keyframes ripple-animation {
   from {
      transform: scale(1);
      opacity: 0.4;
   }
   to {
      transform: scale(100);
      opacity: 0;
   }
}
// END RIPPLE EFFECT
View Compiled
(function (window, $) {
  
  	$(function() {
     	
      // toggle card
      $('.toggle-btn').click(function(){
         $('.nav-bar').toggleClass('hide');
         $('.action-bar').toggleClass('show');
         $('.card').toggleClass('open');
      });
    	
      // ripple effect
      // from https://codepen.io/Craigtut/pen/dIfzv
    	$('.ripple').on('click', function (event) {
      	event.preventDefault();

         var $div = $('<div/>'),
             btnOffset = $(this).offset(),
             xPos = event.pageX - btnOffset.left,
             yPos = event.pageY - btnOffset.top;

         $div.addClass('ripple-effect');
         var $ripple = $(".ripple-effect");

         $ripple.css("height", $(this).height());
         $ripple.css("width", $(this).height());
         $div
           .css({
             top: yPos - ($ripple.height()/2),
             left: xPos - ($ripple.width()/2),
             background: $(this).data("ripple-color")
           }) 
           .appendTo($(this));

         window.setTimeout(function(){
           	$div.remove();
         }, 2000);
    	});
    
	});
  
})(window, jQuery);

External CSS

  1. https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.3.0/css/font-awesome.css

External JavaScript

  1. //cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js