$('.menu-btn').on('click', function(e) {
e.preventDefault();
$(this).toggleClass('menu-btn_active');
$('.menu-nav').toggleClass('menu-nav_active');
});
body {
font-family: sans-serif;
margin: 0;
}
.section {
height: 100vh;
background-color: #7b1fa2;
display: flex;
justify-content: center;
align-items: center;
}
.menu-btn {
display: block;
width: 50px;
height: 50px;
background-color: #fff;
border-radius: 50%;
position: relative;
}
.menu-btn span,
.menu-btn span::before,
.menu-btn span::after {
position: absolute;
top: 50%;
margin-top: -1px;
left: 50%;
margin-left: -10px;
width: 20px;
height: 2px;
background-color: #222;
}
.menu-btn span::before,
.menu-btn span::after {
content: '';
display: block;
transition: .2s;
}
.menu-btn span::before {
transform: translateY(-5px);
}
.menu-btn span::after {
transform: translateY(5px);
}
.menu-btn_active span {
height: 0;
}
.menu-btn_active span::before {
transform: rotate(-45deg);
}
.menu-btn_active span::after {
transform: rotate(45deg);
}
.menu-block {
display: flex;
justify-content: center;
align-items: center;
overflow: hidden;
border-top-right-radius: 50px;
border-bottom-right-radius: 50px;
}
.menu-nav {
background-color: #fff;
text-decoration: none;
height: 50px;
text-decoration: none;
border-top-left-radius: 50px;
border-bottom-left-radius: 50px;
padding-left: 20px;
padding-right: 45px;
margin-right: -45px;
transition: .5s;
transform: scaleX(0) translateX(0%);
transform-origin: right center;
opacity: 0;
line-height: 50px;
}
.menu-nav__link {
display: inline-block;
text-decoration: none;
color: #222;
margin-right: 20px;
}
.menu-nav_active {
transform: scaleX(1) translateX(0%);
opacity: 1;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="section">
<div class="menu-block">
<div class="menu-nav">
<a class="menu-nav__link" href="#">Home</a>
<a class="menu-nav__link" href="#">Portfolio</a>
<a class="menu-nav__link" href="#">About</a>
<a class="menu-nav__link" href="#">Contacts</a>
</div>
<a href="#" class="menu-btn">
<span></span>
</a>
</div>
</div>