<!DOCTYPE html>
<html ng-app="app">
<head>
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/foundation/5.4.7/css/foundation.min.css" />
<link rel="stylesheet" href="style.css" />
</head>
<body>
<nav class="top-bar" data-topbar role="navigation">
<section class="top-bar-section">
<ul class="left">
<li><a href="#/foo">Route 1</a></li>
<li><a href="#/bar">Route 2</a></li>
<li><a href="#/baz">Route 3</a></li>
</ul>
</section>
</nav>
<div class="view-container">
<div class="panel view-animation" ui-view></div>
</div>
<!-- vendor -->
<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/gsap/1.19.0/TweenMax.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/foundation/5.4.7/js/foundation.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular-animate.min.js"></script>
<script src="//angular-ui.github.io/ui-router/release/angular-ui-router.js"></script>
<!-- app -->
<script src="app.js"></script>
</body>
</html>
.view-container {
position: relative;
}
.view-animation {
position: absolute;
width: 100%;
top: 0;
left: 0;
}
angular
.module("app", ["ui.router", "ngAnimate"])
.config(config)
.animation(".view-animation", viewAnimation);
// Configure your routes here
function config($stateProvider, $urlRouterProvider) {
$stateProvider
.state("foo", {
url: "/foo",
template: "<h1>foo</h1>"
})
.state("bar", {
url: "/bar",
template: "<h1>bar</h1>"
})
.state("baz", {
url: "/baz",
template: "<h1>baz</h1>"
});
$urlRouterProvider.otherwise("/foo");
}
// Add your view change animations here
function viewAnimation() {
var enterTimeline = new TimelineMax();
var leaveTimeline = new TimelineMax();
return {
enter: function(element, done) {
var topBar = angular.element(".top-bar");
enterTimeline
.clear()
.set(element, { scale: 0.5, x: 100, autoAlpha: 0 })
// .set(topBar, { yPercent: -100 })
.to(topBar, 0.5, { yPercent: 0 })
.to(element, 0.5, { scale: 1, x: 0, autoAlpha: 1, ease:Power1.easeInOut }, "-=0.1")
.add(done);
},
leave: function(element, done) {
leaveTimeline
.clear()
.to(element, 0.5, { x: 100, scale: 0.5, autoAlpha: 0, ease:Power1.easeInOut, delay: 0.1 })
.add(done);
}
};
}