Опираясь на хороший ответ @ TermaniAfif, я нахожу хорошим, если средняя линия остается на месте, а X выровнена по центру:
.hamb span {
background-color: black;
width: 50px;
height: 5px;
display: block;
margin-bottom: 10px;
transition: 0.5s;
}
.hamb:hover span:nth-child(1) {
transform: rotate(45deg) translateY(10px) translateX(11px);
}
.hamb:hover span:nth-child(3) {
transform: rotate(-45deg) translateY(-10px) translateX(11px);
}
.hamb:hover span:nth-child(2) {
opacity: 0;
}
.hamb:hover {
cursor: pointer;
}
<div class="hamb">
<span></span>
<span></span>
<span></span>
</div>