Skip to content

Instantly share code, notes, and snippets.

@besimhu
Last active August 29, 2015 14:17
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save besimhu/397720af15c005f98597 to your computer and use it in GitHub Desktop.
Save besimhu/397720af15c005f98597 to your computer and use it in GitHub Desktop.
A sample hamburger menu for mobile that animates into an "X" for when active.
module.exports = function() {
var $menu_trigger = $header.find('.menu-trigger');
// Trigger mobile navigation
$menu_trigger.on('click touch', function(e) {
$('body').toggleClass('nav-open');
e.preventDefault();
});
};
// Markup code for button.
<button type="button" class="menu-trigger"><span>Menu</span></button>
// SCSS
.menu-trigger {
@extend %naked-button;
position: absolute;
top: rem(16px);
right: rem(20px);
width: rem(35px);
height: rem(35px);
cursor: pointer;
@include mq(large) {
display: none;
}
span {
display: block;
position: absolute;
top: 50%;
left: 0;
width: 100%;
height: rem(4px);
margin-top: rem(-2px);
background-color: setcolor(blue);
font-size: 0;
user-select: none;
transition: background-color 0.3s;
&:before,
&:after {
content: "";
position: absolute;
left: 0;
width: 100%;
height: 100%;
background: setcolor(blue);
transition: transform 0.3s;
}
&:before {
transform: translateY(-175%);
}
&:after {
transform: translateY(175%);
}
// Set state for when navigation is active.
.nav-open & {
background-color: transparent;
&:before,
&:after {
background: setcolor(orange);
}
&:before {
transform: translateY(0) rotate(45deg);
}
&:after {
transform: translateY(0) rotate(-45deg);
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment