Difference between revisions of "Template:HFUT-China/onepagejs"
Line 1: | Line 1: | ||
− | !function( | + | |
+ | |||
+ | !function($){ | ||
+ | |||
+ | var defaults = { | ||
+ | sectionContainer: "section", | ||
+ | easing: "ease", | ||
+ | animationTime: 1000, | ||
+ | pagination: true, | ||
+ | updateURL: false, | ||
+ | keyboard: true, | ||
+ | beforeMove: null, | ||
+ | afterMove: null, | ||
+ | loop: true, | ||
+ | responsiveFallback: false, | ||
+ | direction : 'vertical' | ||
+ | }; | ||
+ | |||
+ | /*------------------------------------------------*/ | ||
+ | /* Credit: Eike Send for the awesome swipe event */ | ||
+ | /*------------------------------------------------*/ | ||
+ | |||
+ | $.fn.swipeEvents = function() { | ||
+ | return this.each(function() { | ||
+ | |||
+ | var startX, | ||
+ | startY, | ||
+ | $this = $(this); | ||
+ | |||
+ | $this.bind('touchstart', touchstart); | ||
+ | |||
+ | function touchstart(event) { | ||
+ | var touches = event.originalEvent.touches; | ||
+ | if (touches && touches.length) { | ||
+ | startX = touches[0].pageX; | ||
+ | startY = touches[0].pageY; | ||
+ | $this.bind('touchmove', touchmove); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | function touchmove(event) { | ||
+ | var touches = event.originalEvent.touches; | ||
+ | if (touches && touches.length) { | ||
+ | var deltaX = startX - touches[0].pageX; | ||
+ | var deltaY = startY - touches[0].pageY; | ||
+ | |||
+ | if (deltaX >= 50) { | ||
+ | $this.trigger("swipeLeft"); | ||
+ | } | ||
+ | if (deltaX <= -50) { | ||
+ | $this.trigger("swipeRight"); | ||
+ | } | ||
+ | if (deltaY >= 50) { | ||
+ | $this.trigger("swipeUp"); | ||
+ | } | ||
+ | if (deltaY <= -50) { | ||
+ | $this.trigger("swipeDown"); | ||
+ | } | ||
+ | if (Math.abs(deltaX) >= 50 || Math.abs(deltaY) >= 50) { | ||
+ | $this.unbind('touchmove', touchmove); | ||
+ | } | ||
+ | } | ||
+ | } | ||
+ | |||
+ | }); | ||
+ | }; | ||
+ | |||
+ | |||
+ | $.fn.onepage_scroll = function(options){ | ||
+ | var settings = $.extend({}, defaults, options), | ||
+ | el = $(this), | ||
+ | sections = $(settings.sectionContainer) | ||
+ | total = sections.length, | ||
+ | status = "off", | ||
+ | topPos = 0, | ||
+ | leftPos = 0, | ||
+ | lastAnimation = 0, | ||
+ | quietPeriod = 500, | ||
+ | paginationList = ""; | ||
+ | |||
+ | $.fn.transformPage = function(settings, pos, index) { | ||
+ | if (typeof settings.beforeMove == 'function') settings.beforeMove(index); | ||
+ | |||
+ | // Just a simple edit that makes use of modernizr to detect an IE8 browser and changes the transform method into | ||
+ | // an top animate so IE8 users can also use this script. | ||
+ | if($('html').hasClass('ie8')){ | ||
+ | if (settings.direction == 'horizontal') { | ||
+ | var toppos = (el.width()/100)*pos; | ||
+ | $(this).animate({left: toppos+'px'},settings.animationTime); | ||
+ | } else { | ||
+ | var toppos = (el.height()/100)*pos; | ||
+ | $(this).animate({top: toppos+'px'},settings.animationTime); | ||
+ | } | ||
+ | } else{ | ||
+ | $(this).css({ | ||
+ | "-webkit-transform": ( settings.direction == 'horizontal' ) ? "translate3d(" + pos + "%, 0, 0)" : "translate3d(0, " + pos + "%, 0)", | ||
+ | "-webkit-transition": "all " + settings.animationTime + "ms " + settings.easing, | ||
+ | "-moz-transform": ( settings.direction == 'horizontal' ) ? "translate3d(" + pos + "%, 0, 0)" : "translate3d(0, " + pos + "%, 0)", | ||
+ | "-moz-transition": "all " + settings.animationTime + "ms " + settings.easing, | ||
+ | "-ms-transform": ( settings.direction == 'horizontal' ) ? "translate3d(" + pos + "%, 0, 0)" : "translate3d(0, " + pos + "%, 0)", | ||
+ | "-ms-transition": "all " + settings.animationTime + "ms " + settings.easing, | ||
+ | "transform": ( settings.direction == 'horizontal' ) ? "translate3d(" + pos + "%, 0, 0)" : "translate3d(0, " + pos + "%, 0)", | ||
+ | "transition": "all " + settings.animationTime + "ms " + settings.easing | ||
+ | }); | ||
+ | } | ||
+ | $(this).one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(e) { | ||
+ | if (typeof settings.afterMove == 'function') settings.afterMove(index); | ||
+ | }); | ||
+ | } | ||
+ | |||
+ | $.fn.moveDown = function() { | ||
+ | var el = $(this) | ||
+ | index = $(settings.sectionContainer +".active").data("index"); | ||
+ | current = $(settings.sectionContainer + "[data-index='" + index + "']"); | ||
+ | next = $(settings.sectionContainer + "[data-index='" + (index + 1) + "']"); | ||
+ | if(next.length < 1) { | ||
+ | if (settings.loop == true) { | ||
+ | pos = 0; | ||
+ | next = $(settings.sectionContainer + "[data-index='1']"); | ||
+ | } else { | ||
+ | return | ||
+ | } | ||
+ | |||
+ | }else { | ||
+ | pos = (index * 100) * -1; | ||
+ | } | ||
+ | if (typeof settings.beforeMove == 'function') settings.beforeMove( next.data("index")); | ||
+ | current.removeClass("active") | ||
+ | next.addClass("active"); | ||
+ | if(settings.pagination == true) { | ||
+ | $(".onepage-pagination li a" + "[data-index='" + index + "']").removeClass("active"); | ||
+ | $(".onepage-pagination li a" + "[data-index='" + next.data("index") + "']").addClass("active"); | ||
+ | } | ||
+ | |||
+ | $("body")[0].className = $("body")[0].className.replace(/\bviewing-page-\d.*?\b/g, ''); | ||
+ | $("body").addClass("viewing-page-"+next.data("index")) | ||
+ | |||
+ | if (history.replaceState && settings.updateURL == true) { | ||
+ | var href = window.location.href.substr(0,window.location.href.indexOf('#')) + "#" + (index + 1); | ||
+ | history.pushState( {}, document.title, href ); | ||
+ | } | ||
+ | el.transformPage(settings, pos, next.data("index")); | ||
+ | } | ||
+ | |||
+ | $.fn.moveUp = function() { | ||
+ | var el = $(this) | ||
+ | index = $(settings.sectionContainer +".active").data("index"); | ||
+ | current = $(settings.sectionContainer + "[data-index='" + index + "']"); | ||
+ | next = $(settings.sectionContainer + "[data-index='" + (index - 1) + "']"); | ||
+ | |||
+ | if(next.length < 1) { | ||
+ | if (settings.loop == true) { | ||
+ | pos = ((total - 1) * 100) * -1; | ||
+ | next = $(settings.sectionContainer + "[data-index='"+total+"']"); | ||
+ | } | ||
+ | else { | ||
+ | return | ||
+ | } | ||
+ | }else { | ||
+ | pos = ((next.data("index") - 1) * 100) * -1; | ||
+ | } | ||
+ | if (typeof settings.beforeMove == 'function') settings.beforeMove(next.data("index")); | ||
+ | current.removeClass("active") | ||
+ | next.addClass("active") | ||
+ | if(settings.pagination == true) { | ||
+ | $(".onepage-pagination li a" + "[data-index='" + index + "']").removeClass("active"); | ||
+ | $(".onepage-pagination li a" + "[data-index='" + next.data("index") + "']").addClass("active"); | ||
+ | } | ||
+ | $("body")[0].className = $("body")[0].className.replace(/\bviewing-page-\d.*?\b/g, ''); | ||
+ | $("body").addClass("viewing-page-"+next.data("index")) | ||
+ | |||
+ | if (history.replaceState && settings.updateURL == true) { | ||
+ | var href = window.location.href.substr(0,window.location.href.indexOf('#')) + "#" + (index - 1); | ||
+ | history.pushState( {}, document.title, href ); | ||
+ | } | ||
+ | el.transformPage(settings, pos, next.data("index")); | ||
+ | } | ||
+ | |||
+ | $.fn.moveTo = function(page_index) { | ||
+ | current = $(settings.sectionContainer + ".active") | ||
+ | next = $(settings.sectionContainer + "[data-index='" + (page_index) + "']"); | ||
+ | if(next.length > 0) { | ||
+ | if (typeof settings.beforeMove == 'function') settings.beforeMove(next.data("index")); | ||
+ | current.removeClass("active") | ||
+ | next.addClass("active") | ||
+ | $(".onepage-pagination li a" + ".active").removeClass("active"); | ||
+ | $(".onepage-pagination li a" + "[data-index='" + (page_index) + "']").addClass("active"); | ||
+ | $("body")[0].className = $("body")[0].className.replace(/\bviewing-page-\d.*?\b/g, ''); | ||
+ | $("body").addClass("viewing-page-"+next.data("index")) | ||
+ | |||
+ | pos = ((page_index - 1) * 100) * -1; | ||
+ | |||
+ | if (history.replaceState && settings.updateURL == true) { | ||
+ | var href = window.location.href.substr(0,window.location.href.indexOf('#')) + "#" + (page_index - 1); | ||
+ | history.pushState( {}, document.title, href ); | ||
+ | } | ||
+ | el.transformPage(settings, pos, page_index); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | function responsive() { | ||
+ | //start modification | ||
+ | var valForTest = false; | ||
+ | var typeOfRF = typeof settings.responsiveFallback | ||
+ | |||
+ | if(typeOfRF == "number"){ | ||
+ | valForTest = $(window).width() < settings.responsiveFallback; | ||
+ | } | ||
+ | if(typeOfRF == "boolean"){ | ||
+ | valForTest = settings.responsiveFallback; | ||
+ | } | ||
+ | if(typeOfRF == "function"){ | ||
+ | valFunction = settings.responsiveFallback(); | ||
+ | valForTest = valFunction; | ||
+ | typeOFv = typeof valForTest; | ||
+ | if(typeOFv == "number"){ | ||
+ | valForTest = $(window).width() < valFunction; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | //end modification | ||
+ | if (valForTest) { | ||
+ | $("body").addClass("disabled-onepage-scroll"); | ||
+ | $(document).unbind('mousewheel DOMMouseScroll MozMousePixelScroll'); | ||
+ | el.swipeEvents().unbind("swipeDown swipeUp"); | ||
+ | } else { | ||
+ | if($("body").hasClass("disabled-onepage-scroll")) { | ||
+ | $("body").removeClass("disabled-onepage-scroll"); | ||
+ | $("html, body, .wrapper").animate({ scrollTop: 0 }, "fast"); | ||
+ | } | ||
+ | |||
+ | |||
+ | el.swipeEvents().bind("swipeDown", function(event){ | ||
+ | if (!$("body").hasClass("disabled-onepage-scroll")) event.preventDefault(); | ||
+ | el.moveUp(); | ||
+ | }).bind("swipeUp", function(event){ | ||
+ | if (!$("body").hasClass("disabled-onepage-scroll")) event.preventDefault(); | ||
+ | el.moveDown(); | ||
+ | }); | ||
+ | |||
+ | $(document).bind('mousewheel DOMMouseScroll MozMousePixelScroll', function(event) { | ||
+ | event.preventDefault(); | ||
+ | var delta = event.originalEvent.wheelDelta || -event.originalEvent.detail; | ||
+ | init_scroll(event, delta); | ||
+ | }); | ||
+ | } | ||
+ | } | ||
+ | |||
+ | |||
+ | function init_scroll(event, delta) { | ||
+ | deltaOfInterest = delta; | ||
+ | var timeNow = new Date().getTime(); | ||
+ | // Cancel scroll if currently animating or within quiet period | ||
+ | if(timeNow - lastAnimation < quietPeriod + settings.animationTime) { | ||
+ | event.preventDefault(); | ||
+ | return; | ||
+ | } | ||
+ | |||
+ | if (deltaOfInterest < 0) { | ||
+ | el.moveDown() | ||
+ | } else { | ||
+ | el.moveUp() | ||
+ | } | ||
+ | lastAnimation = timeNow; | ||
+ | } | ||
+ | |||
+ | // Prepare everything before binding wheel scroll | ||
+ | |||
+ | el.addClass("onepage-wrapper").css("position","relative"); | ||
+ | $.each( sections, function(i) { | ||
+ | $(this).css({ | ||
+ | position: "absolute", | ||
+ | top: topPos + "%" | ||
+ | }).addClass("section").attr("data-index", i+1); | ||
+ | |||
+ | |||
+ | $(this).css({ | ||
+ | position: "absolute", | ||
+ | left: ( settings.direction == 'horizontal' ) | ||
+ | ? leftPos + "%" | ||
+ | : 0, | ||
+ | top: ( settings.direction == 'vertical' || settings.direction != 'horizontal' ) | ||
+ | ? topPos + "%" | ||
+ | : 0 | ||
+ | }); | ||
+ | |||
+ | if (settings.direction == 'horizontal') | ||
+ | leftPos = leftPos + 100; | ||
+ | else | ||
+ | topPos = topPos + 100; | ||
+ | |||
+ | |||
+ | if(settings.pagination == true) { | ||
+ | paginationList += "<li><a data-index='"+(i+1)+"' href='#" + (i+1) + "'></a></li>" | ||
+ | } | ||
+ | }); | ||
+ | |||
+ | el.swipeEvents().bind("swipeDown", function(event){ | ||
+ | if (!$("body").hasClass("disabled-onepage-scroll")) event.preventDefault(); | ||
+ | el.moveUp(); | ||
+ | }).bind("swipeUp", function(event){ | ||
+ | if (!$("body").hasClass("disabled-onepage-scroll")) event.preventDefault(); | ||
+ | el.moveDown(); | ||
+ | }); | ||
+ | |||
+ | // Create Pagination and Display Them | ||
+ | if (settings.pagination == true) { | ||
+ | if ($('ul.onepage-pagination').length < 1) $("<ul class='onepage-pagination'></ul>").prependTo("body"); | ||
+ | |||
+ | if( settings.direction == 'horizontal' ) { | ||
+ | posLeft = (el.find(".onepage-pagination").width() / 2) * -1; | ||
+ | el.find(".onepage-pagination").css("margin-left", posLeft); | ||
+ | } else { | ||
+ | posTop = (el.find(".onepage-pagination").height() / 2) * -1; | ||
+ | el.find(".onepage-pagination").css("margin-top", posTop); | ||
+ | } | ||
+ | $('ul.onepage-pagination').html(paginationList); | ||
+ | } | ||
+ | |||
+ | if(window.location.hash != "" && window.location.hash != "#1") { | ||
+ | init_index = window.location.hash.replace("#", "") | ||
+ | |||
+ | if (parseInt(init_index) <= total && parseInt(init_index) > 0) { | ||
+ | $(settings.sectionContainer + "[data-index='" + init_index + "']").addClass("active") | ||
+ | $("body").addClass("viewing-page-"+ init_index) | ||
+ | if(settings.pagination == true) $(".onepage-pagination li a" + "[data-index='" + init_index + "']").addClass("active"); | ||
+ | |||
+ | next = $(settings.sectionContainer + "[data-index='" + (init_index) + "']"); | ||
+ | if(next) { | ||
+ | next.addClass("active") | ||
+ | if(settings.pagination == true) $(".onepage-pagination li a" + "[data-index='" + (init_index) + "']").addClass("active"); | ||
+ | $("body")[0].className = $("body")[0].className.replace(/\bviewing-page-\d.*?\b/g, ''); | ||
+ | $("body").addClass("viewing-page-"+next.data("index")) | ||
+ | if (history.replaceState && settings.updateURL == true) { | ||
+ | var href = window.location.href.substr(0,window.location.href.indexOf('#')) + "#" + (init_index); | ||
+ | history.pushState( {}, document.title, href ); | ||
+ | } | ||
+ | } | ||
+ | pos = ((init_index - 1) * 100) * -1; | ||
+ | el.transformPage(settings, pos, init_index); | ||
+ | } else { | ||
+ | $(settings.sectionContainer + "[data-index='1']").addClass("active") | ||
+ | $("body").addClass("viewing-page-1") | ||
+ | if(settings.pagination == true) $(".onepage-pagination li a" + "[data-index='1']").addClass("active"); | ||
+ | } | ||
+ | }else{ | ||
+ | $(settings.sectionContainer + "[data-index='1']").addClass("active") | ||
+ | $("body").addClass("viewing-page-1") | ||
+ | if(settings.pagination == true) $(".onepage-pagination li a" + "[data-index='1']").addClass("active"); | ||
+ | } | ||
+ | |||
+ | if(settings.pagination == true) { | ||
+ | $(".onepage-pagination li a").click(function (){ | ||
+ | var page_index = $(this).data("index"); | ||
+ | el.moveTo(page_index); | ||
+ | }); | ||
+ | } | ||
+ | |||
+ | |||
+ | $(document).bind('mousewheel DOMMouseScroll MozMousePixelScroll', function(event) { | ||
+ | event.preventDefault(); | ||
+ | var delta = event.originalEvent.wheelDelta || -event.originalEvent.detail; | ||
+ | if(!$("body").hasClass("disabled-onepage-scroll")) init_scroll(event, delta); | ||
+ | }); | ||
+ | |||
+ | |||
+ | if(settings.responsiveFallback != false) { | ||
+ | $(window).resize(function() { | ||
+ | responsive(); | ||
+ | }); | ||
+ | |||
+ | responsive(); | ||
+ | } | ||
+ | |||
+ | if(settings.keyboard == true) { | ||
+ | $(document).keydown(function(e) { | ||
+ | var tag = e.target.tagName.toLowerCase(); | ||
+ | |||
+ | if (!$("body").hasClass("disabled-onepage-scroll")) { | ||
+ | switch(e.which) { | ||
+ | case 38: | ||
+ | if (tag != 'input' && tag != 'textarea') el.moveUp() | ||
+ | break; | ||
+ | case 40: | ||
+ | if (tag != 'input' && tag != 'textarea') el.moveDown() | ||
+ | break; | ||
+ | case 32: //spacebar | ||
+ | if (tag != 'input' && tag != 'textarea') el.moveDown() | ||
+ | break; | ||
+ | case 33: //pageg up | ||
+ | if (tag != 'input' && tag != 'textarea') el.moveUp() | ||
+ | break; | ||
+ | case 34: //page dwn | ||
+ | if (tag != 'input' && tag != 'textarea') el.moveDown() | ||
+ | break; | ||
+ | case 36: //home | ||
+ | el.moveTo(1); | ||
+ | break; | ||
+ | case 35: //end | ||
+ | el.moveTo(total); | ||
+ | break; | ||
+ | default: return; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | }); | ||
+ | } | ||
+ | return false; | ||
+ | } | ||
+ | |||
+ | |||
+ | }(window.jQuery); |
Latest revision as of 13:22, 16 September 2015
!function($){
var defaults = { sectionContainer: "section", easing: "ease", animationTime: 1000, pagination: true, updateURL: false, keyboard: true, beforeMove: null, afterMove: null, loop: true, responsiveFallback: false, direction : 'vertical'
};
/*------------------------------------------------*/ /* Credit: Eike Send for the awesome swipe event */ /*------------------------------------------------*/
$.fn.swipeEvents = function() {
return this.each(function() {
var startX, startY, $this = $(this);
$this.bind('touchstart', touchstart);
function touchstart(event) { var touches = event.originalEvent.touches; if (touches && touches.length) { startX = touches[0].pageX; startY = touches[0].pageY; $this.bind('touchmove', touchmove); } }
function touchmove(event) { var touches = event.originalEvent.touches; if (touches && touches.length) { var deltaX = startX - touches[0].pageX; var deltaY = startY - touches[0].pageY;
if (deltaX >= 50) { $this.trigger("swipeLeft"); } if (deltaX <= -50) { $this.trigger("swipeRight"); } if (deltaY >= 50) { $this.trigger("swipeUp"); } if (deltaY <= -50) { $this.trigger("swipeDown"); } if (Math.abs(deltaX) >= 50 || Math.abs(deltaY) >= 50) { $this.unbind('touchmove', touchmove); } } }
}); };
$.fn.onepage_scroll = function(options){ var settings = $.extend({}, defaults, options), el = $(this), sections = $(settings.sectionContainer) total = sections.length, status = "off", topPos = 0, leftPos = 0, lastAnimation = 0, quietPeriod = 500, paginationList = "";
$.fn.transformPage = function(settings, pos, index) { if (typeof settings.beforeMove == 'function') settings.beforeMove(index);
// Just a simple edit that makes use of modernizr to detect an IE8 browser and changes the transform method into // an top animate so IE8 users can also use this script. if($('html').hasClass('ie8')){ if (settings.direction == 'horizontal') { var toppos = (el.width()/100)*pos; $(this).animate({left: toppos+'px'},settings.animationTime); } else { var toppos = (el.height()/100)*pos; $(this).animate({top: toppos+'px'},settings.animationTime); } } else{ $(this).css({ "-webkit-transform": ( settings.direction == 'horizontal' ) ? "translate3d(" + pos + "%, 0, 0)" : "translate3d(0, " + pos + "%, 0)", "-webkit-transition": "all " + settings.animationTime + "ms " + settings.easing, "-moz-transform": ( settings.direction == 'horizontal' ) ? "translate3d(" + pos + "%, 0, 0)" : "translate3d(0, " + pos + "%, 0)", "-moz-transition": "all " + settings.animationTime + "ms " + settings.easing, "-ms-transform": ( settings.direction == 'horizontal' ) ? "translate3d(" + pos + "%, 0, 0)" : "translate3d(0, " + pos + "%, 0)", "-ms-transition": "all " + settings.animationTime + "ms " + settings.easing, "transform": ( settings.direction == 'horizontal' ) ? "translate3d(" + pos + "%, 0, 0)" : "translate3d(0, " + pos + "%, 0)", "transition": "all " + settings.animationTime + "ms " + settings.easing }); } $(this).one('webkitTransitionEnd otransitionend oTransitionEnd msTransitionEnd transitionend', function(e) { if (typeof settings.afterMove == 'function') settings.afterMove(index); }); }
$.fn.moveDown = function() { var el = $(this) index = $(settings.sectionContainer +".active").data("index"); current = $(settings.sectionContainer + "[data-index='" + index + "']"); next = $(settings.sectionContainer + "[data-index='" + (index + 1) + "']"); if(next.length < 1) { if (settings.loop == true) { pos = 0; next = $(settings.sectionContainer + "[data-index='1']"); } else { return }
}else { pos = (index * 100) * -1; } if (typeof settings.beforeMove == 'function') settings.beforeMove( next.data("index")); current.removeClass("active") next.addClass("active"); if(settings.pagination == true) { $(".onepage-pagination li a" + "[data-index='" + index + "']").removeClass("active"); $(".onepage-pagination li a" + "[data-index='" + next.data("index") + "']").addClass("active"); }
$("body")[0].className = $("body")[0].className.replace(/\bviewing-page-\d.*?\b/g, ); $("body").addClass("viewing-page-"+next.data("index"))
if (history.replaceState && settings.updateURL == true) { var href = window.location.href.substr(0,window.location.href.indexOf('#')) + "#" + (index + 1); history.pushState( {}, document.title, href ); } el.transformPage(settings, pos, next.data("index")); }
$.fn.moveUp = function() { var el = $(this) index = $(settings.sectionContainer +".active").data("index"); current = $(settings.sectionContainer + "[data-index='" + index + "']"); next = $(settings.sectionContainer + "[data-index='" + (index - 1) + "']");
if(next.length < 1) { if (settings.loop == true) { pos = ((total - 1) * 100) * -1; next = $(settings.sectionContainer + "[data-index='"+total+"']"); } else { return } }else { pos = ((next.data("index") - 1) * 100) * -1; } if (typeof settings.beforeMove == 'function') settings.beforeMove(next.data("index")); current.removeClass("active") next.addClass("active") if(settings.pagination == true) { $(".onepage-pagination li a" + "[data-index='" + index + "']").removeClass("active"); $(".onepage-pagination li a" + "[data-index='" + next.data("index") + "']").addClass("active"); } $("body")[0].className = $("body")[0].className.replace(/\bviewing-page-\d.*?\b/g, ); $("body").addClass("viewing-page-"+next.data("index"))
if (history.replaceState && settings.updateURL == true) { var href = window.location.href.substr(0,window.location.href.indexOf('#')) + "#" + (index - 1); history.pushState( {}, document.title, href ); } el.transformPage(settings, pos, next.data("index")); }
$.fn.moveTo = function(page_index) { current = $(settings.sectionContainer + ".active") next = $(settings.sectionContainer + "[data-index='" + (page_index) + "']"); if(next.length > 0) { if (typeof settings.beforeMove == 'function') settings.beforeMove(next.data("index")); current.removeClass("active") next.addClass("active") $(".onepage-pagination li a" + ".active").removeClass("active"); $(".onepage-pagination li a" + "[data-index='" + (page_index) + "']").addClass("active"); $("body")[0].className = $("body")[0].className.replace(/\bviewing-page-\d.*?\b/g, ); $("body").addClass("viewing-page-"+next.data("index"))
pos = ((page_index - 1) * 100) * -1;
if (history.replaceState && settings.updateURL == true) { var href = window.location.href.substr(0,window.location.href.indexOf('#')) + "#" + (page_index - 1); history.pushState( {}, document.title, href ); } el.transformPage(settings, pos, page_index); } }
function responsive() { //start modification var valForTest = false; var typeOfRF = typeof settings.responsiveFallback
if(typeOfRF == "number"){ valForTest = $(window).width() < settings.responsiveFallback; } if(typeOfRF == "boolean"){ valForTest = settings.responsiveFallback; } if(typeOfRF == "function"){ valFunction = settings.responsiveFallback(); valForTest = valFunction; typeOFv = typeof valForTest; if(typeOFv == "number"){ valForTest = $(window).width() < valFunction; } }
//end modification if (valForTest) { $("body").addClass("disabled-onepage-scroll"); $(document).unbind('mousewheel DOMMouseScroll MozMousePixelScroll'); el.swipeEvents().unbind("swipeDown swipeUp"); } else { if($("body").hasClass("disabled-onepage-scroll")) { $("body").removeClass("disabled-onepage-scroll"); $("html, body, .wrapper").animate({ scrollTop: 0 }, "fast"); }
el.swipeEvents().bind("swipeDown", function(event){ if (!$("body").hasClass("disabled-onepage-scroll")) event.preventDefault(); el.moveUp(); }).bind("swipeUp", function(event){ if (!$("body").hasClass("disabled-onepage-scroll")) event.preventDefault(); el.moveDown(); });
$(document).bind('mousewheel DOMMouseScroll MozMousePixelScroll', function(event) { event.preventDefault(); var delta = event.originalEvent.wheelDelta || -event.originalEvent.detail; init_scroll(event, delta); }); } }
function init_scroll(event, delta) { deltaOfInterest = delta; var timeNow = new Date().getTime(); // Cancel scroll if currently animating or within quiet period if(timeNow - lastAnimation < quietPeriod + settings.animationTime) { event.preventDefault(); return; }
if (deltaOfInterest < 0) { el.moveDown() } else { el.moveUp() } lastAnimation = timeNow; }
// Prepare everything before binding wheel scroll
el.addClass("onepage-wrapper").css("position","relative"); $.each( sections, function(i) { $(this).css({ position: "absolute", top: topPos + "%" }).addClass("section").attr("data-index", i+1);
$(this).css({ position: "absolute", left: ( settings.direction == 'horizontal' ) ? leftPos + "%" : 0, top: ( settings.direction == 'vertical' || settings.direction != 'horizontal' ) ? topPos + "%" : 0 });
if (settings.direction == 'horizontal') leftPos = leftPos + 100; else topPos = topPos + 100;
if(settings.pagination == true) {paginationList += "
} });
el.swipeEvents().bind("swipeDown", function(event){ if (!$("body").hasClass("disabled-onepage-scroll")) event.preventDefault(); el.moveUp(); }).bind("swipeUp", function(event){ if (!$("body").hasClass("disabled-onepage-scroll")) event.preventDefault(); el.moveDown(); });
// Create Pagination and Display Them if (settings.pagination == true) {if ($('ul.onepage-pagination').length < 1) $("
if( settings.direction == 'horizontal' ) { posLeft = (el.find(".onepage-pagination").width() / 2) * -1; el.find(".onepage-pagination").css("margin-left", posLeft); } else { posTop = (el.find(".onepage-pagination").height() / 2) * -1; el.find(".onepage-pagination").css("margin-top", posTop); } $('ul.onepage-pagination').html(paginationList); }
if(window.location.hash != "" && window.location.hash != "#1") { init_index = window.location.hash.replace("#", "")
if (parseInt(init_index) <= total && parseInt(init_index) > 0) { $(settings.sectionContainer + "[data-index='" + init_index + "']").addClass("active") $("body").addClass("viewing-page-"+ init_index) if(settings.pagination == true) $(".onepage-pagination li a" + "[data-index='" + init_index + "']").addClass("active");
next = $(settings.sectionContainer + "[data-index='" + (init_index) + "']"); if(next) { next.addClass("active") if(settings.pagination == true) $(".onepage-pagination li a" + "[data-index='" + (init_index) + "']").addClass("active"); $("body")[0].className = $("body")[0].className.replace(/\bviewing-page-\d.*?\b/g, ); $("body").addClass("viewing-page-"+next.data("index")) if (history.replaceState && settings.updateURL == true) { var href = window.location.href.substr(0,window.location.href.indexOf('#')) + "#" + (init_index); history.pushState( {}, document.title, href ); } } pos = ((init_index - 1) * 100) * -1; el.transformPage(settings, pos, init_index); } else { $(settings.sectionContainer + "[data-index='1']").addClass("active") $("body").addClass("viewing-page-1") if(settings.pagination == true) $(".onepage-pagination li a" + "[data-index='1']").addClass("active"); } }else{ $(settings.sectionContainer + "[data-index='1']").addClass("active") $("body").addClass("viewing-page-1") if(settings.pagination == true) $(".onepage-pagination li a" + "[data-index='1']").addClass("active"); }
if(settings.pagination == true) { $(".onepage-pagination li a").click(function (){ var page_index = $(this).data("index"); el.moveTo(page_index); }); }
$(document).bind('mousewheel DOMMouseScroll MozMousePixelScroll', function(event) { event.preventDefault(); var delta = event.originalEvent.wheelDelta || -event.originalEvent.detail; if(!$("body").hasClass("disabled-onepage-scroll")) init_scroll(event, delta); });
if(settings.responsiveFallback != false) { $(window).resize(function() { responsive(); });
responsive(); }
if(settings.keyboard == true) { $(document).keydown(function(e) { var tag = e.target.tagName.toLowerCase();
if (!$("body").hasClass("disabled-onepage-scroll")) { switch(e.which) { case 38: if (tag != 'input' && tag != 'textarea') el.moveUp() break; case 40: if (tag != 'input' && tag != 'textarea') el.moveDown() break; case 32: //spacebar if (tag != 'input' && tag != 'textarea') el.moveDown() break; case 33: //pageg up if (tag != 'input' && tag != 'textarea') el.moveUp() break; case 34: //page dwn if (tag != 'input' && tag != 'textarea') el.moveDown() break; case 36: //home el.moveTo(1); break; case 35: //end el.moveTo(total); break; default: return; } }
}); } return false; }
}(window.jQuery);