Skip to content

Instantly share code, notes, and snippets.

@mciastek
Last active August 29, 2015 14:21
Show Gist options
  • Save mciastek/85d18a1a1798e74e2a6f to your computer and use it in GitHub Desktop.
Save mciastek/85d18a1a1798e74e2a6f to your computer and use it in GitHub Desktop.
Hide element on scroll
(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