<div class="product-card-container">
  <div class="product-card">
    <div class="info-icon-container">
      <div class="info-icon">
        <div class="bar-1"></div>
        <div class="bar-2"></div>
        <div class="bar-3"></div>
      </div>
<!--      <p>Customize</p> -->
    </div>
    
    <div class="header">
      <h1>Headphones</h1>
      <button>Add To Bag <i class="fa fa-shopping-bag"></i></button>
      <em>$70.00</em>
    </div> <!-- end of header -->
    <div class="product-img">
      <img src="https://goo.gl/HfpFyP" alt="" />
    </div>
    <div class="bg-img">
      <img src="https://goo.gl/U7XMDL" alt="" />
    </div>
    
  </div> <!-- end of product-card -->
</div><!-- end of product-card-container -->

<!-- <p class="coords"></p>
<p class="coords-2"></p> -->
*,
*:before,
*:after {
  box-sizing: border-box;
}

$ease: ease;

body {
  font-family: montserrat;
  perspective: 1000px;
  transform-style: preserve-3d;
  background: #eee;
}

.product-card-container {
  width: 100%;
  height: 100vh;
  display: flex;
  justify-content: center;
  align-items: center;
  perspective: 850px;
  
  .product-card {
    width: 25em;
    height: 25em;
    background: #ccc;
    position: relative;
    padding: 2em;
    display: flex;
    justify-content: center;
    align-items: center;
    position: relative;
    transform-style: preserve-3d;
    &:after {
      content: "";
      width: 100%;
      height: 10px;
      border-radius: 50%;
      position: absolute;
      left: 0;
      bottom: -60px;
      box-shadow: 0 20px 20px rgba(0,0,0,.3);
    }
    .info-icon-container {
      $long-W: 30px;
      $short-W: 20px;
      $line-margin: 10px;
      cursor: pointer;
      position: absolute;
      top: 0;
      left: 0;
      margin: 1em 1em;
      z-index: 3;
      height: 30px;
      display: flex;
      align-items: center;
      justify-content: center;
      transform: translateZ(20px);
      &:hover {
        .info-icon {
          .bar-1 {
            width: #{$long-W * 1.5};
          }
          .bar-2 {
            width: #{$long-W * 1.2};
          }
          .bar-3 {
            width: #{$long-W };
          }
        } 
      }
      .info-icon {
        cursor: pointer;
        position: relative;
        background: red;
        
        .bar-1, 
        .bar-2, 
        .bar-3 {
          background: white;
          //width: $short-W;
          height: 1px;
          transition: all .4s $ease;
        }
        
        .bar-2 {
          width: $long-W;
        }
        
        .bar-1,
        .bar-3 {
          width: $short-W;
          position: absolute;
        }
        
        .bar-1 {
          top: $line-margin;
        }
        
        .bar-3 {
          bottom: $line-margin;
        }
      }
      p {
        font-size: .8rem;
        font-weight: 300;
        letter-spacing: .2rem;
        margin-left: $long-W;
        
      }
    }
    
    &::before {
        content: "";
        background: rgba(0,0,0,.8);
        position: absolute;
        top: 0;
        bottom: 0;
        left: 0;
        right: 0;
        z-index: 2;
      }
    .header {
      display: flex;
      flex-direction: column;
      z-index: 2;
      position: relative;
      color: white;
      
      h1 {
        font-size: 2em;
        text-transform: uppercase;
        font-weight: 700;
        margin-bottom: 1rem;
        transform: translateZ(50px);
      }
      button {
        color: white;
        border-radius: 50px;
        border: 1px solid white;
        background: rgba(0,0,0,0);
        width: 15em;
        height: 3em;
        margin: 0 auto;
        text-transform: uppercase;
        letter-spacing: .15rem;
        display: flex;
        align-items: center;
        justify-content: center;
        cursor: pointer;
        margin-bottom: 1rem;
        transition: all .3s ease-in-out;
        transform: translateZ(10px);
        &:hover {
          transform: translateZ(100px);
          background: white;
          color: black;
        }
        &:focus {
          outline: none;
        }
        .fa-shopping-bag {
          margin-left: 1rem;
          transform: translateZ(50px);
        }
      }
      em {
        font-style: italic;
        text-align: center;
        font-weight: 300;
        transform: translateZ(20px);
      }
    }
    .product-img {
      position: absolute;
      display: flex;
      align-items: center;
      justify-content: center;
      bottom: -5rem;
      z-index: 3;
      transition: all .3s ease-in-out;
      perspective: 850px;
      transform: translateZ(40px);
      img {
        width: 15em;
        filter: drop-shadow(0px 5px 5px rgba(black, .5));
      }
      &:after {
        content: "";
        width: 100%;
        height: 10px;
        border-radius: 50%;
        position: absolute;
        left: 0;
        bottom: -10px;
        //box-shadow: 0 20px 20px rgba(0,0,0,.3);
      }
    }
    .bg-img {
      width: 100%;
      height: 100%;
      overflow: hidden;
      position: absolute;
      img {
        width: 25em;
        z-index: 1;
      }
    }
    
  }
}

.coords, .coords-2 {
  position: absolute;
  bottom: 0;
  left: 0;
  margin: 1rem;
}

.coords-2 {
  margin-bottom: 2rem;
}
View Compiled
const card = $('.product-card'),
      coord = $('.coords'),
      coord2 = $('.coords-2')

$(document).on('mousemove', function(e) {
  let ax = -($(window).innerWidth()/2 - e.pageX)/20,
      ay = ($(window).innerHeight()/2 - e.pageY)/20
  card.css({
    transform: `rotateY(${ax}deg) rotateX(${ay}deg)`
  });
  // coord.text(`ax: ${ax}, ay: ${ay}`)
  coord.text(`half x: ${-($(window).innerWidth()/2 - e.pageX)}`)
  coord2.text(`pageX: ${e.pageX}, pageY: ${e.pageY}`)
})
View Compiled

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js