Menu Sticky Pure Javascript

by Teja Sukmana

HTML

<header><span>Menu Sticky Pure Javascript</span><br><span class='backtutorial'><a href="https://mastamvan.blogspot.com/2017/07/membuat-menu-melayang-sticky-javascript.html">Back To Tutorial</a></span></header>
<nav class='sticky'>
  <ul>
    <li><a href="https://mastamvan.blogspot.com">Home</a></li>
    <li><a href="https://mastamvan.blogspot.com">Blogger</a></li>
    <li><a href="https://mastamvan.blogspot.com">Widget</a></li>
    <li><a href="https://mastamvan.blogspot.com">Tools</a></li>
  </ul>
</nav>
<div class='content'>
  <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur non tempor ex, sit amet porttitor risus. Nulla est lorem, hendrerit ut diam non, consequat fringilla ex. Ut eget pulvinar eros, in cursus mi. Fusce tempor porttitor neque at euismod. Donec id ipsum quam. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse pellentesque mi turpis, a pretium magna sagittis nec. Morbi interdum ex eu mi congue, vel iaculis nulla porttitor. Maecenas tellus augue, porttitor ac eros in, sollicitudin mollis nisl. Phasellus dignissim tristique rutrum. Nullam ligula est, tincidunt nec bibendum sodales, sollicitudin non turpis. Nulla luctus arcu a libero rhoncus, a placerat nisi ultrices. Donec eget velit eu neque vehicula consectetur ac nec leo. Nam porttitor a risus hendrerit ullamcorper. Ut porttitor consectetur sem.</p>
    <p>Nunc vitae ultrices arcu. Sed lobortis lacinia lobortis. Nam pellentesque mi nec ipsum elementum, in tempor leo scelerisque. Integer efficitur nisi non lectus rhoncus, eu vestibulum sapien auctor. Morbi venenatis ultricies bibendum. Phasellus at risus bibendum, blandit magna rutrum, porta justo. Mauris in gravida dui, at rutrum risus. Aenean efficitur euismod est, vitae varius augue consectetur ac. In vel gravida mauris, sit amet lobortis ligula. Morbi eleifend, lorem sed vulputate venenatis, enim neque ultricies libero, quis vehicula nibh mauris vitae sem. Morbi eros felis,...

CSS

@import url(https://fonts.googleapis.com/css?family=Open+Sans:400,700);
body {
    background: #fff;
    color: #444;
    height: 100%;
    font-size: 14px;
    font-weight: 400;
    line-height: 22px;
    text-decoration: none;
    margin: 0;
    padding: 0;
    font-family: 'Open Sans', sans-serif;
}
header{
    text-align: center;
    display: block;
    background: #f69bff;
    padding: 5% 0;
    color: #334;
    text-transform: uppercase;
    font-weight: bold;
    font-size: 200%;
}
header span.backtutorial a {
    font-size: 61%;
    display: block;
    margin: 1em 0 0;
    color: #443;
    text-decoration: none;
}
.content p {
    margin: 1em;
    padding: 0 5%;
    text-align: justify;
}
.sticky.is-active{
  position:fixed;
  top: 0;
  left: 0;
  width: 100%
}
nav.sticky{
  background: #9599e7;
}
.sticky ul {
    list-style: none;
    margin: 0;
    padding: 0;
    display: block;
    text-align: center;
}
.sticky ul li{
  display: inline-block;
}
.sticky ul li a{
  display: block;
  padding: 0.6em 1em;
  text-decoration: navajowhite;
  color: #fafafa;
}

JavaScript

function throttle(fn, delay) {
  var last = undefined;
  var timer = undefined;

  return function () {
    var now = +new Date();

    if (last && now < last + delay) {
      clearTimeout(timer);

      timer = setTimeout(function () {
        last = now;
        fn();
      }, delay);
    } else {
      last = now;
      fn();
    }
  };
}

function onScroll() {
  if (window.pageYOffset) {
    $$html.classList.add('is-active');
  } else {
    $$html.classList.remove('is-active');
  }
}

var $$html = document.querySelector('.sticky');

window.addEventListener('scroll', throttle(onScroll,25));