parallaxLiquid.js 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. /*!
  2. Crafto - Parallax Liquid Image
  3. Created by ThemeZaa
  4. !*/
  5. ! function(n) {
  6. var t = n(window),
  7. o = t.height();
  8. t.resize(function() {
  9. o = t.height()
  10. }), n.fn.parallaxLiquidImg = function(i, scale, scaleFraction, reverse, e) {
  11. var l, r = n(this);
  12. var canScale = scale ? 1 : 0;
  13. var scale = scale ? scale : 1.2;
  14. var scaleFraction = scaleFraction ? scaleFraction : 0.001;
  15. var lastScrollPos = 0;
  16. var scrollDir = '';
  17. function u() {
  18. var e = t.scrollTop();
  19. r.each(function() {
  20. var t = n(this),
  21. u = t.offset().top,
  22. tHeight = t.outerHeight(),
  23. uOffesetBottom = u + tHeight;
  24. if(e > lastScrollPos) {
  25. scrollDir = 'forward';
  26. } else{
  27. scrollDir = 'reverse';
  28. }
  29. lastScrollPos = e;
  30. if (u < n(window).height()+e && uOffesetBottom > e) {
  31. if (scrollDir == 'forward') {
  32. scale = scale + scaleFraction;
  33. } else {
  34. scale = scale - scaleFraction;
  35. }
  36. }
  37. if (reverse) {
  38. if (t.attr('data-parallax-scale')) {
  39. u + l(t) < e || u > e + o || (
  40. n(window).width() > 1050
  41. ? (anime({targets: r[0], translateY: i / 6 * (u - e) + "px", scale: canScale ? scale : 1}))
  42. : r.css("transform", "translateY(0px)")
  43. )
  44. } else {
  45. u + l(t) < e || u > e + o || (
  46. n(window).width() > 1050
  47. ? (anime({targets: r[0], translateY: i / 20 * -(u - e) + "px", scale: canScale ? scale : 1}))
  48. : r.css("transform", "translateY(0px)")
  49. )
  50. }
  51. } else {
  52. if (t.attr('data-parallax-scale')) {
  53. u + l(t) < e || u > e + o || (
  54. n(window).width() > 1050
  55. ? (anime({targets: r[0], translateY: i / 6 * -(u - e) + "px", scale: canScale ? scale : 1}))
  56. : r.css("transform", "translateY(0px)")
  57. )
  58. } else {
  59. u + l(t) < e || u > e + o || (
  60. n(window).width() > 1050
  61. ? (anime({targets: r[0], translateY: i / 20 * (u - e) + "px", scale: canScale ? scale : 1}))
  62. : r.css("transform", "translateY(0px)")
  63. )
  64. }
  65. }
  66. })
  67. }(arguments.length < 1 || null === i) && (i = 1), (arguments.length < 2 || null === e) && (e = !0), l = e ? function(n) {
  68. return n.outerHeight(!0)
  69. } : function(n) {
  70. return n.height()
  71. }, t.bind("scroll", u).resize(u), u()
  72. }
  73. }(jQuery);