-
Notifications
You must be signed in to change notification settings - Fork 44
/
Copy pathzepto.onepagescroll.min.js
1 lines (1 loc) · 6.6 KB
/
zepto.onepagescroll.min.js
1
(function(e){e.extend(e.fn,{onePageScroll:function(t){function d(e,t){var n=t;if(n<0){i.moveDown()}else{i.moveUp()}}function w(){var e=this.dataset.index;i.moveTo(e)}function E(e){e.preventDefault();var t=e.wheelDelta||-e.detail;if(!h.hasClass("disabled-onepage-scroll"))d(e,t)}function S(e){var t=e.target.tagName.toLowerCase();if(!h.hasClass("disabled-onepage-scroll")){switch(e.which){case 38:if(t!="input"&&t!="textarea")i.moveUp();break;case 40:if(t!="input"&&t!="textarea")i.moveDown();break;default:return}}return false}var n={sectionContainer:"section",easing:"ease",animationTime:1e3,pagination:true,updateURL:false,keyboard:true,beforeMove:null,afterMove:null,loop:false,responsiveFallback:false};var r=e.extend({},n,t),i=e(this),s=e(r.sectionContainer),o=s.length,u="off",a=0,f=0,f=0,l=300,c="",h=e("body");e.fn.swipeEvents=function(){return this.each(function(){function i(e){var i=e.touches;if(i&&i.length){t=i[0].pageX;n=i[0].pageY;r.on("touchmove",s)}}function s(e){var i=e.touches;if(i&&i.length){e.preventDefault();var o=t-i[0].pageX;var u=n-i[0].pageY;if(o>=50){r.trigger("swipeLeft")}if(o<=-50){r.trigger("swipeRight")}if(u>=50){r.trigger("swipeUp")}if(u<=-50){r.trigger("swipeDown")}if(Math.abs(o)>=50||Math.abs(u)>=50){r.off("touchmove",s)}}}var t,n,r=e(this);r.on("touchstart",i)})};e.fn.transformPage=function(t,n,r,i){var s=e(this);if(typeof t.beforeMove=="function")t.beforeMove(r,i);s.animate({translate3d:"0, "+n+"%, 0"},t.animationTime,t.easing,function(){if(typeof t.afterMove=="function")t.afterMove(r)})};e.fn.moveDown=function(){var t=(new Date).getTime();if(t-f<l+r.animationTime){event.preventDefault();return}var n=e(r.sectionContainer+".active").data("index"),i=e(r.sectionContainer+"[data-index='"+n+"']"),s=e(r.sectionContainer+"[data-index='"+(parseInt(n)+1)+"']"),o=e(this);if(s.length<1){if(r.loop==true){b=0;s=e(r.sectionContainer+"[data-index='1']")}else{return}}else{b=n*100*-1}var u=s.data("index");i.removeClass("active");s.addClass("active");if(r.pagination==true){e(".onepage-pagination li a"+"[data-index='"+n+"']").removeClass("active");e(".onepage-pagination li a"+"[data-index='"+u+"']").addClass("active")}document.body.className=document.body.className.replace(/\bviewing-page-\d.*?\b/g,"");h.addClass("viewing-page-"+u);if(history.replaceState&&r.updateURL==true){var a=window.location.href.substr(0,window.location.href.indexOf("#"))+"#"+(parseInt(n)+1);history.pushState({},document.title,a)}o.transformPage(r,b,u,s);f=t};e.fn.moveUp=function(){var t=(new Date).getTime();if(t-f<l+r.animationTime){event.preventDefault();return}var n=e(r.sectionContainer+".active").data("index"),i=e(r.sectionContainer+"[data-index='"+n+"']"),s=e(r.sectionContainer+"[data-index='"+(parseInt(n)-1)+"']"),u=e(this);if(s.length<1){if(r.loop==true){b=(o-1)*100*-1;s=e(r.sectionContainer+"[data-index='"+o+"']")}else{return}}else{b=(s.data("index")-1)*100*-1}var a=s.data("index");i.removeClass("active");s.addClass("active");if(r.pagination==true){e(".onepage-pagination li a"+"[data-index='"+n+"']").removeClass("active");e(".onepage-pagination li a"+"[data-index='"+a+"']").addClass("active")}document.body.className=document.body.className.replace(/\bviewing-page-\d.*?\b/g,"");h.addClass("viewing-page-"+a);if(history.replaceState&&r.updateURL==true){var c=window.location.href.substr(0,window.location.href.indexOf("#"))+"#"+(parseInt(n)-1);history.pushState({},document.title,c)}u.transformPage(r,b,a,s);f=t};e.fn.moveTo=function(t){var n=(new Date).getTime();if(n-f<l+r.animationTime){event.preventDefault();return}var i=e(r.sectionContainer+".active"),s=e(r.sectionContainer+"[data-index='"+t+"']"),o=e(this);if(s.length>0){var u=s.data("index");i.removeClass("active");s.addClass("active");e(".onepage-pagination li a"+".active").removeClass("active");e(".onepage-pagination li a"+"[data-index='"+t+"']").addClass("active");document.body.className=document.body.className.replace(/\bviewing-page-\d.*?\b/g,"");h.addClass("viewing-page-"+u);b=(t-1)*100*-1;if(history.replaceState&&r.updateURL==true){var a=window.location.href.substr(0,window.location.href.indexOf("#"))+"#"+(parseInt(t)-1);history.pushState({},document.title,a)}o.transformPage(r,b,t,s);f=n}};var p=function(){if(e(document).width()<r.responsiveFallback){h.addClass("disabled-onepage-scroll");e(document).off("mousewheel DOMMouseScroll",E);e(document).off("swipeDown swipeUp")}else{if(h.hasClass("disabled-onepage-scroll")){bodyremoveClass("disabled-onepage-scroll");e("html, body, .wrapper").animate({scrollTop:0},"fast")}e(document).swipeEvents().on("swipeDown",function(t){if(!e("body").hasClass("disabled-onepage-scroll"))t.preventDefault();i.moveUp()}).on("swipeUp",function(t){if(!e("body").hasClass("disabled-onepage-scroll"))t.preventDefault();i.moveDown()});e(document).on("mousewheel DOMMouseScroll",E)}};i.addClass("onepage-wrapper");i.css("position","relative");e.each(s,function(t,n){e(this).addClass("ops-section").data("index",t+1);a=a+100;if(r.pagination==true){c+="<li><a data-index='"+(t+1)+"' href='#"+(t+1)+"'></a></li>"}});e(document).swipeEvents().on("swipeDown",function(t){if(!e("body").hasClass("disabled-onepage-scroll"))t.preventDefault();i.moveUp()}).on("swipeUp",function(t){if(!e("body").hasClass("disabled-onepage-scroll"))t.preventDefault();i.moveDown()});if(r.pagination==true){e("<ul class='onepage-pagination'>"+c+"</ul>").prependTo("body");posTop=i.find(".onepage-pagination").height()/2*-1;i.find(".onepage-pagination").css("margin-top",posTop)}if(window.location.hash!=""&&window.location.hash!="#1"){var v=window.location.hash.replace("#",""),m=e(r.sectionContainer+"[data-index='"+v+"']"),g=m.data("index");e(r.sectionContainer+"[data-index='"+v+"']").addClass("active");h.addClass("viewing-page-"+v);if(r.pagination==true)e(".onepage-pagination li a"+"[data-index='"+v+"']").addClass("active");if(m){m.addClass("active");if(r.pagination==true)e(".onepage-pagination li a"+"[data-index='"+v+"']").addClass("active");document.body.className=document.body.className.replace(/\bviewing-page-\d.*?\b/g,"");h.addClass("viewing-page-"+g);if(history.replaceState&&r.updateURL==true){var y=window.location.href.substr(0,window.location.href.indexOf("#"))+"#"+v;history.pushState({},document.title,y)}}var b=(v-1)*100*-1;i.transformPage(r,b,v)}else{e(r.sectionContainer+"[data-index='1']").addClass("active");h.addClass("viewing-page-1");if(r.pagination==true)e(".onepage-pagination li a[data-index='1']").addClass("active")}if(r.pagination==true){e(".onepage-pagination li a").click(function(){var t=e(this).data("index");i.moveTo(t)})}e(document).on("mousewheel DOMMouseScroll",E);if(r.responsiveFallback!=false){window.onresize=function(){p()};p()}if(r.keyboard==true){document.onkeydown=S}return false}})})(Zepto)