PageSourceSearch

https://soeman.fr/wp-content/themes/betheme/js/parallax/translate3d.js?ver=22.0.1

js soeman.fr collected 2026-09-29 00:10:06 UTC 3,963 bytes, 233 lines download raw bytes

1/**
2 * Parallax
3 *
4 * Translate3d
5 * 1.0 | Muffin Group
6 */
7
8var mfnSetup = {
9  translate: null
10};
11
12(function($) {
13
14  /* globals jQuery */
15
16  "use strict";
17
18  /**
19   * mfnSetup
20   */
21
22  // has3d
23
24  var has3d = function() {
25
26    if (!window.getComputedStyle) {
27      return false;
28    }
29
30    var el = document.createElement('div'),
31      has3d;
32
33    document.body.insertBefore(el, null);
34
35    if (el.style.transform !== undefined) {
36      el.style.transform = "translate3d(1px,1px,1px)";
37      has3d = window.getComputedStyle(el).getPropertyValue('transform');
38    }
39
40    document.body.removeChild(el);
41
42    return (has3d !== undefined && has3d !== null && has3d.length > 0 && has3d !== "none");
43  };
44
45  // __construct
46
47  var __construct = function() {
48
49    if (has3d()) {
50
51      mfnSetup.translate = function(el, x, y) {
52        el.css('transform', 'translate3d(' + x + ', ' + y + ', 0)');
53      };
54
55    } else {
56
57      mfnSetup.translate = function(el, x, y) {
58        el.css({
59          "left": x,
60          "top": y
61        });
62      };
63
64    }
65  };
66
67  __construct();
68
69})(jQuery);
70
71(function($) {
72
73  "use strict";
74
75  /**
76   * $.fn.mfnParallax
77   */
78
79  $.fn.mfnParallax = function() {
80
81    var el = $(this),
82      parent = el.parent(),
83      speed = 500,
84      element, parentPos, windowH;
85
86    // imageSize
87
88    var imageSize = function(img) {
89
90      var w, h, l, t; // width, height, left, top
91
92      var imageW = img.get(0).naturalWidth;
93      var imageH = img.get(0).naturalHeight;
94
95      var parentW = img.parent().outerWidth();
96      var parentH = img.parent().outerHeight();
97
98      var windowH = $(window).height();
99
100      // fix for small sections
101      if (windowH > parentH) {
102        parentH = windowH;
103      }
104
105      var diff = imageW / parentW;
106
107      if ((imageH / diff) < parentH) {
108
109        w = imageW / (imageH / parentH);
110        h = parentH;
111
112        if (w > imageW) {
113
114          w = imageW;
115          h = imageH;
116
117        }
118
119      } else {
120
121        w = parentW;
122        h = imageH / diff;
123
124      }
125
126      l = (parentW - w) / 2;
127      t = (parentH - h) / 2;
128
129      return [w, h, l, t];
130    };
131
132    // parallax
133
134    var parallax = function() {
135
136      var scrollTop = $(window).scrollTop(),
137        scrollDiff, ratio, translateTop;
138
139      if (parentPos !== undefined) {
140
141        if (scrollTop >= parentPos.min && scrollTop <= parentPos.max) {
142
143          scrollDiff = scrollTop - parentPos.min;
144          ratio = scrollDiff / parentPos.height;
145
146          translateTop = windowH + (ratio * speed) - scrollDiff - (speed * (windowH / parentPos.height));
147
148          mfnSetup.translate(el, element.left + "px", -Math.round(translateTop) + "px");
149        }
150
151      }
152    };
153
154    // init
155
156    var init = function() {
157
158      windowH = $(window).height();
159
160      var initElement = function() {
161
162        var size = imageSize(el);
163
164        el.removeAttr('style').css({
165          'width': size[0],
166          'height': size[1]
167        });
168
169        mfnSetup.translate(el, size[2] + "px", size[3] + "px");
170
171        return {
172          'width': size[0],
173          'height': size[1],
174          'left': size[2],
175          'top': size[3]
176        };
177      };
178
179      element = initElement();
180
181      var initParent = function() {
182
183        var min = parent.offset().top - $(window).height();
184        var max = parent.offset().top + $(parent).outerHeight();
185
186        return {
187          'min': min,
188          'max': max,
189          'height': max - min
190        };
191      };
192
193      parentPos = initParent();
194    };
195
196    // reload
197
198    var reload = function() {
199
200      setTimeout(function() {
201        init();
202        parallax();
203      }, 50);
204
205    };
206
207    reload();
208
209    /**
210     * $(window).scroll
211     */
212
213    $(window).on('scroll', parallax);
214
215  };
216
217  /**
218   * $(window).load
219   */
220
221  $(window).on('load resize', function(){
222
223    if ($(".mfn-parallax").length) {
224
225      $(".mfn-parallax").each(function() {
226        $(this).mfnParallax();
227      });
228
229    }
230
231  });
232
233})(jQuery);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.