- cards = [{ title: 'Departure from Wilanów', date: 1887, author: 'Józef Brandt', info: 'of John III Sobieski and Marysienka'},
           { title: 'Shiba Zôjôji', date: 1925, author: 'Hasui Kawase', info: 'from series "12 views of Tokyo"'},
           { title: 'Das große Rasenstück', date: 1503, author: 'Albrecht Dürer', info: 'study of wild plants'},
           { title: 'Długa Street', date: 1780, author: 'Bernardo Bellotto', info: "painted by king Stanisław August's court painter"}]

.screen
  - cards.each do |card|
    .card
      .front-box
        %h1 #{card[:title]}
        %p #{card[:info]}
      .details-1
        %p #{card[:author]}
      .details-2
        %p ~ #{card[:date]} ~
View Compiled
$bg-color:     #202B2E
$accent-color: #D8303D

$paintings: (1: 'https://upload.wikimedia.org/wikipedia/commons/1/19/Brandt_Departure_from_Wilan%C3%B3w.jpg', 2: 'https://upload.wikimedia.org/wikipedia/commons/thumb/8/8d/Kawase_Z%C3%B4j%C3%B4ji.jpg/398px-Kawase_Z%C3%B4j%C3%B4ji.jpg', 3: 'https://upload.wikimedia.org/wikipedia/commons/thumb/f/f6/Albrecht_D%C3%BCrer_-_The_Large_Piece_of_Turf%2C_1503_-_Google_Art_Project.jpg/467px-Albrecht_D%C3%BCrer_-_The_Large_Piece_of_Turf%2C_1503_-_Google_Art_Project.jpg', 4: 'https://upload.wikimedia.org/wikipedia/commons/e/ed/Bellotto_Bridgettine_Church_and_Arsenal.jpg?1465410364618')

%details
  background-color: white
  position: relative
  height: 70px
  z-index: -10
  transition: all .5s ease-in-out
  display: flex

html
  background-color: $bg-color
  display: flex
  justify-content: center
  align-items: center
  height: 100vh
  font-family: 'IM Fell French Canon'
  
body
  perspective: 800px

body *
  transform-style: preserve-3d

p, h1
  margin: 0
  font-weight: 700

.screen
  width: 400px
  margin: 50px
  padding-top: 120px
  background: transparent
  transform: rotate3d(0,1,0, -0deg)
  .card
    margin: 0
    height: 200px
    transition: height .5s ease-in-out
    @each $id, $painting in $paintings
      &:nth-of-type(#{$id})
        .front-box
          background: linear-gradient(rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url($painting)
          background-size: cover
    
    .front-box
      height: 200px
      box-sizing: border-box
      display: flex
      flex-direction: column
      justify-content: center
      align-items: center
      overflow: hidden
      &:hover
        cursor: pointer
        h1
          border-bottom: 2px solid $accent-color
        p
          opacity: 1
      h1
        border-bottom: 2px solid transparent
        padding-bottom: 5px
        top: 55px
        left: 20px
        color: white
        z-index: 20
        transition: all .4s ease-in-out
      p
        color: white
        font-style: italic
        padding-top: 10px
        font-weight: 400
        opacity: 0
        transition: all .5s ease-in-out .2s
          
      .img-wrapper
        height: 200px
        overflow: hidden
        width: 100%
        height: 100%    
    .details-1
      @extend %details
      transform: rotate3d(1, 0, 0, -90deg)
      transform-origin: top
      box-shadow: inset 0px -45px 52px 0px rgba(0,0,0,0.75)
      p
        margin: auto
    .details-2
      @extend %details
      transform: translate3d(0, -140px, 0px) rotate3d(1, 0, 0, 90deg)
      transform-origin: bottom
      box-shadow: inset 0px 0px 100px 30px rgba(0,0,0,0.75)
      p
        margin: auto
  
.unfold
  height: 70px
  transform: translate3d(0, 0, 0) rotate3d(0, 0, 0, 0deg) !important
  box-shadow: inset 0px -45px 52px -70px rgba(0,0,0,0.75) !important

.span
  height: 340px !important

  

        
View Compiled
$(document).ready(function(){
    $('.card').click(function(){
        $(this).find('.details-1, .details-2').toggleClass('unfold').parents('.card').siblings().children('.details-1, .details-2').removeClass('unfold');
        $(this).toggleClass('span').siblings('.card').removeClass('span');
    });
});

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://code.jquery.com/jquery-2.2.4.min.js