<div class="wrapper">
<a href="#" class="close-button">
<div class="in">
<div class="close-button-block"></div>
<div class="close-button-block"></div>
</div>
<div class="out">
<div class="close-button-block"></div>
<div class="close-button-block"></div>
</div>
</a>
</div>
body {
background: #121212;
}
$button-size: 40px;
$close-width: ($button-size / 10);
.wrapper {
width: 100vw;
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
}
.close-button {
display: block;
width: $button-size;
height: $button-size;
position: relative;
overflow: hidden;
> div {
position: relative;
}
&-block {
width: 40px;
height: 20px;
position: relative;
overflow: hidden;
&:before,
&:after {
content: '';
position: absolute;
bottom: 0;
left: calc(55% - 4px);
display: block;
width: 4px;
height: 25px;
transform-origin: bottom center;
background: white;
transition: all ease-out 280ms;
}
&:last-of-type {
transform: rotate(180deg);
}
}
.in {
.close-button-block {
&:before {
transition-delay: 280ms;
transform: translateX(20px) translateY(-20px) rotate(45deg);
}
&:after {
transition-delay: 280ms;
transform: translateX(-22px) translateY(-22px) rotate(-45deg);
}
}
}
.out {
position: absolute;
top: 0;
left: 0;
.close-button-block {
&:before {
transform: translateX(-5px) translateY(5px) rotate(45deg);
}
&:after {
transform: translateX(5px) translateY(5px) rotate(-45deg);
}
}
}
&:hover {
.in {
.close-button-block {
&:before {
transform: translateX(-5px) translateY(5px) rotate(45deg);
}
&:after {
transform: translateX(5px) translateY(5px) rotate(-45deg);
}
}
}
.out {
.close-button-block {
&:before {
transform: translateX(-20px) translateY(20px) rotate(45deg);
}
&:after {
transform: translateX(20px) translateY(20px) rotate(-45deg);
}
}
}
}
}
View Compiled
This Pen doesn't use any external CSS resources.