-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathjquery.rellax.min.js
More file actions
7 lines (7 loc) · 2.88 KB
/
jquery.rellax.min.js
File metadata and controls
7 lines (7 loc) · 2.88 KB
1
2
3
4
5
6
7
/*!
* jQuery Rellax Plugin v0.2.1
* Examples and documentation at http://pixelgrade.github.io/rellax/
* Copyright (c) 2016 PixelGrade http://www.pixelgrade.com
* Licensed under MIT http://www.opensource.org/licenses/mit-license.php/
*/
!function(t,e,i,n){function o(e,i){this.element=e,this.options=t.extend({},t.fn.rellax.defaults,i);var o=this,s=t(this.element).addClass("rellax-active"),a=s.data("rellax-amount"),h=s.data("rellax-bleed");this.isContainer=s.is(o.options.container),this.$parent=s.parent().closest(o.options.container),this.options.amount=a!=n?parseFloat(a):this.options.amount,this.options.bleed=h!=n?parseFloat(h):this.options.bleed,0!=o.options.amount&&(o._reloadElement(),o._bindEvents(),r.push(o))}if(e.requestAnimationFrame){var s,a=t(e),h=a.width(),l=a.height(),r=new Array;!function i(){t.each(r,function(t,e){e._updatePosition()}),e.requestAnimationFrame(i)}(),a.on("load resize",function(t){h=a.width(),l=a.height()}),a.on("load scroll",function(e){s=t(e.target).scrollTop()}),t.extend(o.prototype,{constructor:o,_bindEvents:function(){var t=this;a.on("load resize",function(e){t._reloadElement()})},_scaleElement:function(){var t,e=this.$parent.data("plugin_"+o).width,i=this.$parent.data("plugin_"+o).height,n=this.width,s=this.height;t=Math.max(e/n,i/s),this.width=n*t,this.height=s*t,this.offset.left-=(n*t-e)/2},_reloadElement:function(){var e=this,i=t(this.element).removeAttr("style");e.$parent.length&&e.$parent.css("position","static"),e.width=i.width(),e.height=i.height(),e.offset=i.offset(),e.$parent.length&&e._scaleElement(),e.isContainer&&(e.width+=2*e.options.bleed,e.height+=2*e.options.bleed,e.offset.left-=e.options.bleed,e.offset.top-=e.options.bleed);var n={position:"fixed",top:e.offset.top,left:e.offset.left,width:e.width,height:e.height,marginTop:0,marginLeft:0};e.isContainer&&t.extend(n,{zIndex:-1}),e.$parent.length&&(t.extend(n,{top:e.offset.top-e.$parent.offset().top+e.options.bleed}),e.$parent.css({position:"fixed",overflow:"hidden",zIndex:-1})),i.css(n)},_isInViewport:function(t){var t=t==n||this.isContainer?0:t;return s>this.offset.top-l+t&&s<this.offset.top+this.height+t},_updatePosition:function(){var e=this,i=(s-this.offset.top+l)/(l+this.height),n=(l+this.height)*(i-.5);e._isInViewport(n)?(e.$parent.length||e.isVisible||(t(e.element).show(),e.isVisible=!0),e.isContainer?t(e.element).css("transform","translate3d(0,"+-s+"px,0)"):(n*=e.options.amount,e.$parent.length||(n-=s),t(e.element).css("transform","translate3d(0,"+n+"px,0)"))):!e.$parent.length&&e.isVisible&&(t(e.element).hide(),e.isVisible=!1)}}),t.fn.rellax=function(e){return this.each(function(){if(t.data(this,"plugin_"+o)){var i=t.data(this,"plugin_"+o);e&&"string"==typeof e&&"refresh"==e&&i._reloadElement()}else t.data(this,"plugin_"+o,new o(this,e))})},t.fn.rellax.defaults={amount:.5,bleed:0,container:"[data-rellax-container]"},t(i).ready(function(){t("[data-rellax]").rellax()})}}(jQuery,window,document);