|
@@ -2,40 +2,52 @@
|
|
|
* Handles sticky header
|
|
|
*/
|
|
|
|
|
|
-( function( $ ) {
|
|
|
+( function () {
|
|
|
+ 'use strict';
|
|
|
|
|
|
- var stickyHeader = $( '.sticky-wrapper' );
|
|
|
- var topBar = $( '.top-bar' );
|
|
|
- var stickyHeaderOffset = topBar.outerHeight();
|
|
|
- var body = $( 'body' );
|
|
|
- var windowWidth;
|
|
|
+ var stickyHeader = document.querySelector( '.sticky-wrapper' );
|
|
|
+ var topBar = document.querySelector( '.top-bar' );
|
|
|
+ var stickyHeaderOffset = parseFloat(
|
|
|
+ ( getComputedStyle( topBar ).height || '0' ).replace( 'px', '' )
|
|
|
+ );
|
|
|
|
|
|
- var stickyTime = function( width ) {
|
|
|
- if( window.pageYOffset >= ( stickyHeaderOffset ) && width >= 1100 ) {
|
|
|
- stickyHeader.addClass( 'sticking' );
|
|
|
+ var nextFrame = null;
|
|
|
|
|
|
- var stuckHeader = $( '.sticky-wrapper.sticking' );
|
|
|
- var stickyHeaderHeight = stuckHeader.outerHeight();
|
|
|
+ if ( ! stickyHeader || ! topBar ) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ function stickyTime() {
|
|
|
+ var windowWidth = document.documentElement.clientWidth;
|
|
|
+
|
|
|
+ if ( window.pageYOffset >= stickyHeaderOffset && windowWidth >= 1100 ) {
|
|
|
+ stickyHeader.classList.add( 'sticking' );
|
|
|
|
|
|
- body.css( 'padding-top', stickyHeaderHeight );
|
|
|
- topBar.css( 'visibility', 'hidden' );
|
|
|
+ var stuckHeader = document.querySelector( '.sticky-wrapper.sticking' );
|
|
|
+ var stickyHeaderHeight = getComputedStyle( stuckHeader ).height;
|
|
|
+
|
|
|
+ document.body.style.paddingTop = stickyHeaderHeight;
|
|
|
+ topBar.style.visibility = 'hidden';
|
|
|
} else {
|
|
|
- stickyHeader.removeClass( 'sticking' );
|
|
|
- body.removeAttr( 'style' );
|
|
|
- topBar.removeAttr( 'style' );
|
|
|
+ stickyHeader.classList.remove( 'sticking' );
|
|
|
+ document.body.removeAttribute( 'style' );
|
|
|
+ topBar.removeAttribute( 'style' );
|
|
|
}
|
|
|
+
|
|
|
+ nextFrame = null;
|
|
|
}
|
|
|
|
|
|
- // Functions to fire on window load
|
|
|
- $( window ).load( function() {
|
|
|
- windowWidth = $( this ).width();
|
|
|
- stickyTime( windowWidth );
|
|
|
- } );
|
|
|
+ if ( document.readyState === 'complete' ) {
|
|
|
+ stickyTime();
|
|
|
+ } else {
|
|
|
+ window.addEventListener( 'load', stickyTime );
|
|
|
+ }
|
|
|
|
|
|
- // After scrolling
|
|
|
- $( window ).scroll( function() {
|
|
|
- windowWidth = $( this ).width();
|
|
|
- stickyTime( windowWidth );
|
|
|
+ document.addEventListener( 'scroll', function () {
|
|
|
+ if ( window.requestAnimationFrame ) {
|
|
|
+ nextFrame = nextFrame || requestAnimationFrame( stickyTime );
|
|
|
+ } else {
|
|
|
+ stickyTime();
|
|
|
+ }
|
|
|
} );
|
|
|
-
|
|
|
-} )( jQuery );
|
|
|
+} )();
|