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