aos-modern 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,334 @@
1
+ // Animations variables
2
+ $aos-distance: 100px !default;
3
+
4
+
5
+
6
+
7
+ /**
8
+ * Fade animations:
9
+ * fade
10
+ * fade-up, fade-down, fade-left, fade-right
11
+ * fade-up-right, fade-up-left, fade-down-right, fade-down-left
12
+ */
13
+
14
+ [data-aos^='fade'][data-aos^='fade'] {
15
+ opacity: 0;
16
+ transition-property: opacity, transform;
17
+
18
+ &.aos-animate {
19
+ opacity: 1;
20
+ transform: translate3d(0, 0, 0);
21
+ }
22
+ }
23
+
24
+ [data-aos='fade-up'] {
25
+ transform: translate3d(0, $aos-distance, 0);
26
+ }
27
+
28
+ [data-aos='fade-down'] {
29
+ transform: translate3d(0, -$aos-distance, 0);
30
+ }
31
+
32
+ [data-aos='fade-right'] {
33
+ transform: translate3d(-$aos-distance, 0, 0);
34
+ }
35
+
36
+ [data-aos='fade-left'] {
37
+ transform: translate3d($aos-distance, 0, 0);
38
+ }
39
+
40
+ [data-aos='fade-up-right'] {
41
+ transform: translate3d(-$aos-distance, $aos-distance, 0);
42
+ }
43
+
44
+ [data-aos='fade-up-left'] {
45
+ transform: translate3d($aos-distance, $aos-distance, 0);
46
+ }
47
+
48
+ [data-aos='fade-down-right'] {
49
+ transform: translate3d(-$aos-distance, -$aos-distance, 0);
50
+ }
51
+
52
+ [data-aos='fade-down-left'] {
53
+ transform: translate3d($aos-distance, -$aos-distance, 0);
54
+ }
55
+
56
+
57
+
58
+
59
+ /**
60
+ * Zoom animations:
61
+ * zoom-in, zoom-in-up, zoom-in-down, zoom-in-left, zoom-in-right
62
+ * zoom-out, zoom-out-up, zoom-out-down, zoom-out-left, zoom-out-right
63
+ */
64
+
65
+ [data-aos^='zoom'][data-aos^='zoom'] {
66
+ opacity: 0;
67
+ transition-property: opacity, transform;
68
+
69
+ &.aos-animate {
70
+ opacity: 1;
71
+ transform: translate3d(0, 0, 0) scale(1);
72
+ }
73
+ }
74
+
75
+ [data-aos='zoom-in'] {
76
+ transform: scale(.6);
77
+ }
78
+
79
+ [data-aos='zoom-in-up'] {
80
+ transform: translate3d(0, $aos-distance, 0) scale(.6);
81
+ }
82
+
83
+ [data-aos='zoom-in-down'] {
84
+ transform: translate3d(0, -$aos-distance, 0) scale(.6);
85
+ }
86
+
87
+ [data-aos='zoom-in-right'] {
88
+ transform: translate3d(-$aos-distance, 0, 0) scale(.6);
89
+ }
90
+
91
+ [data-aos='zoom-in-left'] {
92
+ transform: translate3d($aos-distance, 0, 0) scale(.6);
93
+ }
94
+
95
+ [data-aos='zoom-out'] {
96
+ transform: scale(1.2);
97
+ }
98
+
99
+ [data-aos='zoom-out-up'] {
100
+ transform: translate3d(0, $aos-distance, 0) scale(1.2);
101
+ }
102
+
103
+ [data-aos='zoom-out-down'] {
104
+ transform: translate3d(0, -$aos-distance, 0) scale(1.2);
105
+ }
106
+
107
+ [data-aos='zoom-out-right'] {
108
+ transform: translate3d(-$aos-distance, 0, 0) scale(1.2);
109
+ }
110
+
111
+ [data-aos='zoom-out-left'] {
112
+ transform: translate3d($aos-distance, 0, 0) scale(1.2);
113
+ }
114
+
115
+
116
+
117
+
118
+ /**
119
+ * Slide animations
120
+ */
121
+
122
+ [data-aos^='slide'][data-aos^='slide'] {
123
+ transition-property: transform;
124
+
125
+ &.aos-animate {
126
+ transform: translate3d(0, 0, 0);
127
+ }
128
+ }
129
+
130
+ [data-aos='slide-up'] {
131
+ transform: translate3d(0, 100%, 0);
132
+ }
133
+
134
+ [data-aos='slide-down'] {
135
+ transform: translate3d(0, -100%, 0);
136
+ }
137
+
138
+ [data-aos='slide-right'] {
139
+ transform: translate3d(-100%, 0, 0);
140
+ }
141
+
142
+ [data-aos='slide-left'] {
143
+ transform: translate3d(100%, 0, 0);
144
+ }
145
+
146
+
147
+
148
+
149
+ /**
150
+ * Flip animations:
151
+ * flip-left, flip-right, flip-up, flip-down
152
+ */
153
+
154
+ [data-aos^='flip'][data-aos^='flip'] {
155
+ backface-visibility: hidden;
156
+ transition-property: transform;
157
+ }
158
+
159
+ [data-aos='flip-left'] {
160
+ transform: perspective(2500px) rotateY(-100deg);
161
+ &.aos-animate {transform: perspective(2500px) rotateY(0);}
162
+ }
163
+
164
+ [data-aos='flip-right'] {
165
+ transform: perspective(2500px) rotateY(100deg);
166
+ &.aos-animate {transform: perspective(2500px) rotateY(0);}
167
+ }
168
+
169
+ [data-aos='flip-up'] {
170
+ transform: perspective(2500px) rotateX(-100deg);
171
+ &.aos-animate {transform: perspective(2500px) rotateX(0);}
172
+ }
173
+
174
+ [data-aos='flip-down'] {
175
+ transform: perspective(2500px) rotateX(100deg);
176
+ &.aos-animate {transform: perspective(2500px) rotateX(0);}
177
+ }
178
+
179
+ /**
180
+ * Blur animations
181
+ */
182
+
183
+ [data-aos^='blur'][data-aos^='blur'] {
184
+ opacity: 0;
185
+ filter: blur(12px);
186
+ transition-property: opacity, filter, transform;
187
+
188
+ &.aos-animate {
189
+ opacity: 1;
190
+ filter: blur(0);
191
+ transform: translate3d(0, 0, 0) scale(1);
192
+ }
193
+ }
194
+
195
+ [data-aos='blur-in'] {
196
+ transform: scale(0.95);
197
+ }
198
+
199
+ [data-aos='blur-in-up'] {
200
+ transform: translate3d(0, $aos-distance, 0);
201
+ }
202
+
203
+ [data-aos='blur-in-down'] {
204
+ transform: translate3d(0, -$aos-distance, 0);
205
+ }
206
+
207
+ [data-aos='blur-in-left'] {
208
+ transform: translate3d($aos-distance, 0, 0);
209
+ }
210
+
211
+ [data-aos='blur-in-right'] {
212
+ transform: translate3d(-$aos-distance, 0, 0);
213
+ }
214
+
215
+
216
+ /**
217
+ * Skew animations
218
+ */
219
+
220
+ [data-aos^='skew'][data-aos^='skew'] {
221
+ opacity: 0;
222
+ transition-property: opacity, transform;
223
+
224
+ &.aos-animate {
225
+ opacity: 1;
226
+ transform: translate3d(0, 0, 0) skew(0deg, 0deg);
227
+ }
228
+ }
229
+
230
+ [data-aos='skew-up'] {
231
+ transform: translate3d(0, $aos-distance, 0) skewY(5deg);
232
+ }
233
+
234
+ [data-aos='skew-down'] {
235
+ transform: translate3d(0, -$aos-distance, 0) skewY(-5deg);
236
+ }
237
+
238
+
239
+ /**
240
+ * Rotate animations
241
+ */
242
+
243
+ [data-aos^='rotate-in'][data-aos^='rotate-in'] {
244
+ opacity: 0;
245
+ transition-property: opacity, transform;
246
+
247
+ &.aos-animate {
248
+ opacity: 1;
249
+ transform: translate3d(0, 0, 0) rotate(0deg);
250
+ }
251
+ }
252
+
253
+ [data-aos='rotate-in'] {
254
+ transform: rotate(-200deg);
255
+ }
256
+
257
+ [data-aos='rotate-in-up-left'] {
258
+ transform: translate3d(-$aos-distance, $aos-distance, 0) rotate(-45deg);
259
+ }
260
+
261
+ [data-aos='rotate-in-up-right'] {
262
+ transform: translate3d($aos-distance, $aos-distance, 0) rotate(45deg);
263
+ }
264
+
265
+ [data-aos='rotate-in-down-left'] {
266
+ transform: translate3d(-$aos-distance, -$aos-distance, 0) rotate(45deg);
267
+ }
268
+
269
+ [data-aos='rotate-in-down-right'] {
270
+ transform: translate3d($aos-distance, -$aos-distance, 0) rotate(-45deg);
271
+ }
272
+
273
+
274
+ /**
275
+ * Back animations
276
+ */
277
+
278
+ [data-aos^='back-in'][data-aos^='back-in'] {
279
+ opacity: 0;
280
+ transition-property: opacity, transform;
281
+
282
+ &.aos-animate {
283
+ opacity: 1;
284
+ transform: translate3d(0, 0, 0) scale(1);
285
+ }
286
+ }
287
+
288
+ [data-aos='back-in'] {
289
+ transform: scale(0.7);
290
+ }
291
+
292
+ [data-aos='back-in-up'] {
293
+ transform: translate3d(0, $aos-distance * 2, 0) scale(0.7);
294
+ }
295
+
296
+ [data-aos='back-in-down'] {
297
+ transform: translate3d(0, -$aos-distance * 2, 0) scale(0.7);
298
+ }
299
+
300
+ [data-aos='back-in-left'] {
301
+ transform: translate3d(-$aos-distance * 2, 0, 0) scale(0.7);
302
+ }
303
+
304
+ [data-aos='back-in-right'] {
305
+ transform: translate3d($aos-distance * 2, 0, 0) scale(0.7);
306
+ }
307
+
308
+
309
+ /**
310
+ * Specials
311
+ */
312
+
313
+ [data-aos='roll-in'] {
314
+ opacity: 0;
315
+ transform: translate3d(-100%, 0, 0) rotate(-120deg);
316
+ transition-property: opacity, transform;
317
+
318
+ &.aos-animate {
319
+ opacity: 1;
320
+ transform: translate3d(0, 0, 0) rotate(0deg);
321
+ }
322
+ }
323
+
324
+ [data-aos='jack-in-the-box'] {
325
+ opacity: 0;
326
+ transform: scale(0.1) rotate(-30deg);
327
+ transform-origin: center bottom;
328
+ transition-property: opacity, transform;
329
+
330
+ &.aos-animate {
331
+ opacity: 1;
332
+ transform: scale(1) rotate(0deg);
333
+ }
334
+ }
@@ -0,0 +1,18 @@
1
+ // Generate Duration && Delay
2
+ [data-aos] {
3
+ @for $i from 1 through 60 {
4
+ body[data-aos-duration='#{$i * 50}'] &,
5
+ &[data-aos][data-aos-duration='#{$i * 50}'] {
6
+ transition-duration: #{$i * 50}ms;
7
+ }
8
+
9
+ body[data-aos-delay='#{$i * 50}'] &,
10
+ &[data-aos][data-aos-delay='#{$i * 50}'] {
11
+ transition-delay: 0;
12
+
13
+ &.aos-animate {
14
+ transition-delay: #{$i * 50}ms;
15
+ }
16
+ }
17
+ }
18
+ }
@@ -0,0 +1,40 @@
1
+ $aos-easing: (
2
+ linear: cubic-bezier(.250, .250, .750, .750),
3
+
4
+ ease: cubic-bezier(.250, .100, .250, 1),
5
+ ease-in: cubic-bezier(.420, 0, 1, 1),
6
+ ease-out: cubic-bezier(.000, 0, .580, 1),
7
+ ease-in-out: cubic-bezier(.420, 0, .580, 1),
8
+
9
+ ease-in-back: cubic-bezier(.6, -.28, .735, .045),
10
+ ease-out-back: cubic-bezier(.175, .885, .32, 1.275),
11
+ ease-in-out-back: cubic-bezier(.68, -.55, .265, 1.55),
12
+
13
+ ease-in-sine: cubic-bezier(.47, 0, .745, .715),
14
+ ease-out-sine: cubic-bezier(.39, .575, .565, 1),
15
+ ease-in-out-sine: cubic-bezier(.445, .05, .55, .95),
16
+
17
+ ease-in-quad: cubic-bezier(.55, .085, .68, .53),
18
+ ease-out-quad: cubic-bezier(.25, .46, .45, .94),
19
+ ease-in-out-quad: cubic-bezier(.455, .03, .515, .955),
20
+
21
+ ease-in-cubic: cubic-bezier(.55, .085, .68, .53),
22
+ ease-out-cubic: cubic-bezier(.25, .46, .45, .94),
23
+ ease-in-out-cubic: cubic-bezier(.455, .03, .515, .955),
24
+
25
+ ease-in-quart: cubic-bezier(.55, .085, .68, .53),
26
+ ease-out-quart: cubic-bezier(.25, .46, .45, .94),
27
+ ease-in-out-quart: cubic-bezier(.455, .03, .515, .955)
28
+ );
29
+
30
+ // Easings implementations
31
+ // Default timing function: 'ease'
32
+
33
+ [data-aos] {
34
+ @each $key, $val in $aos-easing {
35
+ body[data-aos-easing="#{$key}"] &,
36
+ &[data-aos][data-aos-easing="#{$key}"] {
37
+ transition-timing-function: $val;
38
+ }
39
+ }
40
+ }
@@ -0,0 +1,3 @@
1
+ @use 'core';
2
+ @use 'easing';
3
+ @use 'animations';
@@ -0,0 +1,65 @@
1
+ import AOS from '../js/aos';
2
+
3
+ /**
4
+ * Vue Plugin and Directive for AOS.
5
+ * Supports both Vue 2 and Vue 3.
6
+ */
7
+ export const AOSPlugin = {
8
+ install(app, defaultOptions = {}) {
9
+ AOS.init(defaultOptions);
10
+
11
+ const directiveConfig = {
12
+ mounted(el, binding) {
13
+ setupElement(el, binding);
14
+ },
15
+ unmounted() {
16
+ AOS.refresh();
17
+ },
18
+ // Vue 2 fallback compatibility hooks
19
+ inserted(el, binding) {
20
+ setupElement(el, binding);
21
+ },
22
+ unbind() {
23
+ AOS.refresh();
24
+ }
25
+ };
26
+
27
+ // Register v-aos directive
28
+ if (app.directive) {
29
+ app.directive('aos', directiveConfig);
30
+ }
31
+ }
32
+ };
33
+
34
+ function setupElement(el, binding) {
35
+ if (binding.value) {
36
+ if (typeof binding.value === 'string') {
37
+ el.setAttribute('data-aos', binding.value);
38
+ } else if (typeof binding.value === 'object') {
39
+ // Support object configuration: v-aos="{ animation: 'fade-up', delay: 100, once: true }"
40
+ if (binding.value.animation) {
41
+ el.setAttribute('data-aos', binding.value.animation);
42
+ }
43
+ if (binding.value.delay !== undefined) {
44
+ el.setAttribute('data-aos-delay', binding.value.delay);
45
+ }
46
+ if (binding.value.duration !== undefined) {
47
+ el.setAttribute('data-aos-duration', binding.value.duration);
48
+ }
49
+ if (binding.value.offset !== undefined) {
50
+ el.setAttribute('data-aos-offset', binding.value.offset);
51
+ }
52
+ if (binding.value.once !== undefined) {
53
+ el.setAttribute('data-aos-once', binding.value.once);
54
+ }
55
+ }
56
+ }
57
+
58
+ if (binding.arg) {
59
+ el.setAttribute('data-aos', binding.arg);
60
+ }
61
+
62
+ AOS.refresh();
63
+ }
64
+
65
+ export default AOSPlugin;