Skip to content

Instantly share code, notes, and snippets.

@DevShahidul
Created October 1, 2018 23:14
Show Gist options
  • Select an option

  • Save DevShahidul/8603fcaabb18dc47b83fa55ad8ba89cf to your computer and use it in GitHub Desktop.

Select an option

Save DevShahidul/8603fcaabb18dc47b83fa55ad8ba89cf to your computer and use it in GitHub Desktop.
/* See related post at
https://codepen.io/Javarome/post/full-page-sliding
*/
var width = 0;
$(".scroller-wrap > div").each(function() {
width += $(this).outerWidth( true );
});
$('.scroller-wrap').css('width', width);
function ScrollHandler(pageId) {
var page = $('#' + pageId);
var pageStart = page.offset().left;
var pageJump = false;
function scrollToPage() {
pageJump = true;
$('html, body').animate({
scrollLeft: pageStart
}, {
duration: 1000,
complete: function() {
pageJump = false;
}
});
}
window.addEventListener('wheel', function(event) {
var viewStart = $(window).scrollLeft();
if (!pageJump) {
var pageWidth = page.width();
var pageStopPortion = pageWidth / 2;
var viewWidth = $(window).width();
var viewEnd = viewStart + viewWidth;
var pageStartPart = viewEnd - pageStart;
var pageEndPart = (pageStart + pageWidth) - viewStart;
var canJumpDown = pageStartPart >= 0;
var stopJumpDown = pageStartPart > pageStopPortion;
var canJumpUp = pageEndPart >= 0;
var stopJumpUp = pageEndPart > pageStopPortion;
var scrollingForward = event.deltaY > 0;
if ( ( scrollingForward && canJumpDown && !stopJumpDown)
|| (!scrollingForward && canJumpUp && !stopJumpUp)) {
event.preventDefault();
scrollToPage();
}
} else {
event.preventDefault();
}
});
}
new ScrollHandler('one');
new ScrollHandler('two');
new ScrollHandler('three');
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment