Sticky (Header) - Vanilla JS
Sticky Header / Elements
StyleSheet und JavaScript Fallback
Seit einiger Zeit wird in den Browsern das Verhalten Sticky bereits durch CSS unterstützt, wo bei alten Browserern noch ein JavaScript erforderlich war. Wenn man alte Browser vernachlässigen kann reichen also nur ein paar Zeilen CSS, auch wenn man alte Browser unterstützen möchte reicht ein kleines JavaScript. Wo im JavaScript noch jeweils ein Eventlistener auf Scroll und Resize benötigt wird, hat man in der nativen CSS Variante natürlich in Sachen Performance einiges gewonnen.
Das Setzen des Attributes position: sticky und der Angabe des Wertes für top an dem das Element "einrasten" soll reich bereits aus, alternativ wird dem Element im Augenblick wenn es das Verhalten "Sticky" einnehmen soll, also wiederum an der in top angegeben Position, die Klasse sticky hinzugefügt, wird diese Position unterschritten, wird natürlich diese Klasse auch wieder entfernt.
StyleSheet:
@media screen 
  #toolbar 
    position: sticky;
    position: -webkit-sticky;
    top: 0;
  
  #toolbar.sticky 
    position: fixed;

@media screen and (min-width:768px) 
  #nav-container 
    position: sticky;
    position: -webkit-sticky;
    top: 40px;
  
  #nav-container.sticky 
    position: fixed;

Zur Identifizierung des Elementes oder der Elemente welches ich als sticky behandeln möchete, füge ich dem Tag das Attribut data-type="sticky" hinzu.
JavaScript:
 sticky.js