<ul class="fan">
      <li>
        <div class="flip">
          <div class="card">
            <div class="face front" data-bgcolor="#5C323E">
              Front
            </div>
            <div class="face back">
              Back
            </div>
          </div>
        </div>
      </li>
      <li>
        <div class="flip">
          <div class="card">
            <div class="face front" data-bgcolor="#A82743">
              Front
            </div>
            <div class="face back">
              Back
            </div>
          </div>
        </div>
      </li>
      <li>
        <div class="flip">
          <div class="card">
            <div class="face front" data-bgcolor="#E15E32">
              Front
            </div>
            <div class="face back">
              Back
            </div>
          </div>
        </div>
      </li>
      <li>
        <div class="flip">
          <div class="card">
            <div class="face front" data-bgcolor="#C0D23E">
              Front
            </div>
            <div class="face back">
              Back
            </div>
          </div>
        </div>
      </li>
      <li>
        <div class="flip">
          <div class="card">
            <div class="face front" data-bgcolor="#E5F04C">
              Front
            </div>
            <div class="face back">
              Back
            </div>
          </div>
        </div>
      </li>
      <li>
        <div class="flip">
          <div class="card">
            <div class="face front" data-bgcolor="#C0D23E">
              Front
            </div>
            <div class="face back">
              Back
            </div>
          </div>
        </div>
      </li>
      <li>
        <div class="flip">
          <div class="card">
            <div class="face front" data-bgcolor="#E15E32">
              Front
            </div>
            <div class="face back">
              Back
            </div>
          </div>
        </div>
      </li>
      <li>
        <div class="flip">
          <div class="card">
            <div class="face front" data-bgcolor="#A82743">
              Front
            </div>
            <div class="face back">
              Back
            </div>
          </div>
        </div>
      </li>
      <li>
        <div class="flip">
          <div class="card">
            <div class="face front" data-bgcolor="#5C323E">
              Front
            </div>
            <div class="face back">
              Back
            </div>
          </div>
        </div>
      </li>
    </ul>
    <footer>
      An experiment by <a href="http://www.dviate.com/" rel="external">Dviate</a> &mdash; Color inspiration via <a href="http://www.colourlovers.com/palette/1015109/All_Eyes_On_You" rel="external">Colourlovers</a>
    </footer>
@import "bourbon";

/* coloring */
$black: #000;
$white: #F1EDDC;
$purple: #A82743;
$orange: #E15E32;

/* animation stuff */
$cards-transition-duration: 750ms;
$cards-translate: 10;

/* card variables */
$cards-amount: 9; /* the amount of cards, keep this amount ODD, NOT EVEN! */

$card-width: 200px; /* each card's width */
$card-height: 2 * $card-width; /* each card's height */

$firsthalf: ($cards-amount / 2) - 0.5; /* not needed to edit */
$secondhalf: ($cards-amount / 2) + 1.5; /* not needed to edit */

@import "https://fonts.googleapis.com/css?family=Varela+Round";

body,
html {
  font-family: "Varela Round", sans-serif;
  height: 100%;
  overflow: hidden;
  background-color: $purple;
  color: $white;
  @include background-image(radial-gradient(center, ellipse cover, lighten($purple, 15%) 0%, darken($purple, 25%) 100%));
}

a,
a:link,
a:active,
a:hover,
a:visited {
  color: $white;
  text-decoration: none;
  border-bottom: 1px solid rgba($white, 0);
  @include transition(all $cards-transition-duration);
}

a:hover {
  border-bottom: 1px solid rgba($white, 1);
}

