/*********************************************** * jQuery Page Scroll Progress Bar v1.0 By Dynamic Drive * Project Page: http://www.dynamicdrive.com/dynamicindex3/pagescrollprogressbar.htm ***********************************************/ jQuery(function($){ var growmouseover = [true, '25px'] // magnify progress bar onmouseover? [Boolean, newheight] ///////// No need to edit beyond here ///////// var $indicatorparts = $(document.body).append('
') var $indicatorMain = $indicatorparts.find('div.scrollindicator') var $scrollProgress = $indicatorparts.find('div.scrollprogress') var indicatorHeight = $indicatorMain.outerHeight() var transformsupport = $scrollProgress.css('transform') transformsupport = (transformsupport == "none" || transformsupport =="")? false: true function syncscrollprogress(){ var winheight = $(window).height() var docheight = $(document).height() var scrollTop = $(window).scrollTop() var trackLength = docheight - winheight var pctScrolled = Math.floor(scrollTop/trackLength * 100) // gets percentage scrolled (ie: 80 NaN if tracklength == 0) $scrollProgress.css('transform', 'translate3d(' + (-100 + pctScrolled) + '%,0,0)') } if (transformsupport){ $indicatorMain.css('visibility', 'visible') $indicatorMain.on('click', function(e){ var trackLength = $(document).height() - $(window).height() var scrollamt = e.clientX/($(window).width()-32) * trackLength $('html,body').animate({scrollTop: scrollamt}, 'fast') }) if (growmouseover[0]){ $indicatorMain.on('mouseenter touchstart', function(e){ $(this).css('height', growmouseover[1]) e.stopPropagation() }) $indicatorMain.on('mouseleave', function(e){ $(this).css('height', indicatorHeight) }) $(document).on('touchstart', function(e){ $indicatorMain.css('height', indicatorHeight) }) } $(window).on("scroll load", function(){ requestAnimationFrame(syncscrollprogress) }) } })