JSFiddle - React, Tailwind, and code Playground
HTML
<div class="toster">
<div class="top top-item">
</div>
<div class="bottom transition-transform">
<div class="bottom-wrap transition-transform bottom-item">
<img src="https://toster.ru/images/favicons/apple-touch-icon-72x72.png" alt="Toster">
</div>
</div>
</div>
CSS
/* core */
.toster {
position: relative;
overflow: hidden;
width: 250px;
height: 250px;
}
.toster .transition-transform {
-webkit-transition: transform 200ms ease-in-out;
-moz-transition: transform 200ms ease-in-out;
-ms-transition: transform 200ms ease-in-out;
-o-transition: transform 200ms ease-in-out;
transition: transform 200ms ease-in-out;
-webkit-backface-visibility: hidden;
}
.toster > .bottom {
width: 142%;
height: 142%;
-webkit-transform: rotate(45deg);
-moz-transform: rotate(45deg);
-ms-transform: rotate(45deg);
-o-transform: rotate(45deg);
transform: rotate(45deg);
position: absolute;
overflow: hidden;
top: 29%;
left: 29%;
}
.toster > .top {
width: 100%;
height: 100%;
position: relative;
}
.toster .bottom-wrap {
width: 70.7106%;
height: 70.7106%;
-webkit-transform: rotate(-45deg);
-moz-transform: rotate(-45deg);
transform: rotate(-45deg);
position: relative;
top: 14.9%;
left: -35.25%;
}
.toster > .top:hover + .bottom {
-webkit-transform: rotate(45deg) translate3d(50%, 0, 0);
-moz-transform: rotate(45deg) translate3d(50%, 0, 0);
-ms-transform: rotate(45deg) translate3d(50%, 0, 0);
-o-transform: rotate(45deg) translate3d(50%, 0, 0);
transform: rotate(45deg) translate3d(50%, 0, 0);
}
.toster > .bottom:hover {
-webkit-transform: rotate(45deg) translate3d(-50%, 0, 0);
-moz-transform: rotate(45deg) translate3d(-50%, 0, 0);
-ms-transform: rotate(45deg) translate3d(-50%, 0, 0);
-o-transform: rotate(45deg) translate3d(-50%, 0, 0);
transform: rotate(45deg) translate3d(-50%, 0, 0);
}
.toster > .bottom:hover > .bottom-wrap {
-webkit-transform: rotate(-45deg) translate3d(50%, 50%, 0);
-moz-transform: rotate(-45deg) translate3d(50%, 50%, 0);
-ms-transform: rotate(-45deg) translate3d(50%, 50%, 0);
-o-transform: rotate(-45deg) translate3d(50%, 50%, 0);
transform:...