parlx.js
Version:
Parallax scroll effect library
1 lines • 5.51 kB
JavaScript
!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("Parlx",[],t):"object"==typeof exports?exports.Parlx=t():e.Parlx=t()}("object"!=typeof window?global.window=global:window,function(){return function(e){var t={};function n(i){if(t[i])return t[i].exports;var o=t[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(i,o,function(t){return e[t]}.bind(null,o));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=0)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var i,o=(i=n(1))&&i.__esModule?i:{default:i};var r=o.default;t.default=r,t.default=o.default,e.exports=t.default},function(e,t,n){"use strict";function i(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function o(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=function(){function e(t){var n=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),o(this,"onWindowScroll",function(){n.element&&(n.parallaxEffect(),"function"==typeof n.callbacks.onScroll&&n.callbacks.onScroll(n.element))}),o(this,"onWindowResize",function(){n.element&&(n.parallaxEffect(),"function"==typeof n.callbacks.onResize&&n.callbacks.onResize(n.element))}),this.element=t,this.callbacks=r,this.settings=this.extendSettings(i),"function"==typeof this.callbacks.onInit&&this.callbacks.onInit(this.element),this.parallaxEffect(),this.addEventListeners()}var t,n,r;return t=e,r=[{key:"init",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=t.elements,i=t.settings,o=t.callbacks;n instanceof Node&&(n=[n]),n instanceof NodeList&&(n=[].slice.call(n));var r=!0,s=!1,l=void 0;try{for(var a,c=n[Symbol.iterator]();!(r=(a=c.next()).done);r=!0){var u=a.value;"parlx"in u||(u.parlx=new e(u,i,o))}}catch(e){s=!0,l=e}finally{try{r||null==c.return||c.return()}finally{if(s)throw l}}}}],(n=[{key:"addEventListeners",value:function(){window.addEventListener("scroll",this.onWindowScroll),window.addEventListener("resize",this.onWindowResize)}},{key:"removeEventListeners",value:function(){window.removeEventListener("scroll",this.onWindowScroll),window.removeEventListener("resize",this.onWindowResize)}},{key:"destroy",value:function(){"function"==typeof this.callbacks.onDestroy&&this.callbacks.onDestroy(this.element),this.removeEventListeners(),this.element.parlx=null,delete this.element.parlx,this.element=null}},{key:"transforms",value:function(){var e,t;"horizontal"===this.settings.direction?(e=this.movement,t="0"):"vertical"===this.settings.direction?(e="0",t=this.movement):"diagonal"===this.settings.direction&&(e=this.movement,t=this.movement),this.transform="translate(".concat(e,"px, ").concat(t,"px)")}},{key:"parallaxEffect",value:function(){this.element.style.height=this.settings.height;var e=this.element.getBoundingClientRect().top;if(Math.abs(this.settings.speed)>1&&(this.settings.speed=.3),this.movement=this.settings.speed*e/2,navigator.userAgent.match(this.settings.exclude)&&(this.settings.speed=0),this.transforms(),"foreground"===this.settings.type)Object.assign(this.element.style,{transform:this.transform});else if("background"===this.settings.type){if(!this.element.querySelector(".parlx-children")){var t=document.createElement("div");t.classList.add("parlx-children"),this.element.appendChild(t)}Object.assign(this.element.querySelector(".parlx-children").style,{transform:this.transform,"object-fit":"cover","min-width":"".concat(this.element.offsetWidth*(1+2*Math.abs(this.settings.speed)),"px"),height:"".concat(this.element.offsetHeight*(1+2*Math.abs(this.settings.speed)),"px")})}var n={move:this.movement};this.element.dispatchEvent(new CustomEvent("parlxMove",{detail:n}))}},{key:"extendSettings",value:function(e){var t={direction:"vertical",exclude:null,height:"400px",speed:.3,type:"background"},n={};for(var i in t)if(i in e)n[i]=e[i];else if(this.element.getAttribute("data-".concat(i))){var o=this.element.getAttribute("data-".concat(i));try{n[i]=JSON.parse(o)}catch(e){n[i]=o}}else n[i]=t[i];return n}}])&&i(t.prototype,n),r&&i(t,r),e}();if(t.default=r,"undefined"!=typeof document){window.Parlx=r;var s=document.querySelectorAll("[data-parlx]");s.length&&r.init({elements:s})}window.jQuery&&(window.jQuery.fn.parlx=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};r.init({elements:this,settings:e.settings||{},callbacks:e.callbacks||{}})})}])});