.fan {
  height: $card-height;
  text-align: center;
  position: relative;
  top: 50%;
  @include transform(translateY(-50%));
  /* cardsss */
  li {
    width: $card-width;
    height: $card-height;
    position: absolute;
    top: 0;
    left: calc(50% - #{$card-width / 2});
    cursor: pointer;
    border-radius: 8px;
    display: block;
    margin: 5px;
    opacity: 0;
    @include perspective(1800);
    @include transition(all $cards-transition-duration);
    @include transform-origin(50% 100%);
    &:hover {
      z-index: #{$cards-amount + 1};
      @include transform(scale(1.25) rotate(3deg) rotatex(-3deg) translate(-10px, -5px)!important);
      //@include box-shadow(0px 0px 25px rgba($black,.55)!important);
    }
    /* normal states */
    @for $i from 1 through $secondhalf {
      &:nth-child(#{$i}) {
        @include transform(rotate(#{($i - $cards-amount + 4)*8}deg));
        @include animation(fadeIn $cards-transition-duration ($cards-transition-duration/5)*$i ease-in-out forwards);
        //@include box-shadow(0px 5px 5px rgba($black,.05));
      }
    }
    &:nth-child(#{$secondhalf - 1}) {
      @include transform(translate(0) rotate(0deg));
      @include animation(fadeIn $cards-transition-duration ($cards-transition-duration/5)*$secondhalf ease-in-out forwards);
      //@include box-shadow(0px 5px 5px rgba($black,.05));
    }
    @for $i from length($secondhalf) through $cards-amount {
      &:nth-child(#{$i}) {
        @include transform(rotate(#{($i - 5)*8}deg));
        @include animation(fadeIn $cards-transition-duration ($cards-transition-duration/5)*$i ease-in-out forwards);
        //@include box-shadow(0px 5px 5px rgba($black,.05));
      }
    }
    /* hover states */
    &.before {
      @for $i from 1 through ($cards-amount - 1) {
        &.prefix_#{$i} {
          $zIndex: (((90 / $cards-amount) * ($i - 1))/10)+1;
          $angle: ((25 / $cards-amount) * ($i*1.25));
          $translate: (($i * $cards-translate) + $cards-amount);
          @include transform(rotate(-#{$angle}deg) translate(-#{($translate*6)}px, #{($translate)}px));
          box-shadow: -#{$i}px #{$i}px 5px rgba($black,.25);
          z-index: #{$i};
        }
      }
    }
    &.after {
      @for $i from 1 through ($cards-amount - 1) {
        &.prefix_#{$i} {
          $zIndex: (((90 / $cards-amount) * ($i - 1))/10)-1;
          $angle: ((25 / $cards-amount) * ($i * 1.25)) ;
          $translate: (($i * $cards-translate) + $cards-amount);
          @include transform(rotate(#{$angle}deg) translate(#{$translate*6}px, #{($translate)}px));
          box-shadow: -#{$i}px #{$i}px 5px rgba($black, .25);
          z-index: #{$zIndex};
        }
      }
    }
    /* content for the "cards" */
    .content {
      height: $card-width * .67;
      line-height: $card-width * .67;
      color: $white;
      font-size: 40px;
    }
    .flip {
      width: $card-width;
      height: $card-height;
      position: relative;
      @include perspective(1800);
      .card {
        width: $card-width;
        height: $card-height;
        @include transform-style(preserve-3d);
        @include transition(all $cards-transition-duration/2);
        &.flipped {
          @include transform(rotateX(-190deg));
        }
        .face {
          width: $card-width;
          height: $card-height;
          position: absolute;
          z-index: 99;
          text-align: center;
          line-height: $card-height;
          font-size: 30px;
          text-shadow: rgba($black, .25) 0px 2px 1px;
          border-radius: 8px;
          box-shadow: 0px 0px 25px rgba($black,.55);
          @include backface-visibility(hidden);
          &.front {
            position: absolute;
            z-index: 1;
            color: $white;
            cursor: pointer;
          }
          &.back {
            background: $white;
            color: $black;
            cursor: pointer;
            @include transform(rotateX(-180deg));
          }
        }
      }
    }
  }
}

footer {
  position: fixed;
  bottom: 10px;
  left: 0;
  right: 0;
  width: 100%;
  text-align: center;
  font-size: 9px;
  color: $white;
  opacity: 0;
  @include animation(fadeIn $cards-transition-duration ($cards-transition-duration/5)*$cards-amount ease-in-out forwards);
}

@include keyframes(fadeIn) {
  from {
    opacity: 0;
  }
  to {
    opacity: 1;
  }
}
View Compiled
      $(document).ready(function () {
        $("body").bind("touchstart", function() { /* nothing needed here, see http://stackoverflow.com/a/23012580 */ });
        $(".fan li").hover(function() {
          $(this).nextAll().each(function(i) {
            $(this).addClass("after prefix_" + (i+1));
          });
          $(this).prevAll().each(function(i) {
            $(this).addClass("before prefix_" + (i+1));
          });
        }, function() {
          $(this).nextAll().each(function(i) {
            $(this).removeClass("after prefix_" + (i+1));
          });
          $(this).prevAll().each(function(i) {
            $(this).removeClass("before prefix_" + (i+1));
          });
        });
        /* add the "flip" function */
        $(".fan li").click(function(){
          $(this).find(".card").addClass("flipped").mouseleave(function(){
            $(this).removeClass("flipped");
          });
          return false;
        });
        /* set the card's data + bgcolor */
        $(".face.front").each(function(){
          $(this).css("background",$(this).data("bgcolor"));
          $(this).html($(this).data("bgcolor"));
        });
        $("a[rel='external']").attr("target", "_blank");
      });

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

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