Based on this Dribbble shot.
https://dribbble.com/shots/2427219-Header-Navigation-Day-053-dailyui
A Pen by ssbalakumar on CodePen.
.menu | |
.container | |
.toggle | |
span.hidden | |
a(href='#') Home | |
span.hidden | |
a(href='#') About | |
span.hidden | |
a(href='#') Info | |
span.hidden | |
a(href='#') Contact |
$('.toggle').on('click', function() { | |
$('.menu').toggleClass('expanded'); | |
$('span').toggleClass('hidden'); | |
$('.container , .toggle').toggleClass('close'); | |
}); |
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> |
$size: 36px; // Change Me | |
$height: $size / 8; | |
$margin: $size / 3.2; | |
$toggle: ($size + $margin*2) * 1.5; | |
body { | |
display: flex; | |
justify-content: center; | |
align-items: center; | |
background: #1D90F5; | |
min-height: 100vh; | |
margin: 0; | |
font-family: roboto; | |
&:before { | |
content: ''; | |
background: #E8FAFF; | |
height: 50%; | |
width: 100%; | |
position: absolute; | |
top: 0; | |
left: 0; | |
} | |
} | |
.menu { | |
display: block; | |
box-sizing: border-box; | |
background: white; | |
height: $toggle; | |
width: $toggle; | |
padding: $size; | |
border-radius: $size/6; | |
overflow: hidden; | |
position: relative; | |
box-shadow: 0 8px 22px rgba(0, 0, 0, 0.15); | |
transition: 1.3s cubic-bezier(.53,0,.15,1.3); | |
&.expanded { | |
width: $toggle*4; | |
} | |
} | |
span { | |
padding: $size/4; | |
white-space: nowrap; | |
visibility: visible; | |
opacity: 1; | |
transition: .3s; | |
transform: rotateY(0deg); | |
&:nth-of-type(1) { | |
transition-delay: .4s; | |
} | |
&:nth-of-type(2) { | |
transition-delay: .5s; | |
} | |
&:nth-of-type(3) { | |
transition-delay: .6s; | |
} | |
&:nth-of-type(4) { | |
transition-delay: .7s; | |
} | |
&.hidden { | |
width: 0; | |
visibility: hidden; | |
opacity: 0; | |
transform: rotateY(90deg); | |
&:nth-of-type(1) { | |
transition-delay: .3s; | |
} | |
&:nth-of-type(2) { | |
transition-delay: .2s; | |
} | |
&:nth-of-type(3) { | |
transition-delay: .1s; | |
} | |
&:nth-of-type(4) { | |
transition-delay: 0s; | |
} | |
} | |
a { | |
color: black; | |
text-decoration: none; | |
font-size: $size/2.2; | |
transition: .3s; | |
&:hover { | |
color: #1D90F5; | |
} | |
} | |
} | |
.container { | |
position: absolute; | |
top: #{($toggle - ($margin*3 + $height*2)) / 2}; | |
right: calc(100% - #{($toggle - ($size + $margin*2)) / 2 + ($size + $margin*2)}); | |
height: $height*2 + $margin*3; | |
width: $size + $margin*2; | |
transition: 1s; | |
&.close { | |
right: 0; | |
} | |
} | |
.toggle { | |
position: relative; | |
height: $margin*3 + $height*2; | |
width: $margin*2 + $size; | |
cursor: pointer; | |
&:after, | |
&:before { | |
content: ''; | |
background: #1D90F5; | |
width: $size; | |
height: $height; | |
margin: auto; | |
position: absolute; | |
top: 0; bottom: 0; | |
right: 0; left: 0; | |
transition: 1.3s | |
cubic-bezier(.53,0,.15,1.3); | |
//cubic-bezier(.52,-0.39,.55,1.41); | |
} | |
&:before { top: -30%; } | |
&:after { top: 30%; } | |
&.close:before { | |
transform: rotate(-225deg); | |
top: 0; | |
} | |
&.close:after { | |
transform: rotate(225deg); | |
top: 0; | |
} | |
} |