Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save rickycheers/52060bbbb31f4901f3f4 to your computer and use it in GitHub Desktop.
Save rickycheers/52060bbbb31f4901f3f4 to your computer and use it in GitHub Desktop.
AngularJS Material design menu toggle
<section ng-app="myApp">
<div ng-click="arrow = !arrow" ng-class="{'hamburger': !arrow, 'arrow-right': arrow}" class="nav-toggle">
<p ng-show="!arrow">Menu</p>
<p ng-show="arrow">Close</p>
<span></span>
</div>
</section>
angular.module('myApp',['ngAnimate']);
* {
box-sizing: border-box;
}
.nav-toggle {
background: none;
border: 0;
cursor: pointer;
display: block;
height: 18px;
line-height: 1;
margin: 50px auto;
outline: 0;
padding-right: 35px;
position: relative;
width: 80px;
}
p {
font-family: 'Open Sans';
font-size: 16px;
opacity: 1;
position: absolute;
transition: all .5s ease;
transform: translateY(0);
&.ng-hide-add {
transform: translateY(0);
opacity: 1;
}
&.ng-hide-add-active {
transform: translateY(-15px) rotateX(-90deg);
opacity: 0;
}
&.ng-hide-remove {
transform: translateY(15px) rotateX(90deg);
opacity: 0;
}
&.ng-hide-remove-active {
transform: translateY(0);
opacity: 1;
}
}
span,
span:before,
span:after {
background-color: #333;
height: 4px;
position: absolute;
right: 0;
top: 0;
transform: translateY(7px);
transition: all 0.5s ease;
width: 25px;
}
span:before,
span:after {
content: '';
transform: translateY(0);
}
.hamburger {
span {
&:before {
transform: translateY(-7px);
}
&:after {
transform: translateY(7px);
}
}
}
.arrow-right {
span {
transform: rotate(-180deg) translateY(-7px) translateX(0);
&:before,
&:after {
width: 15px;
}
&:before {
transform: rotate(45deg) translateY(14px) translateX(-8px);
}
&:after {
transform: rotate(-45deg) translateY(-14px) translateX(-8px);
}
}
}
.arrow-left {
span {
transform: rotate(180deg) translateY(-7px) translateX(0);
&:before,
&:after {
width: 15px;
}
&:before {
transform: rotate(-45deg) translateY(6px) translateX(0);
}
&:after {
transform: rotate(45deg) translateY(-6px) translateX(0);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment