Sticky Navbars Using Vanilla JS - top and bottom navs
Vanilla JS (minimalist ES5) Sticky Navbars on top and bottom. Based off a blog post: https://codecary.com/sticky-navigation-bar-on-scroll-using-vanilla-javascript/
by andioak
HTML
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Sticky Navigation</title>
<!-----Custom CSS File--->
<link rel="stylesheet" href="style.css">
</head>
<body>
<!---Header Section--->
<div class="banner">
<nav class="header">
<a href="#" class="logo">Bindas</a>
<ul>
<li><a href="#">home</a></li>
<li><a href="#">about</a></li>
<li><a href="#">service</a></li>
<li><a href="#">portfolio</a></li>
<li><a href="#">team</a></li>
<li><a href="#">contact</a></li>
</ul>
</nav>
<div class="banner-text">
<h1>Sticky Navbar on Scroll Using Javascript</h1>
<p>Lorem ipsum dolor sit amet consectetur adipisicing elit. Aperiam praesentium fuga delectus, magnam hic a minima enim repellendus omnis minus voluptatibus, vitae quo autem ut architecto quaerat recusandae alias voluptatem.Lorem ipsum dolor sit amet consectetur adipisicing elit. Aperiam praesentium fuga delectus, magnam hic a minima enim repellendus omnis minus voluptatibus, vitae quo autem ut architecto quaerat recusandae alias voluptatem.Lorem ipsum dolor sit amet consectetur adipisicing elit. Aperiam praesentium fuga delectus, magnam hic a minima enim repellendus omnis minus voluptatibus, vitae quo autem ut architecto quaerat recusandae alias voluptatem.<br><br>
Lorem ipsum dolor sit amet consectetur adipisicing elit. Aperiam praesentium fuga delectus, magnam hic a minima enim repellendus omnis minus voluptatibus, vitae quo autem ut architecto quaerat recusandae alias voluptatem.
</p><br><br>
<h2>Sticky Navbar on Scroll Using Javascript, now also on the bottom, a mobile sticky footer.</h2>
<p>This was first seen on <a href="https://codecary.com/sticky-navigation-bar-on-scroll-using-vanilla-javascript/">https://codecary.com/sticky-navigation-bar-on-scroll-using-vanilla-javascript/</a> and I fiddled...
CSS
@import url('https://fonts.googleapis.com/css2?family=Poppins:wght@300;500;600;700;800&display=swap');
*{
margin: 0;
padding: 0;
box-sizing: border-box;
font-family: 'Poppins', sans-serif;
}
html{
scroll-behavior: smooth;
background-color: #fff;
}
body {
padding-bottom: 80px;
}
a {
text-decoration: none;
}
h1, h2, h3 { margin-bottom: 1em; }
.banner{
width: 100%;
min-height: 700px;
background-image: url(img/banner.jpg);
background-size: cover;
background-position: center;
position: relative;
z-index: 1;
}
.banner:before{
content: "";
position: absolute;
background: rgba(7,1,90,0.6);
left: 0;
top: 0;
width: 100%;
height: 100%;
z-index: -1;
}
nav{
display: flex;
justify-content: space-between;
align-items: center;
padding: 20px 100px;
border-bottom: 1px solid rgba(235,235,235,0.5);
}
nav .logo{
font-size: 32px;
font-weight: 800;
text-transform: uppercase;
letter-spacing: 1px;
color: #fff;
}
nav ul li{
list-style: none;
display: inline-block;
padding: 8px 12px;
}
nav ul li a{
color: #fff;
text-transform: uppercase;
font-weight: 500;
transition: .3s;
}
nav ul li a:hover{
color: #7564e5;
}
.header.sticky{
background: #fff;
position: fixed;
width: 100%;
padding: 10px 80px;
top: 0;
transition: all 0.4s ease;
box-shadow: 0px 1px 15px rgb(0 0 0 / 10%);
z-index: 999;
}
.header.sticky .logo{
color: #7564e5;
}
.header.sticky ul li a{
color: #333;
}
.header.sticky ul li a:hover {
color: #7564e5;
}
/* footer sticky as well, with position: fixed */
.footer_dark { background-color: #000; color: #CCC; }
.footer {
position: fixed;
width: 100%;
text-align: center;
bottom: 0; left: 0;
transition: all 0.4s ease;
z-index: 999;
}
.footer nav {
padding: 25px 5%;
border-bottom: none;
text-align: center;
}
.footer nav ul {
text-align: center;
}
.footer.sticky ul li a {
color: #333;
}
.footer.sticky ul li a:hover{
color: #7564e5;
}
.banner-text{
...
JavaScript
/* scroll menu */
window.addEventListener('scroll', function(){
var header = document.querySelector('.header');
header.classList.toggle("sticky", window.scrollY > 0);
})