Last active
August 29, 2015 14:21
-
-
Save mciastek/85d18a1a1798e74e2a6f to your computer and use it in GitHub Desktop.
Hide element on scroll
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function(document, window) { | |
var element = document.getElementById('hide-scroll'); | |
var elementHeight = element.clientHeight; | |
var elementTop = praseInt(element.style.top, 10) || 0; | |
var distance = elementTop; | |
/** | |
* Get delta from 'mousewheel' | |
* @param {Object} e event object | |
* @return {Array} returns array with delta | |
* | |
* @source: https://github.com/noraesae/perfect-scrollbar/blob/master/src/js/plugin/handler/mouse-wheel.js | |
*/ | |
function getDeltaFromEvent(e) { | |
var deltaX = e.deltaX; | |
var deltaY = -1 * e.deltaY; | |
if (typeof deltaX === 'undefined' || typeof deltaY === 'undefined') { | |
// OS X Safari | |
deltaX = -1 * e.wheelDeltaX / 6; | |
deltaY = e.wheelDeltaY / 6; | |
} | |
if (e.deltaMode && e.deltaMode === 1) { | |
// Firefox in deltaMode 1: Line scrolling | |
deltaX *= 10; | |
deltaY *= 10; | |
} | |
if (deltaX !== deltaX && deltaY !== deltaY /* NaN checks */ ) { | |
// IE in some mouse drivers | |
deltaX = 0; | |
deltaY = e.wheelDelta; | |
} | |
return [deltaX, deltaY]; | |
} | |
/** | |
* Hide element on scroll | |
* @param {Object} event gets event object | |
* | |
*/ | |
function hideOnScroll(event) { | |
var deltaY = getDeltaFromEvent(event.originalEvent)[1] / 2; | |
distance += deltaY; | |
if (distance > -elementHeight && distance < 0) { | |
$el.css('top', Math.floor(distance)); | |
} else { | |
distance = parseInt($el[0].style.top, 10); | |
} | |
} | |
window.addEventListener('mousewheel', hideOnScroll); | |
window.addEventListener('DOMMouseScroll', hideOnScroll); | |
}(document, window)); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment