diff --git a/jquery.scrollme.js b/jquery.scrollme.js index cffb929..b12080a 100644 --- a/jquery.scrollme.js +++ b/jquery.scrollme.js @@ -92,19 +92,37 @@ var scrollme = ( function( $ ) 'page:change' // Turbolinks ]; + // ---------------------------------------------------------------------------------------------------- + // Check if is mobile + _this.is_mobile = function() { + var check = false; + + (function( a ) { + if(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))) { + check = true; + } + })(navigator.userAgent||navigator.vendor||window.opera); + + return check; + } + // ---------------------------------------------------------------------------------------------------- // Initialisation conditions - _this.init_if = function() { return true; } + _this.init_if = function() { return true } // ---------------------------------------------------------------------------------------------------- // Initialisation - _this.init = function() + _this.init = function(disable_on_mobile) { - // Cancel if initialisation conditions not met - - if( !_this.init_if() ) return false; + // Cancel initialization if the mobile option is set as a parameter + + if(disable_on_mobile && disable_on_mobile === "disable_on_mobile") { + if(_this.is_mobile()) return false; + } else if(disable_on_mobile) { + throw "unknown parameter '" + disable_on_mobile + "' on init()"; + } // Load all elements to animate @@ -180,17 +198,17 @@ var scrollme = ( function( $ ) var properties = {}; - if( effect.element.is( '[data-opacity]' ) ) properties.opacity = effect.element.data( 'opacity' ); - if( effect.element.is( '[data-translatex]' ) ) properties.translatex = effect.element.data( 'translatex' ); - if( effect.element.is( '[data-translatey]' ) ) properties.translatey = effect.element.data( 'translatey' ); - if( effect.element.is( '[data-translatez]' ) ) properties.translatez = effect.element.data( 'translatez' ); - if( effect.element.is( '[data-rotatex]' ) ) properties.rotatex = effect.element.data( 'rotatex' ); - if( effect.element.is( '[data-rotatey]' ) ) properties.rotatey = effect.element.data( 'rotatey' ); - if( effect.element.is( '[data-rotatez]' ) ) properties.rotatez = effect.element.data( 'rotatez' ); - if( effect.element.is( '[data-scale]' ) ) properties.scale = effect.element.data( 'scale' ); - if( effect.element.is( '[data-scalex]' ) ) properties.scalex = effect.element.data( 'scalex' ); - if( effect.element.is( '[data-scaley]' ) ) properties.scaley = effect.element.data( 'scaley' ); - if( effect.element.is( '[data-scalez]' ) ) properties.scalez = effect.element.data( 'scalez' ); + if( effect.element.is( '[data-opacity]' ) ) properties.opacity = effect.element.data( 'opacity' ); + if( effect.element.is( '[data-translatex]' ) ) properties.translatex = effect.element.data( 'translatex' ); + if( effect.element.is( '[data-translatey]' ) ) properties.translatey = effect.element.data( 'translatey' ); + if( effect.element.is( '[data-translatez]' ) ) properties.translatez = effect.element.data( 'translatez' ); + if( effect.element.is( '[data-rotatex]' ) ) properties.rotatex = effect.element.data( 'rotatex' ); + if( effect.element.is( '[data-rotatey]' ) ) properties.rotatey = effect.element.data( 'rotatey' ); + if( effect.element.is( '[data-rotatez]' ) ) properties.rotatez = effect.element.data( 'rotatez' ); + if( effect.element.is( '[data-scale]' ) ) properties.scale = effect.element.data( 'scale' ); + if( effect.element.is( '[data-scalex]' ) ) properties.scalex = effect.element.data( 'scalex' ); + if( effect.element.is( '[data-scaley]' ) ) properties.scaley = effect.element.data( 'scaley' ); + if( effect.element.is( '[data-scalez]' ) ) properties.scalez = effect.element.data( 'scalez' ); effect.properties = properties; @@ -200,6 +218,7 @@ var scrollme = ( function( $ ) element.effects = effects; _this.elements.push( element ); + //console.dir(element.effects); }); } @@ -243,6 +262,12 @@ var scrollme = ( function( $ ) { var effect = element.effects[e]; + console.dir(effect.properties); + + if( effect.properties.disableMobile && effect.properties.disableMobile === "true" ) { + console.log('nao anima viadu'); + } + // Get effect animation boundaries switch( effect.when ) @@ -444,7 +469,7 @@ var scrollme = ( function( $ ) // ---------------------------------------------------------------------------------------------------- // Bind initialisation - $document.on( _this.init_events.join( ' ' ) , function(){ _this.init(); } ); + //$document.on( _this.init_events.join( ' ' ) , function(){ _this.init(); } ); // ---------------------------------------------------------------------------------------------------- diff --git a/jquery.scrollme.min.js b/jquery.scrollme.min.js index d82af9a..2fd4b9d 100644 --- a/jquery.scrollme.min.js +++ b/jquery.scrollme.min.js @@ -3,4 +3,4 @@ // A jQuery plugin for adding simple scrolling effects to web pages // http://scrollme.nckprsn.com // ---------------------------------------------------------------------------------------------------- -var scrollme=(function(a){var d={};var c=a(document);var b=a(window);d.body_height=0;d.viewport_height=0;d.viewport_top=0;d.viewport_bottom=0;d.viewport_top_previous=-1;d.elements=[];d.elements_in_view=[];d.property_defaults={opacity:1,translatex:0,translatey:0,translatez:0,rotatex:0,rotatey:0,rotatez:0,scale:1,scalex:1,scaley:1,scalez:1};d.scrollme_selector=".scrollme";d.animateme_selector=".animateme";d.update_interval=10;d.easing_functions={linear:function(e){return e},easeout:function(e){return e*e*e},easein:function(e){e=1-e;return 1-(e*e*e)},easeinout:function(e){if(e<0.5){return(4*e*e*e)}else{e=1-e;return 1-(4*e*e*e)}}};d.init_events=["ready","page:load","page:change"];d.init_if=function(){return true};d.init=function(){if(!d.init_if()){return false}d.init_elements();d.on_resize();b.on("resize orientationchange",function(){d.on_resize()});b.load(function(){setTimeout(function(){d.on_resize()},100)});setInterval(d.update,d.update_interval);return true};d.init_elements=function(){a(d.scrollme_selector).each(function(){var e={};e.element=a(this);var f=[];a(this).find(d.animateme_selector).addBack(d.animateme_selector).each(function(){var h={};h.element=a(this);h.when=h.element.data("when");h.from=h.element.data("from");h.to=h.element.data("to");if(h.element.is("[data-crop]")){h.crop=h.element.data("crop")}else{h.crop=true}if(h.element.is("[data-easing]")){h.easing=d.easing_functions[h.element.data("easing")]}else{h.easing=d.easing_functions.easeout}var g={};if(h.element.is("[data-opacity]")){g.opacity=h.element.data("opacity")}if(h.element.is("[data-translatex]")){g.translatex=h.element.data("translatex")}if(h.element.is("[data-translatey]")){g.translatey=h.element.data("translatey")}if(h.element.is("[data-translatez]")){g.translatez=h.element.data("translatez")}if(h.element.is("[data-rotatex]")){g.rotatex=h.element.data("rotatex")}if(h.element.is("[data-rotatey]")){g.rotatey=h.element.data("rotatey")}if(h.element.is("[data-rotatez]")){g.rotatez=h.element.data("rotatez")}if(h.element.is("[data-scale]")){g.scale=h.element.data("scale")}if(h.element.is("[data-scalex]")){g.scalex=h.element.data("scalex")}if(h.element.is("[data-scaley]")){g.scaley=h.element.data("scaley")}if(h.element.is("[data-scalez]")){g.scalez=h.element.data("scalez")}h.properties=g;f.push(h)});e.effects=f;d.elements.push(e)})};d.update=function(){window.requestAnimationFrame(function(){d.update_viewport_position();if(d.viewport_top_previous!=d.viewport_top){d.update_elements_in_view();d.animate()}d.viewport_top_previous=d.viewport_top})};d.animate=function(){var C=d.elements_in_view.length;for(var A=0;A(d.body_height-d.viewport_height)){n=d.body_height-d.viewport_height}}var g=(d.viewport_top-r)/(n-r);var x=w.from;var j=w.to;var o=j-x;var k=(g-x)/o;var v=w.easing(k);var l=d.animate_value(g,v,x,j,w,"opacity");var t=d.animate_value(g,v,x,j,w,"translatey");var u=d.animate_value(g,v,x,j,w,"translatex");var s=d.animate_value(g,v,x,j,w,"translatez");var B=d.animate_value(g,v,x,j,w,"rotatex");var z=d.animate_value(g,v,x,j,w,"rotatey");var y=d.animate_value(g,v,x,j,w,"rotatez");var E=d.animate_value(g,v,x,j,w,"scale");var q=d.animate_value(g,v,x,j,w,"scalex");var p=d.animate_value(g,v,x,j,w,"scaley");var m=d.animate_value(g,v,x,j,w,"scalez");if("scale" in w.properties){q=E;p=E;m=E}w.element.css({opacity:l,transform:"translate3d( "+u+"px , "+t+"px , "+s+"px ) rotateX( "+B+"deg ) rotateY( "+z+"deg ) rotateZ( "+y+"deg ) scale3d( "+q+" , "+p+" , "+m+" )"})}}};d.animate_value=function(i,h,j,k,n,m){var g=d.property_defaults[m];if(!(m in n.properties)){return g}var e=n.properties[m];var f=(k>j)?true:false;if(ik&&f){return e}if(i>j&&!f){return g}if(id.viewport_top)){d.elements_in_view.push(d.elements[e])}}};d.on_resize=function(){d.update_viewport();d.update_element_heights();d.update_viewport_position();d.update_elements_in_view();d.animate()};d.update_viewport=function(){d.body_height=c.height();d.viewport_height=b.height()};d.update_element_heights=function(){var g=d.elements.length;for(var f=0;fe?4*e*e*e:(e=1-e,1-4*e*e*e)}},t.init_events=["ready","page:load","page:change"],t.is_mobile=function(){var e=!1;return function(t){(/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4)))&&(e=!0)}(navigator.userAgent||navigator.vendor||window.opera),e},t.init_if=function(){return!0},t.init=function(e){if(e&&"disable_on_mobile"===e){if(t.is_mobile())return!1}else if(e)throw"unknown parameter '"+e+"' on init()";return t.init_elements(),t.on_resize(),i.on("resize orientationchange",function(){t.on_resize()}),i.load(function(){setTimeout(function(){t.on_resize()},100)}),setInterval(t.update,t.update_interval),!0},t.init_elements=function(){e(t.scrollme_selector).each(function(){var a={};a.element=e(this);var i=[];e(this).find(t.animateme_selector).addBack(t.animateme_selector).each(function(){var a={};a.element=e(this),a.when=a.element.data("when"),a.from=a.element.data("from"),a.to=a.element.data("to"),a.element.is("[data-crop]")?a.crop=a.element.data("crop"):a.crop=!0,a.element.is("[data-easing]")?a.easing=t.easing_functions[a.element.data("easing")]:a.easing=t.easing_functions.easeout;var n={};a.element.is("[data-opacity]")&&(n.opacity=a.element.data("opacity")),a.element.is("[data-translatex]")&&(n.translatex=a.element.data("translatex")),a.element.is("[data-translatey]")&&(n.translatey=a.element.data("translatey")),a.element.is("[data-translatez]")&&(n.translatez=a.element.data("translatez")),a.element.is("[data-rotatex]")&&(n.rotatex=a.element.data("rotatex")),a.element.is("[data-rotatey]")&&(n.rotatey=a.element.data("rotatey")),a.element.is("[data-rotatez]")&&(n.rotatez=a.element.data("rotatez")),a.element.is("[data-scale]")&&(n.scale=a.element.data("scale")),a.element.is("[data-scalex]")&&(n.scalex=a.element.data("scalex")),a.element.is("[data-scaley]")&&(n.scaley=a.element.data("scaley")),a.element.is("[data-scalez]")&&(n.scalez=a.element.data("scalez")),a.properties=n,i.push(a)}),a.effects=i,t.elements.push(a)})},t.update=function(){window.requestAnimationFrame(function(){t.update_viewport_position(),t.viewport_top_previous!=t.viewport_top&&(t.update_elements_in_view(),t.animate()),t.viewport_top_previous=t.viewport_top})},t.animate=function(){for(var e=t.elements_in_view.length,a=0;e>a;a++)for(var i=t.elements_in_view[a],n=i.effects.length,o=0;n>o;o++){var r=i.effects[o];switch(console.dir(r.properties),r.properties.disableMobile&&"true"===r.properties.disableMobile&&console.log("nao anima viadu"),r.when){case"view":case"span":var s=i.top-t.viewport_height,l=i.bottom;break;case"exit":var s=i.bottom-t.viewport_height,l=i.bottom;break;default:var s=i.top-t.viewport_height,l=i.top}r.crop&&(0>s&&(s=0),l>t.body_height-t.viewport_height&&(l=t.body_height-t.viewport_height));var m=(t.viewport_top-s)/(l-s),p=r.from,c=r.to,d=c-p,u=(m-p)/d,v=r.easing(u),_=t.animate_value(m,v,p,c,r,"opacity"),w=t.animate_value(m,v,p,c,r,"translatey"),h=t.animate_value(m,v,p,c,r,"translatex"),g=t.animate_value(m,v,p,c,r,"translatez"),f=t.animate_value(m,v,p,c,r,"rotatex"),b=t.animate_value(m,v,p,c,r,"rotatey"),y=t.animate_value(m,v,p,c,r,"rotatez"),x=t.animate_value(m,v,p,c,r,"scale"),k=t.animate_value(m,v,p,c,r,"scalex"),z=t.animate_value(m,v,p,c,r,"scaley"),F=t.animate_value(m,v,p,c,r,"scalez");"scale"in r.properties&&(k=x,z=x,F=x),r.element.css({opacity:_,transform:"translate3d( "+h+"px , "+w+"px , "+g+"px ) rotateX( "+f+"deg ) rotateY( "+b+"deg ) rotateZ( "+y+"deg ) scale3d( "+k+" , "+z+" , "+F+" )"})}},t.animate_value=function(e,a,i,n,o,r){var s=t.property_defaults[r];if(!(r in o.properties))return s;var l=o.properties[r],m=n>i?!0:!1;if(i>e&&m)return s;if(e>n&&m)return l;if(e>i&&!m)return s;if(n>e&&!m)return l;var p=s+a*(l-s);switch(r){case"opacity":p=p.toFixed(2);break;case"translatex":p=p.toFixed(0);break;case"translatey":p=p.toFixed(0);break;case"translatez":p=p.toFixed(0);break;case"rotatex":p=p.toFixed(1);break;case"rotatey":p=p.toFixed(1);break;case"rotatez":p=p.toFixed(1);break;case"scale":p=p.toFixed(3)}return p},t.update_viewport_position=function(){t.viewport_top=i.scrollTop(),t.viewport_bottom=t.viewport_top+t.viewport_height},t.update_elements_in_view=function(){t.elements_in_view=[];for(var e=t.elements.length,a=0;e>a;a++)t.elements[a].topt.viewport_top&&t.elements_in_view.push(t.elements[a])},t.on_resize=function(){t.update_viewport(),t.update_element_heights(),t.update_viewport_position(),t.update_elements_in_view(),t.animate()},t.update_viewport=function(){t.body_height=a.height(),t.viewport_height=i.height()},t.update_element_heights=function(){for(var e=t.elements.length,a=0;e>a;a++){var i=t.elements[a].element.outerHeight(),n=t.elements[a].element.offset();t.elements[a].height=i,t.elements[a].top=n.top,t.elements[a].bottom=n.top+i}},t}(jQuery);