.container
	header
	input(type="checkbox" class="trigger" checked)
	nav
		- var i = 6
			while i--
				a(href="").block
	main Inspired by 
		a(href="https://dribbble.com/shots/1375652-Gif-Animation-Abracadabra-App" target="_blank") this Dribbble
View Compiled
@import url(https://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css);
$container-height: 95vh;
$header-height: 60px;
$animation-duration: 0.2s;
$icons: "\f11e", "\f132", "\f131", "\f119", "\f127", "\f145";
$web-font: "FontAwesome";
$color1: #f9f9f9;
$color2: #32446A;


html,body {
	height: 100%;
	background-color: #333;
}

.container {
	width: $container-height*9/16;
	height: $container-height;
	box-shadow: 0 4px 12px rgba(0,0,0,0.75);
	background-color: #999;
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%,-50%);
}

header {
	height: $header-height;
	margin-bottom: 10px;
	background-color: darken($color2,10%);
	
	&:before {
		content: '\f0c9';
		font-family: $web-font;
		font-size: 1.5rem;
		color: rgba(0,0,0,0.45);
		position: fixed;
		top: 0;
		left: 0;
		width: $header-height;
		height: $header-height;
		display: flex;
		justify-content: center;
		align-items: center;
	}
}

.trigger {
	position: fixed;
	top: 0;
	left: 0;
	width: $header-height;
	height: $header-height;
	margin: 0;
	opacity: 0;
	z-index: 10;
	cursor: pointer;

	&:checked {
		+ nav {
			transition-delay: 0s;
			height: calc(100% - #{$header-height});
			
			&:before {
				width: 100%;
			}

			.block {
				
				&:nth-child(1){
					animation-name: horizontal;
					animation-delay: $animation-duration*1;
				}

				&:nth-child(2){
					animation-name: vertical;
					animation-delay: $animation-duration*2;
				}

				&:nth-child(3){
					animation-name: vertical;
					animation-delay: $animation-duration*4;
				}

				&:nth-child(4){
					animation-name: horizontal;
					animation-delay: $animation-duration*3;
				}

				&:nth-child(5){
					animation-name: horizontal;
					animation-delay: $animation-duration*5;
				}

				&:nth-child(6){
					animation-name: vertical;
					animation-delay: $animation-duration*6;
				}
			}
		}
	}
}

nav {
	width: 100%;
	height: 10px;
	perspective: 1000px;
	transform-style: preserve-3d;
	border-top: 10px solid $color2;
	box-sizing: border-box;
	position: absolute;
	top: $header-height;
	left: 0;
	transition: height 0s ease $animation-duration*7;
	
	&:before {
		content: '';
		position: absolute;
		top: -10px;
		left: 0;
		width: 0;
		height: 10px;
		background-color: $color1;
		transition: width $animation-duration*7 cubic-bezier(0.9,0.05,0.7,0.2);
		animation: nav-intro $animation-duration*7 cubic-bezier(0.9,0.05,0.7,0.2);
	}
}

.block {
	width: 50%;
	height: 33.33%;
	float: left;
	outline: 1px solid rgba(0,0,0,0.45);
	display: block;
	text-decoration: none;
	animation-duration: $animation-duration;
	animation-timing-function: cubic-bezier(0.9,0.05,0.7,0.2);
	animation-fill-mode: both;
	
	&:before {
		height: 100%;
		font-size: 2.5rem;
		font-family: $web-font;
		display: flex;
		justify-content: center;
		align-items: center;
	}
	
	@for $i from 1 to 7 {
		&:nth-child(#{$i}){
			&:before {
				content: nth($icons,$i);
			}
		}
	}

	&:nth-child(1){
		background-color: $color1;
		color: $color2;
		transform: rotateX(-90deg);
		transform-origin: top center;
		animation-name: horizontal-reverse;
		animation-delay: $animation-duration*6;
	}
	
	&:nth-child(2){
		background-color: $color2;
		color: $color1;
		transform: rotateY(90deg);
		transform-origin: left center;
		animation-name: vertical-reverse;
		animation-delay: $animation-duration*5;
	}
	
	&:nth-child(3){
		background-color: $color2;
		color: $color1;
		transform: rotateY(-90deg);
		transform-origin: right center;
		animation-name: vertical-reverse;
		animation-delay: $animation-duration*3;
	}
	
	&:nth-child(4){
		background-color: $color1;
		color: $color2;
		transform: rotateX(-90deg);
		transform-origin: top center;
		animation-name: horizontal-reverse;
		animation-delay: $animation-duration*4;
	}
	
	&:nth-child(5){
		background-color: $color1;
		color: $color2;
		transform: rotateX(-90deg);
		transform-origin: top center;
		animation-name: horizontal-reverse;
		animation-delay: $animation-duration*2;
	}
	
	&:nth-child(6){
		background-color: $color2;
		color: $color1;
		transform: rotateY(90deg);
		transform-origin: left center;
		animation-name: vertical-reverse;
		animation-delay: $animation-duration*1;
	}
}

main {
	box-sizing: border-box;
	padding: 20px;
}


// ******************************
// ***** Animation **************
// ******************************

// horizontal -----------------------------

@keyframes horizontal {
	0% { visibility: hidden; opacity: 0;}
	1% { visibility: visible; opacity: 1;}
	100% { transform: rotateX(0deg); visibility: visible; opacity: 1;}
}

@keyframes horizontal-reverse {
	0% { transform: rotateX(0deg); visibility: visible;}
	99% { visibility: visible; opacity: 1;}
	100% { visibility: hidden; opacity: 0;}
}


// vertical -----------------------------

@keyframes vertical {
	0% { visibility: hidden; opacity: 0;}
	1% { visibility: visible; opacity: 1;}
	100% { transform: rotateY(0deg); visibility: visible; opacity: 1;}
}

@keyframes vertical-reverse {
	0% { transform: rotateY(0deg); visibility: visible; opacity: 1;}
	99% { visibility: visible; opacity: 1;}
	100% { visibility: hidden; opacity: 0;}
}


// nav:before width reset -----------------------------

@keyframes nav-intro {
	0% { width: 0%;}
}
View Compiled

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.