Full-Screen Navigation Bar- Website Design

Full Screen Navigation Bar- Website Design


Full-Screen Navigation Bar HTML

<div id="nav-trigger" class="nav-trigger open">
  <span class="line"></span>
  <span class="line"></span>
  <span class="line"></span>
</div>
<nav id="nav" class="out">
  <ul>
    <li><span class="nav-label">Home</span></span></li>
    <li><span class="nav-label">About</span></li>
    <li><span class="nav-label">Work</span></li>
    <li><span class="nav-label">Blog</span></li>
    <li><span class="nav-label">Contact</span></li>
  </ul>
</nav>
<section id="header" class="header">
  <h1 id="heading">Full Screen Nav</h1>
</section>
<section class="content">
  <p>We're going aerial pingpong no dramas as cross as a mickey mouse mate. Flat out like a bities no dramas as cross as a wobbly. Mad as a bush bash as dry as a kindie. As stands out like ford also grab us a chuck a sickie. Built like a moolah bloody khe sanh. Get a dog up ya chokkie how as cunning as a garbo. Lets get some show pony flamin lets throw a roadie. Come a sheila to come a cab sav.</p>
  
  <p>Gutful of servo bloody as busy as a moolah. Built like a ropeable piece of piss built like a relo. Lets throw a two up piece of piss she'll be right brick sh*t house. Built like a dunny piece of piss lets throw a esky. She'll be right struth my built like a tucker. rage on bloody built like a garbo.</p>
  
  <p>It'll be dinky-di come a brumby. He hasn't got a shit house with shazza got us some buckley's chance. Trent from punchy barbie where shazza got us some chuck a sickie. Mad as a swagger my hottie. As busy as a mate's rate mate stands out like a trackie dacks. As busy as a bathers also grab us a dipstick.</p>
  
  <p class="credit">This placeholder text is from <a href="http://boganipsum.com">Bogan Ipsum</a></p>
</section>

Full-Screen Navigation Bar CSS

@import "bourbon";
@import url(https://fonts.googleapis.com/css?family=Patua+One);
@import url(https://fonts.googleapis.com/css?family=Open+Sans);
// vars
$headings: 'Patua One', cursive;
$white: #fff;
$grey-black: #222;
$olive: #364e41;
body {
  background: #fff;
  height: 100%;
  font-family: 'Open Sans', sans-serif;
}
p {
  line-height: 1.5;
}
// Nav Button
.nav-trigger {
  position: fixed;
  width: 110px;
  height: 98px;
  right: 0px;
  top: 0px;
  cursor: pointer;
  z-index: 200;
  @include transform-origin(110px 0px);
  @include transform(scale(0.6));
  @include transition(background 0.3s linear);
}
.nav-trigger.open {
  background: $grey-black;
}
.nav-trigger.close {
  background: transparent;
}
.line {
  display: block;
  position: absolute;
  width: 80px;
  height: 8px;
  background: $white;
  left: 15px;
  @include transform-origin(0px 4px);
  @include transition (opacity 0.3s $ease-in-out-cubic 0s, transform 0.24s $ease-in-out-cubic 0s);
}
@for $i from 1 through 3 {
  .line:nth-child(#{$i}) {
    top: 16px + (($i)-1)*28;
  }
}
.close .line:nth-child(1) {
  @include transform(translateX(11px) rotate(45deg));
}
.close .line:nth-child(2) {
  opacity: 0;
}
.close .line:nth-child(3) {
  @include transform(translateX(11px) rotate(-45deg));
}
// Full page Navigation  
nav {
  width: 100%;
  height: 100%;
  position: fixed;
  z-index: 100;
}
nav.out {
  pointer-events: none;
}
nav.in {
  pointer-events: auto;
}
nav ul, li {
  display: block;
  padding: 0;
  margin: 0;
  width: 100%;
  cursor: pointer;
}
nav ul {
  height: 100%;
  width: 100%;
  position: absolute;
}
nav li {
  height: 20%;
  position: relative;
  background: $grey-black;
  color: $white;
  font-family: $headings;
}
nav li:hover {
  background: $olive;
}
@for $i from 1 through 5 {
  nav.in li:nth-child(#{$i}) {
    @include transition(transform 0.5s $ease-out-cubic (0.1s*$i), opacity 0.5s linear (0.1s*$i));
  }
}
@for $i from 5 through 1 {
  nav.out li:nth-child(#{$i}) {
    @include transition(transform 0.3s $ease-in-cubic (0.05s*(5-$i)), opacity 0.3s linear (0.05s*(5-$i)));
  }
}
nav.out li {
  @include transform(translateY(300%));
  opacity: 0;
}
nav.in li {
  @include transform(translateY(0));
  opacity: 1;
}
.nav-label {
  position: absolute;
  width: 100%;
  left: 0;
  text-align: center;
  height: 16px;
  top: 50%;
  margin-top: -8px;
  text-transform: uppercase;
}
// site content
.header {
  background: url(https://s3-us-west-2.amazonaws.com/s.cdpn.io/53148/bg.jpg);
  background-size: cover;
  position: relative;
  width: 100%;
  min-height: 100%;
  top: 0px;
}
.header h1 {
  width: 100%;
  color: #fff;
  position: absolute;
  margin: 0;
  font-family: $headings;
  text-align: center;
  display: block;
  top: 50%;
}
.content {
  @include box-sizing(border-box);
  max-width: 600px;
  padding: 20px;
  margin: 0 auto;
}
.credit {
  color: #364e41;
}
.credit a {
  color: #364e41;
}

Full-Screen Navigation Bar JAVASCRIPT

// selected elements
var navTrigger = document.getElementById('nav-trigger');
var nav = document.getElementById('nav');
var header = document.getElementById('header');
var heading = document.getElementById('heading');
var labels = document.getElementsByClassName('nav-label');
// sizing
var windowHeight = window.innerHeight;
var windowWidth = window.innerWidth;
var fontSize = windowHeight*0.1;
var headingSize = windowWidth*0.1;
// Event Listening
navTrigger.addEventListener('click', navToggle);
window.addEventListener('resize', resize);
function resize() {
  windowHeight = window.innerHeight;
  windowWidth = window.innerWidth;
  fontSize = windowHeight*0.1;
  headingSize = windowWidth*0.1;
  if(headingSize > windowHeight*0.3) headingSize = windowHeight*0.3; 
  
  for(var i = 0; i < labels.length; i++) {
    labels[i].style.fontSize = fontSize+'px';
    labels[i].style.height = fontSize+'px';
    labels[i].style.marginTop = '-'+fontSize*0.6+'px';
  }
  header.style.height = windowHeight+'px';
  heading.style.fontSize = headingSize+'px';
  heading.style.height = headingSize+'px';
  heading.style.marginTop = '-'+headingSize*0.6+'px';
  
}
function navToggle(e) {
  var closed = (navTrigger.className.indexOf('close') > 0); 
  if(closed) {
    navTrigger.className = 'nav-trigger open';
    nav.className = 'out';
  } else {
    navTrigger.className = 'nav-trigger close';
    nav.className = 'in';
  }
}
window.onload = resize;

Animated full-screen navigation bar using GASP

Animated full-screen navigation bar HTML

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Animated fullscreen navigation bar using GASP</title>
</head>
<body>
  <div class="main">
    <div class="bars"></div>
  </div>
  <div class="menu">
    <div class="navBefore"></div>
    <div class="nav">
      <ul class="navigation">
        <li><a href="#">Home</a></li>
        <li><a href="#">About</a></li>
        <li><a href="#">About</a></li>
        <li><a href="#">Portfolio</a></li>
        <li><a href="#">Contact</a></li>
      </ul>
    </div>
  </div>
</body>
</html>

Animated full-screen navigation bar CSS

* {
  margin: 0;
  paddig: 0;
  box-sizing: border-box;
}
.main {
  position: relative;
  height: 100vh;
  width: 100%;
  background: url("https://images.pexels.com/photos/933054/pexels-photo-933054.jpeg?auto=compress&cs=tinysrgb&dpr=2&h=650&w=940");
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  overflow: hidden;
}
.main .bars {
  position: fixed;
  height: 30px;
  width: 50px;
  top: 5%;
  right: 5%;
  display: flex;
  flex-direction: column;
  align-items: center;
  z-index: 9999999999;
  cursor: pointer;
}
.main .bars::before {
  position: absolute;
  content: "";
  height: 2px;
  width: 90%;
  background: #fff;
  transition: 0.3s linear;
}
.main .bars.active::before {
  transform: rotate(45deg);
  width: 50%;
  top: 5%;
  background: #000;
}
.main .bars::after {
  position: absolute;
  content: "";
  height: 2px;
  width: 90%;
  background: #fff;
  top: 35%;
  transition: 0.3s linear;
}
.main .bars.active::after {
  transform: rotate(-45deg);
  width: 50%;
  top: 5%;
  background: #000;
}
.menu {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 999999999;
  overflow: hidden;
  display: none;
}
.menu .navBefore {
  position: absolute;
  margin-left: 100%;
  width: 100%;
  height: 100%;
  background: #017bf5;
}
.menu .nav {
  position: relative;
  margin-left: 100%;
  width: 100%;
  height: 100%;
  background: #fff;
  z-index: 1;
  display: flex;
  align-items: center;
  justify-content: center;
}
.menu .nav ul {
  opacity: 0;
}
.menu .nav ul li {
  list-style: none;
}
.menu .nav ul li a {
  position: relative;
  font-size: 4.5rem;
  text-decoration: none;
  text-align: center;
  color: #666;
}
.menu .nav ul li a:hover,
.menu .nav ul li.active a {
  color: #000;
}

Animated full-screen navigation bar JAVASCRIPT

window.onload = function () {
  const bars = document.querySelector(".bars");
  const menu = document.querySelector(".menu");
  bars.addEventListener("click", function (e) {
    this.classList.toggle("active");
    if (this.classList.contains("active")) {
      gsap.to(".menu", {
        duration: 0.1,
        display: "flex",
        ease: "expo.in"
      });
      gsap.to(".navBefore", {
        duration: 0.5,
        marginLeft: "0",
        ease: "expo.in"
      });
      gsap.to(".nav", {
        duration: 0.8,
        marginLeft: "0",
        delay: 0.3,
        ease: "expo.in"
      });
      gsap.to(".navigation", {
        duration: 1,
        opacity: "1",
        delay: 0.8,
        ease: "expo.in"
      });
    } else {
      gsap.to(".navigation", {
        duration: 0.2,
        opacity: "0",
        ease: "expo.in"
      });
      gsap.to(".nav", {
        duration: 1,
        marginLeft: "100%",
        delay: 0.3,
        ease: "expo.in"
      });
      gsap.to(".navBefore", {
        duration: 1,
        marginLeft: "100%",
        delay: 0.5,
        ease: "expo.in"
      });
      gsap.to(".menu", {
        duration: 1,
        display: "none",
        delay: 1,
        ease: "expo.in"
      });
    }
  });
};

Post a Comment

Previous Post Next Post