Direções Hover
by Marcos vini
HTML
<div class="box">
<div class="box__right">Direita → Esquerda</div>
<div class="box__left">Esquerda → Direita</div>
<div class="box__top">Cima → Baixo</div>
<div class="box__bottom">Baixo → Cima</div>
<div class="box__center">
Passe o mouse sobre
</div>
</div>
CSS
.box {
margin: 5em auto;
position: relative;
width: 10em;
height: 10em;
line-height: 10em;
overflow: hidden;
}
.box__right, .box__left, .box__top, .box__bottom, .box__center {
position: absolute;
width: inherit;
height: inherit;
text-align: center;
line-height: inherit;
transition: transform .4s ease;
}
.box__right:before, .box__left:before, .box__top:before, .box__bottom:before, .box__center:before {
position: absolute;
content: '';
width: 70.71%;
height: 70.71%;
transform: rotate(45deg);
}
.box__right:hover, .box__left:hover, .box__top:hover, .box__bottom:hover, .box__center:hover {
transform: translateX(0);
z-index: 1;
}
.box__right:hover:before, .box__left:hover:before, .box__top:hover:before, .box__bottom:hover:before, .box__center:hover:before {
width: 100%;
height: 100%;
transform: none;
}
.box__right {
background: blue;
transform: translateX(100%);
}
.box__right:before {
right: 100%;
bottom: 0;
transform-origin: 100% 100%;
}
.box__right:hover ~ .box__center {
transform: translateX(-100%);
}
.box__left {
background: green;
transform: translateX(-100%);
}
.box__left:before {
left: 100%;
transform-origin: 0 0;
}
.box__left:hover ~ .box__center {
transform: translateX(100%);
}
.box__top {
background: red;
transform: translateY(-100%);
}
.box__top:before {
top: 100%;
right: 0;
transform-origin: 100% 0;
}
.box__top:hover ~ .box__center {
transform: translateY(100%);
}
.box__bottom {
background: yellow;
transform: translateY(100%);
}
.box__bottom:before {
bottom: 100%;
left: 0;
transform-origin: 0 100%;
}
.box__bottom:hover ~ .box__center {
transform: translateY(-100%);
}
.box__center {
background: orange;
z-index: -1;
}