Animated hamburger menu
Slick animation that turns a hamburger icon into an "X". Good for toggling menus or slide out panes
HTML
<script src="https://pbs.twimg.com/profile_images/489092292779601922/W0kMwi0F.jpeg"></script>
<div ng-app="app" ng-controller="appCtrl">
<div class="navbar">
<div class="picture-container">
<img src="https://pbs.twimg.com/profile_images/489092292779601922/W0kMwi0F.jpeg" class="user-pic" onerror="this.src='user_circle.pngx'"></img>
</div>
<div class="toggle-settings" ng-class="{ 'active': showSettings }" ng-click="toggleSettings()">
<span></span>
<span></span>
<span></span>
</div>
</div>
<div class="subnav"></div>
</div>
CSS
html, body {
margin: 0px !important;
background-color: #eee;
}
.navbar {
width: 100%;
background-color: #fafafa;
height: 40px;
position: absolute;
top: 50px;
}
.subnav {
position: absolute;
top: 90px;
background-color: #0a6aa6;
width: 100%;
height: 40px;
}
.picture-container {
width: 28px;
height: 28px;
border-radius: 100%;
position: absolute;
right: 45px;
top: 6px;
overflow: hidden;
display: inline-flex;
vertical-align: middle;
justify-content: center;
align-items: center;
margin-right: 4px;
background: @gray;
}
.user-pic {
height: auto;
max-width: 100%;
}
.toggle-settings {
width: 25px;
height: 20px;
-webkit-transform: rotate(0deg);
-moz-transform: rotate(0deg);
-o-transform: rotate(0deg);
transform: rotate(0deg);
-webkit-transition: all 0.5s ease-in-out;
-moz-transition: all 0.5s ease-in-out;
-o-transition: all 0.5s ease-in-out;
transition: all 0.5s ease-in-out;
color: #333;
position: absolute;
right: 10px;
top: 11px;
cursor: pointer;
}
.toggle-settings span {
opacity: 1;
left: 0;
cursor: pointer;
border-radius: 3px;
height: 3px;
width: 100%;
background-color: #333;
position: absolute;
display: block;
content: '';
-webkit-transform: rotate(0deg);
-moz-transform: rotate(0deg);
-o-transform: rotate(0deg);
transform: rotate(0deg);
-webkit-transition: all 0.25s ease-in-out;
-moz-transition: all 0.25s ease-in-out;
-o-transition: all 0.25s ease-in-out;
transition: all 0.25s ease-in-out;
}
.toggle-settings span:nth-child(1) {
top: 0px;
}
.toggle-settings span:nth-child(2) {
top: 7px;
}
.toggle-settings span:nth-child(3) {
top: 14px;
}
.toggle-settings.active span:nth-child(1) {
top: 7px;
-webkit-transform: rotate(-45deg);
-moz-transform: rotate(-45deg);
-o-transform: rotate(-45deg);
transform: rotate(-45deg);
}
.toggle-settings.active span:nth-child(2) {
opacity: 0;
...
JavaScript
var mod = angular.module('app', []);
mod.controller('appCtrl', function($scope) {
$scope.showSettings = false;
$scope.toggleSettings = function() {
$scope.showSettings = !$scope.showSettings;
}
});