JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://code.jquery.com/jquery-2.1.4.js"></script>
<div class="resume_contact_info_wrapper">
<div class="resume_contact_info">
<div class="front">
<div class="resume_abbr">
<p>Email |</p>
<p>Phone |</p>
<p>Located |</p>
<p>Website |</p>
</div>
<div class="resume_abbr_info">
<p>[email protected]</p>
<p>(550)555-5555</p>
<p>Some State</p>
<p><a href="#">Example.com</a></p>
</div>
<div class="resume_hire">
<a href="#">View Portfolio</a>
<a href="#">View as PDF</a>
<p>→ Check Availability ←</p>
</div>
</div>
<div class="back">
<div class="schedule">
<p>Availability Calendar 2016</p>
</div>
<div class="resume_abbr">
<p>Jan |</p>
<p>Feb |</p>
<p>Mar |</p>
<p>Apr |</p>
<p>May |</p>
<p>Jun |</p>
<p>Jul |</p>
<p>Aug |</p>
<p>Sep |</p>
<p>Oct |</p>
<p>Nov |</p>
<p>Dec |</p>
</div>
<div class="resume_abbr_info">
<p>Expired</p>
<p>Expired</p>
<p class="unavailable">Unavailable</p>
<p class="unavailable">Unavailable</p>
<p class="unavailable">Unavailable</p>
<p class="available">Available</p>
<p class="available">Available</p>
<p class="available">Available</p>
<p class="available">Available</p>
<p class="available">Available</p>
<p class="available">Available</p>
<p class="available">Available</p>
</div>
<div class="resume_hire">
<p>→ Flip Back ←</p>
</div>
</div>
</div>
</div>
CSS
*,
*:before,
*:after {
padding: 0;
margin: 0;
box-sizing: border-box;
}
.resume_contact_info_wrapper {
width: 35%;
min-height: 168px;
padding: 0;
margin: 0;
float: left;
transition: all 0.2s;
perspective: 800px;
/* IE fix - Without this, flip animation is not seen */
-ms-transform: perspective(800px) rotateY(0);
}
.resume_contact_info {
width: 100%;
padding: 0;
margin: 0;
float: left;
}
.front,
.back {
width: 100%;
padding: 0 0 10px 0;
margin: 0;
background: #DDD;
box-shadow: inset 0 1px #FFF, 0 -1px #000, 0 1px #D1D1D1, -1px 0 #000, 1px 0 #C5C5C5;
border: 5px solid rgba(0, 0, 0, 0.7);
border-radius: 3px;
backface-visibility: hidden;
transition: all 0.4s;
transform-style: preserve-3d;
position: absolute;
top: 0;
}
.back {
transform: rotateY(-180deg);
}
.flipped .back {
transform: rotateY(0deg);
}
.flipped .front {
transform: rotateY(180deg);
}
.resume_abbr {
width: 35%;
padding: 0;
margin: 0;
float: left;
}
.resume_abbr p {
width: 100%;
padding: 0;
margin: 0;
float: left;
color: #666;
font-size: .9em;
font-weight: bold;
text-align: right;
text-shadow: 1px 1px #F1F1F1;
cursor: default;
}
.resume_abbr p:first-child {
padding: 10px 0 0 0;
}
.resume_abbr_info {
width: 65%;
padding: 0;
margin: 0;
float: left;
}
.resume_abbr_info p {
width: 100%;
padding: 0 0 0 5px;
margin: 0;
float: left;
color: #777;
font-size: .9em;
text-shadow: 1px 1px #F1F1F1;
cursor: default;
}
.resume_abbr_info p:first-child {
padding: 10px 0 0 5px;
}
.resume_abbr_info p.available {
color: #27AE60;
}
.resume_abbr_info p.unavailable {
color: #C0392B;
}
.resume_abbr_info p a {
float: none;
color: #28F;
}
.resume_abbr_info p a:hover {
text-decoration: underline;
}
.schedule {
width: 100%;
padding: 0;
margin: 10px 0 0 0;
float: left;
}
.schedule p {
width: 100%;
padding: 0;
margin: 0;
float: left;
font-size: .9em;
font-weight:...
JavaScript
/*!
* Author: Michael R. Draemel
* http://draemel.com/
*/
$('.resume_hire p').click(function() {
$('.resume_contact_info').toggleClass('flipped');
});