hovertile
Version:
A port of Mary Lou's hover tiles to React
83 lines (70 loc) • 1.54 kB
CSS
figure.steve {
z-index: auto;
overflow: visible;
background: #000;
}
figure.steve:before,
figure.steve .content:before {
position: absolute;
top: 0;
left: 0;
z-index: -1;
width: 100%;
height: 100%;
background: #000;
content: '';
-webkit-transition: opacity 0.35s;
transition: opacity 0.35s;
}
figure.steve:before {
box-shadow: 0 3px 30px rgba(0,0,0,0.8);
opacity: 0;
}
figure.steve figcaption {
z-index: 1;
}
figure.steve img {
opacity: 1;
-webkit-transition: -webkit-transform 0.35s;
transition: transform 0.35s;
-webkit-transform: perspective(1000px) translate3d(0,0,0);
transform: perspective(1000px) translate3d(0,0,0);
}
figure.steve .content,
figure.steve .hoverContent {
background: #fff;
color: #2d434e;
}
figure.steve .content {
position: relative;
margin-top: 2em;
padding: 0.25em;
}
figure.steve .content:before {
box-shadow: 0 1px 10px rgba(0,0,0,0.5);
}
figure.steve .hoverContent {
margin-top: 1em;
padding: 0.5em;
font-weight: 800;
opacity: 0;
-webkit-transition: opacity 0.35s, -webkit-transform 0.35s;
transition: opacity 0.35s, transform 0.35s;
-webkit-transform: scale3d(0.9,0.9,1);
transform: scale3d(0.9,0.9,1);
}
figure.steve:hover:before {
opacity: 1;
}
figure.steve:hover img {
-webkit-transform: perspective(1000px) translate3d(0,0,21px);
transform: perspective(1000px) translate3d(0,0,21px);
}
figure.steve:hover .content:before {
opacity: 0;
}
figure.steve:hover .hoverContent {
opacity: 1;
-webkit-transform: scale3d(1,1,1);
transform: scale3d(1,1,1);
}