Skip to content

Instantly share code, notes, and snippets.

@vpodk
Created April 27, 2020 02:24
Show Gist options
  • Save vpodk/b77bd5a5c3b9f5d445d85501004cb1d4 to your computer and use it in GitHub Desktop.
Save vpodk/b77bd5a5c3b9f5d445d85501004cb1d4 to your computer and use it in GitHub Desktop.
Clean Application - Hamburger Menu
nav {
display: block;
float: right;
left: -1em;
padding-top: .2em;
position: absolute;
user-select: none;
width: 100%;
z-index: 1;
-webkit-user-select: none;
}
nav input,
nav .hamburger {
height: 32px;
position: absolute;
right: 0;
width: 40px;
}
nav input {
display: block;
opacity: 0;
z-index: 2;
-webkit-touch-callout: none;
}
nav .hamburger span,
nav .hamburger span:before,
nav .hamburger span:after {
border-radius: 4px;
height: 2px;
position: absolute;
transition: transform .15s ease;
width: 35px;
}
nav .hamburger span {
display: block;
margin-top: 8px;
transition-duration: .4s;
transition-timing-function: cubic-bezier(.68, -.55, 0.265, 1.55);
}
nav .hamburger span:before,
nav .hamburger span:after {
content: "";
display: block;
}
nav .hamburger span:before {
top: 10px;
transition: opacity .15s .4s ease;
}
nav .hamburger span:after {
bottom: -10px;
top: 20px;
transition: transform .4s cubic-bezier(.68, -.55, .265, 1.55);
}
nav ul {
bottom: 0;
left: 0;
list-style-type: none;
opacity: 0;
padding: 2.5em 1em;
position: fixed;
right: 0;
top: 4em;
transform-origin: 0% 0%;
transform: translate(0, -200%);
transition: transform 0.5s cubic-bezier(0.77, 0.2, 0.05, 1.0), opacity 0.5s ease-out;
text-align: right;
width: 100%;
-webkit-font-smoothing: antialiased;
z-index: 99;
}
nav input:checked ~ ul {
opacity: .95;
transform: none;
z-index: 99;
}
nav input:checked ~ .hamburger span {
transform: translate3d(0, 10px, 0) rotate(135deg);
transition-delay: 0.1s;
}
nav input:checked ~ .hamburger span:before {
opacity: 0;
transition-delay: 0s;
}
nav input:checked ~ .hamburger span:after {
transform: translate3d(0, -20px, 0) rotate(-270deg);
transition-delay: .1s;
}
nav .menu a {
display: inline-block;
margin: 1em 0 0;
padding: 1em 1em .8em;
text-decoration: none;
text-transform: uppercase;
}
nav .menu .active,
nav .menu :active {
border-radius: 3px;
}
@media only screen and (min-width: 768px) {
nav .hamburger {display: none;}
nav, nav ul {padding: 0; position: static; margin: 0; width: auto;}
nav ul {opacity: 1; margin-top: -1em; transform: none; transition: none;}
nav li {display: inline-block;}
nav .menu .active {margin: 1em;}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment