MCPcopy
hub / github.com/michalsnik/aos / calculateOffset

Function calculateOffset

src/js/helpers/calculateOffset.js:13–68  ·  view source on GitHub ↗
(el, optionalOffset)

Source from the content-addressed store, hash-verified

11import getOffset from './../libs/offset';
12
13const calculateOffset = function (el, optionalOffset) {
14 let elementOffsetTop = 0;
15 let additionalOffset = 0;
16 const windowHeight = window.innerHeight;
17 const attrs = {
18 offset: el.getAttribute('data-aos-offset'),
19 anchor: el.getAttribute('data-aos-anchor'),
20 anchorPlacement: el.getAttribute('data-aos-anchor-placement')
21 };
22
23 if (attrs.offset && !isNaN(attrs.offset)) {
24 additionalOffset = parseInt(attrs.offset);
25 }
26
27 if (attrs.anchor && document.querySelectorAll(attrs.anchor)) {
28 el = document.querySelectorAll(attrs.anchor)[0];
29 }
30
31 elementOffsetTop = getOffset(el).top;
32
33 switch (attrs.anchorPlacement) {
34 case 'top-bottom':
35 // Default offset
36 break;
37 case 'center-bottom':
38 elementOffsetTop += el.offsetHeight / 2;
39 break;
40 case 'bottom-bottom':
41 elementOffsetTop += el.offsetHeight;
42 break;
43 case 'top-center':
44 elementOffsetTop += windowHeight / 2;
45 break;
46 case 'bottom-center':
47 elementOffsetTop += windowHeight / 2 + el.offsetHeight;
48 break;
49 case 'center-center':
50 elementOffsetTop += windowHeight / 2 + el.offsetHeight / 2;
51 break;
52 case 'top-top':
53 elementOffsetTop += windowHeight;
54 break;
55 case 'bottom-top':
56 elementOffsetTop += el.offsetHeight + windowHeight;
57 break;
58 case 'center-top':
59 elementOffsetTop += el.offsetHeight / 2 + windowHeight;
60 break;
61 }
62
63 if (!attrs.anchorPlacement && !attrs.offset && !isNaN(optionalOffset)) {
64 additionalOffset = optionalOffset;
65 }
66
67 return elementOffsetTop + additionalOffset;
68};
69
70export default calculateOffset;

Callers 2

prepareFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…