Yesterday I used a snippet of from hover.css. I know CSS well enough to understand what is going on here, except one line, which is transform: perspective(1px) translateZ(0);
. I've tried to feed the exact values to this demo on MDN, however, it gave me a crazy result. (I suspect that this is some kind of render sub-optimization (such as transform: scale(0.99)
, which I slightly remember to have seen before), but I might be wrong. Or a stacking context?). Can anybody explain? Thanks.
.hvr-underline-reveal {
display: inline-block;
vertical-align: middle;
transform: perspective(1px) translateZ(0); /* <-- what is going on here? */
box-shadow: 0 0 1px rgba(0, 0, 0, 0);
position: relative;
overflow: hidden;
}
.hvr-underline-reveal:before {
content: "";
position: absolute;
z-index: -1;
left: 0;
right: 0;
bottom: 0;
background: #2098D1;
height: 4px;
transform: translateY(4px);
transition: transform 0.3s ease-out;
}
.hvr-underline-reveal:hover:before {
transform: translateY(0);
}
<div class="hvr-underline-reveal">You'll see a thick underline if you hover me</div>
<p>But do I really need perspective and Z axis transition? What is it good for?</p>