.tiles
  a.tile(href="#")
    img(src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/216995/1.jpg")
    .details
      span.title Lorem Ipsum Dolor
      span.info Quisque vel felis lectus donec vitae dapibus magna
  a.tile(href="#")
    img(src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/216995/2.jpg")
    .details
      span.title Lorem Ipsum Dolor
      span.info Quisque vel felis lectus donec vitae dapibus magna
  a.tile(href="#")
    img(src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/216995/3.jpg")
    .details
      span.title Lorem Ipsum Dolor
      span.info Quisque vel felis lectus donec vitae dapibus magna
  a.tile(href="#")
    img(src="https://s3-us-west-2.amazonaws.com/s.cdpn.io/216995/4.jpg")
    .details
      span.title Lorem Ipsum Dolor
      span.info Quisque vel felis lectus donec vitae dapibus magna
View Compiled
/* Reset */
@import url(//codepen.io/chrisdothtml/pen/ojLzJK.css);

// variables
$anim-speed: 0.3s;

// main styles
.tiles {
  width: 1040px;
  font-size: 0;
  text-align: center;
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%,-50%);
  
  .tile {
    display: inline-block;
    margin: 10px;
    text-align: left;
    opacity: .99;
    overflow: hidden;
    position: relative;
    border-radius: 3px;
    box-shadow: 0 0 20px 0 rgba(0,0,0,.05);
    
    &:before {
      content: '';
      background: linear-gradient(
        to bottom,
        rgba(0,0,0,0) 0%,
        rgba(0,0,0,0.7) 100%
      );
      width: 100%;
      height: 50%;
      opacity: 0;
      position: absolute;
      top: 100%;
      left: 0;
      z-index: 2;
      transition-property: top, opacity;
      transition-duration: $anim-speed;
    }
    
    img {
      display: block;
      max-width: 100%;
      backface-visibility: hidden;
      -webkit-backface-visibility: hidden;
    }
    
    .details {
      font-size: 16px;
      padding: 20px;
      color: #fff;
      position: absolute;
      bottom: 0;
      left: 0;
      z-index: 3;
      
      span {
        display: block;
        opacity: 0;
        position: relative;
        top: 100px;
        transition-property: top, opacity;
        transition-duration: $anim-speed;
        transition-delay: 0s;
      }
      
      .title {
        line-height: 1;
        font-weight: 600;
        font-size: 18px;
      }
      
      .info {
        line-height: 1.2;
        margin-top: 5px;
        font-size: 12px;
      }
    }
    
    &:focus,
    &:hover {
      
      &:before,
      span {
        opacity: 1;
      }
      
      &:before {
        top: 50%;
      }
      
      span {
        top: 0;
      }
      
      .title {
        transition-delay: 0.15s;
      }
      
      .info {
        transition-delay: 0.25s;
      }
    }
  }
}
View Compiled
// Nothing to see here; move along.

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.