<h1 class="name">
	<span class="copy-wrap">
		Paul DeCotiis
  	</span>
</h1>

<div class="square"></div>

<div class="card">
	<div class="card-title-wrap">
		<h1 class="title">
			<span class="copy-wrap">
				Photography
			</span>
		</h1>	
		<button class="btn hide">
			View
		</button>
	</div>
	<div class="card-img"></div>
</div>

<h2 class="copyright">
	<span class="copy-wrap">
    	20&nbsp;&nbsp;&nbsp;&nbsp;17
	</span>
</h2>
/*

    CSS3 Page Transition
    --------------------------------------------------

    Table of Contents
    --------------------------------------------------
    :: 1.0 - #Utilities
    :: 1.1 - #Scaffolding
    :: 1.2 - #Modifiers
    :: 1.3 - #Square
    :: 1.4 - #Button
    :: 1.5 - #Type

*/

//--------------------------------------------------
// 1.0 - #Utilities
//--------------------------------------------------

* {
  box-sizing: border-box;
}

.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  border: 0;
}

.hide {
  display: none;
}

//--------------------------------------------------
// 1.1 - #Scaffolding
//--------------------------------------------------

html,
body {
	height: 100%;
}

body {
  background-color: white;
  margin: 0;
  color: #212121;
  transition: background-color 1s cubic-bezier(0.46, 0.03, 0.52, 0.96);
	transform: perspective(600px);
  font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	will-change: transform;
}

//--------------------------------------------------
// 1.2 - #Modifiers
//--------------------------------------------------

.is-open {
	color: white;
	background-color: #212121;

	.square {
		padding: 0;
	}
	
	.card {
		transform: scale(1);
		// top: 0;
		// left: 0;
		// margin: 0;
		// // bottom: 0;
		// transform: translate3d(0,0,0);
	}
	
	.card:hover {
		mix-blend-mode: normal;
		opacity: 1;
		filter: grayscale(0);
	}
  
	.copy-wrap {
		transform: translate3d(0,-100%,0);
	}

	.title {
		color: white;
		mix-blend-mode: normal;
	}
  
  .btn {
    &:hover {
      background-color: #212121;
      color: white;
      .btn-icon {
        fill: white;
      }  
    }
  }
}

//--------------------------------------------------
// 1.3 - #Square
//--------------------------------------------------

.square {
  cursor: pointer;
  border: solid 0px transparent;
  padding: 120px;
  width: 100%; 
  height: 100%;
  transform: translate3d(-50%,-50%,0);
  position: absolute;
  top: 50%;
  left: 50%;
  background: linear-gradient(230deg,#a24bcf,#4b79cf,#4bc5cf);
  background-clip: content-box;
  background-size: 400% 400%;
  border-color: currentColor; 
  animation: partytime 7s cubic-bezier(0.46, 0.03, 0.52, 0.96) infinite;  
  transition: padding 1s cubic-bezier(0.215, 0.61, 0.355, 1);
  will-change: transform;
}

@keyframes partytime { 
    0%{background-position:83% 0%}
    50%{background-position:18% 100%}
    100%{background-position:83% 0%}
}

.card {
	width: 100%;
	height: 100%;
	background-color: transparent;
	transition: transform 1.25s cubic-bezier(0.215, 0.61, 0.355, 1), box-shadow 1.25s cubic-bezier(0.215, 0.61, 0.355, 1), box-shadow 1.25s cubic-bezier(0.215, 0.61, 0.355, 1),
		filter 1.25s cubic-bezier(0.215, 0.61, 0.355, 1), opacity 1.25s cubic-bezier(0.215, 0.61, 0.355, 1);
	transform: perspective(1600px) translate3d(0, 0, 0) scale(0.5);
	will-change: transform;
	cursor: pointer;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	position: relative;
	z-index: 400;
	&:hover {
		box-shadow: 0 0 75px rgba(0, 0, 0, 0.20), 0 5px 20px rgba(0, 0, 0, 0.2);		
		mix-blend-mode: hard-light;
		filter: grayscale(100%);
		opacity: 0.8;
	}
}

.card-title-wrap {
	transform: perspective(1600px) translate3d(0, 0, 100px);
	position: relative;
	z-index: 200;
	transition: transform 0.25s linear;
}

.card-img {
	position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background-size: cover;
    background-position: 50% 50%;
	background-image: url(https://www.pauldecotiis.com/assets/img/contact/img-1.jpg?ts=1509977393);
    will-change: transform;
	transform: perspective(600px);
	z-index: 100;
	// opacity: 0.4;
	// display: none;
}

//--------------------------------------------------
// 1.4 - #Button
//--------------------------------------------------

.btn {
  position: absolute;
  top: 65%;
  left: 50%;
  transform: translate3d(-50%,-50%,0);
  transition: all .25s ease-in-out;
  border: 0;
  background-color: black;
  padding: 12px 24px;
  color: white;
  font-size: 14px;
  text-transform: uppercase;
  letter-spacing: 0.2em;
  mix-blend-mode: overlay;
  box-shadow: 0 0 25px rgba(0,0,0,0.8) 0 4px 12px rgba(0,0,0,0.9);
  will-change: transform;
  cursor: pointer;
  z-index: 900;
	margin-top: 60px;
  &:active,
  &:focus {
    outline: none;
  }
  
  &:hover {
    background-color: white;
    mix-blend-mode: normal;
    color: #212121;
    .btn-icon {
      fill: black;
    }
  }
}

.btn-icon {
  fill: white;
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate3d(-50%,-50%,0);
  transition: all .25s cubic-bezier(0.46, 0.03, 0.52, 0.96);
}

//--------------------------------------------------
// 1.5 - #Type
//--------------------------------------------------

.title {
	font-size: 120px;
	letter-spacing: 0.1em;
  	text-transform: uppercase;
  	margin: 0;
  	font-weight: 900;
  	overflow: hidden;
	color: black;
	mix-blend-mode: overlay;
}

.name,
.copyright {
  	text-transform: uppercase;
  	color: currentColor;
  	position: absolute;
  	left: 50%;
  	margin: 0; 
  	padding: 0;
  	transition: all .5s cubic-bezier(0.46, 0.03, 0.52, 0.96);
  	transform: translate3d(-50%,0,0);
  	font-weight: 800; 
  	overflow: hidden;
  	font-size: 16px;
  	font-weight: 800;
  	letter-spacing: 0.4em;
}

.name {
  	top: 53px;
}

.copy-wrap {
  	display: block;
  	transition: all 0.7s 0s ease-in-out;
	position: relative;
}

.copyright {
  bottom: 20px;
  overflow: hidden;
  height: 72px;
  line-height: 60px;
  position: fixed;
  .copy-wrap {
    &:before {
      content: "";
      width: 15px;
      height: 2px;
      background-color: currentColor;
      position: absolute;
      left: 50%; 
      top: 50%;
      transform: translate3d(-50%,-50%,0);
    }
  }
  
}
View Compiled
$(function () {
  	
	var EASE = Power4.easeOut;
	
	var Engine = {
		ui : {
			initBtn : function() {
				var card = $('.card, .btn');
				var body = $('body');
				var btn = $('.btn');

				card.on('click', function() {

					if (body.hasClass('is-open')) {
						body.removeClass('is-open');
						btn.html('View');
					} else {
					  	body.addClass('is-open');
					  	btn.html('close');
						TweenMax.set('.card', {clearProps: 'all'});
					}
				})		 
			},
			initHover : function(e) {
				$(document).on( "mousemove", ".card", function(e) {
					if ($('body').hasClass('is-open')) {
						e.preventDefault();
						// $('.card').attr('style', '').children('.card-title-wrap').attr('style', '');
					} else {
						var halfW = (this.clientWidth / 2);
						var halfH = (this.clientHeight / 2);

						var coorX = (halfW - (event.pageX - this.offsetLeft));
						var coorY = (halfH - (event.pageY - this.offsetTop));

						var degX  = ( ( coorY / halfH ) * 10 ) + 'deg'; // max. degree = 10
						var degY  = ( ( coorX / halfW ) * -10 ) + 'deg'; // max. degree = 10

						$(this).css('transform', function() {
							return 'perspective(1600px) translate3d(0, 0px, 0) scale(0.6) rotateX('+ degX +') rotateY('+ degY +')';
						}).children('.card-title-wrap').css( 'transform', function() {
							return 'perspective(1600px) translate3d(0, 0, 200px) rotateX('+ degX +') rotateY('+ degY +')';
						});
					}
				}).on( "mouseout", ".card", function() {
					$(this).removeAttr('style').children('.card-title-wrap').removeAttr('style');
				});
				
				
			}
		}
	};

	Engine.ui.initBtn();
	Engine.ui.initHover();

})

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.0/jquery.min.js
  2. https://cdnjs.cloudflare.com/ajax/libs/gsap/1.19.0/TweenMax.min.js