hyperframes 0.1.1 → 0.1.2
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.
- package/README.md +121 -0
- package/dist/cli.js +1050 -657
- package/dist/docs/compositions.md +8 -1
- package/dist/docs/data-attributes.md +4 -0
- package/dist/docs/gsap.md +3 -0
- package/dist/docs/rendering.md +4 -0
- package/dist/docs/templates.md +4 -0
- package/dist/docs/troubleshooting.md +7 -0
- package/dist/hyperframe-runtime.js +3 -3
- package/dist/studio/index.html +11 -11
- package/dist/templates/play-mode/compositions/captions.html +89 -29
- package/dist/templates/play-mode/compositions/intro.html +89 -71
- package/dist/templates/play-mode/compositions/stats.html +203 -73
- package/dist/templates/play-mode/index.html +204 -148
- package/dist/templates/swiss-grid/compositions/captions.html +63 -16
- package/dist/templates/swiss-grid/compositions/graphics.html +51 -43
- package/dist/templates/swiss-grid/compositions/intro.html +41 -25
- package/dist/templates/swiss-grid/index.html +216 -165
- package/dist/templates/vignelli/compositions/captions.html +80 -27
- package/dist/templates/vignelli/compositions/overlays.html +82 -31
- package/dist/templates/vignelli/index.html +171 -164
- package/dist/templates/warm-grain/compositions/captions.html +73 -65
- package/dist/templates/warm-grain/compositions/graphics.html +28 -22
- package/dist/templates/warm-grain/compositions/intro.html +28 -20
- package/dist/templates/warm-grain/index.html +265 -179
- package/package.json +15 -15
- package/LICENSE +0 -21
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
<div class="overlay-item editing-skills-stat" id="stat-3-4">
|
|
34
34
|
<div class="text-block">
|
|
35
35
|
<span class="highlight">3 out of 4</span>
|
|
36
|
-
<br
|
|
36
|
+
<br />lack editing skills
|
|
37
37
|
</div>
|
|
38
38
|
<div class="side-bar"></div>
|
|
39
39
|
</div>
|
|
@@ -51,7 +51,7 @@
|
|
|
51
51
|
position: relative;
|
|
52
52
|
width: 1080px;
|
|
53
53
|
height: 1920px;
|
|
54
|
-
font-family:
|
|
54
|
+
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
|
55
55
|
color: #000000;
|
|
56
56
|
overflow: hidden;
|
|
57
57
|
pointer-events: none;
|
|
@@ -87,13 +87,13 @@
|
|
|
87
87
|
left: 0;
|
|
88
88
|
width: 540px; /* 3 columns */
|
|
89
89
|
height: 240px;
|
|
90
|
-
background: #
|
|
90
|
+
background: #ffffff;
|
|
91
91
|
flex-direction: row;
|
|
92
92
|
align-items: stretch;
|
|
93
93
|
}
|
|
94
94
|
[data-composition-id="overlays"] #stat-47 .red-bar {
|
|
95
95
|
width: 20px;
|
|
96
|
-
background: #
|
|
96
|
+
background: #cc0000;
|
|
97
97
|
}
|
|
98
98
|
[data-composition-id="overlays"] #stat-47 .stat-content {
|
|
99
99
|
padding: 40px;
|
|
@@ -128,7 +128,7 @@
|
|
|
128
128
|
left: 0;
|
|
129
129
|
width: 100%;
|
|
130
130
|
height: 100%;
|
|
131
|
-
background: #
|
|
131
|
+
background: #1a1a1a;
|
|
132
132
|
}
|
|
133
133
|
[data-composition-id="overlays"] #stat-62 .full-content {
|
|
134
134
|
position: relative;
|
|
@@ -142,14 +142,14 @@
|
|
|
142
142
|
[data-composition-id="overlays"] #stat-62 .large-number {
|
|
143
143
|
font-size: 400px;
|
|
144
144
|
font-weight: 900;
|
|
145
|
-
color: #
|
|
145
|
+
color: #ffffff;
|
|
146
146
|
line-height: 0.8;
|
|
147
147
|
letter-spacing: -10px;
|
|
148
148
|
}
|
|
149
149
|
[data-composition-id="overlays"] #stat-62 .large-label {
|
|
150
150
|
font-size: 80px;
|
|
151
151
|
font-weight: 700;
|
|
152
|
-
color: #
|
|
152
|
+
color: #ffffff;
|
|
153
153
|
text-transform: uppercase;
|
|
154
154
|
margin-top: 20px;
|
|
155
155
|
max-width: 600px;
|
|
@@ -160,7 +160,7 @@
|
|
|
160
160
|
right: 0;
|
|
161
161
|
width: 180px; /* 1 column */
|
|
162
162
|
height: 100%;
|
|
163
|
-
background: #
|
|
163
|
+
background: #cc0000;
|
|
164
164
|
}
|
|
165
165
|
|
|
166
166
|
/* 3. 3 out of 4 Stat Styles */
|
|
@@ -168,7 +168,7 @@
|
|
|
168
168
|
top: 400px;
|
|
169
169
|
right: 0;
|
|
170
170
|
width: 360px; /* 2 columns */
|
|
171
|
-
background: #
|
|
171
|
+
background: #ffffff;
|
|
172
172
|
padding: 40px;
|
|
173
173
|
flex-direction: row-reverse;
|
|
174
174
|
}
|
|
@@ -179,7 +179,7 @@
|
|
|
179
179
|
text-align: right;
|
|
180
180
|
}
|
|
181
181
|
[data-composition-id="overlays"] #stat-3-4 .highlight {
|
|
182
|
-
color: #
|
|
182
|
+
color: #cc0000;
|
|
183
183
|
font-size: 64px;
|
|
184
184
|
font-weight: 900;
|
|
185
185
|
}
|
|
@@ -216,7 +216,7 @@
|
|
|
216
216
|
[data-composition-id="overlays"] #branding .logo-underline {
|
|
217
217
|
width: 100%;
|
|
218
218
|
height: 8px;
|
|
219
|
-
background: #
|
|
219
|
+
background: #cc0000;
|
|
220
220
|
margin-top: 10px;
|
|
221
221
|
transform-origin: left;
|
|
222
222
|
}
|
|
@@ -224,45 +224,96 @@
|
|
|
224
224
|
|
|
225
225
|
<script>
|
|
226
226
|
const tl = gsap.timeline({ paused: true });
|
|
227
|
-
const TRANSCRIPT = [
|
|
227
|
+
const TRANSCRIPT = [
|
|
228
|
+
{ text: "We", start: 0.14, end: 0.239 },
|
|
229
|
+
{ text: "asked", start: 0.28, end: 0.459 },
|
|
230
|
+
{ text: "what", start: 0.5, end: 0.619 },
|
|
231
|
+
{ text: "you", start: 0.659, end: 0.779 },
|
|
232
|
+
{ text: "needed.", start: 0.8, end: 1.179 },
|
|
233
|
+
{ text: "Forty-seven", start: 1.199, end: 1.619 },
|
|
234
|
+
{ text: "percent", start: 1.699, end: 1.96 },
|
|
235
|
+
{ text: "of", start: 1.979, end: 2.059 },
|
|
236
|
+
{ text: "you", start: 2.099, end: 2.299 },
|
|
237
|
+
{ text: "said", start: 2.319, end: 2.499 },
|
|
238
|
+
{ text: "motion", start: 2.559, end: 2.839 },
|
|
239
|
+
{ text: "graphics,", start: 2.899, end: 3.759 },
|
|
240
|
+
{ text: "sixty-two", start: 3.799, end: 4.159 },
|
|
241
|
+
{ text: "percent", start: 4.239, end: 4.559 },
|
|
242
|
+
{ text: "said", start: 4.639, end: 4.799 },
|
|
243
|
+
{ text: "static", start: 4.859, end: 5.199 },
|
|
244
|
+
{ text: "content", start: 5.239, end: 5.639 },
|
|
245
|
+
{ text: "was", start: 5.679, end: 5.779 },
|
|
246
|
+
{ text: "costing", start: 5.859, end: 6.219 },
|
|
247
|
+
{ text: "you", start: 6.259, end: 6.339 },
|
|
248
|
+
{ text: "attention,", start: 6.379, end: 7.299 },
|
|
249
|
+
{ text: "and", start: 7.319, end: 7.439 },
|
|
250
|
+
{ text: "three", start: 7.48, end: 7.599 },
|
|
251
|
+
{ text: "out", start: 7.679, end: 7.779 },
|
|
252
|
+
{ text: "of", start: 7.799, end: 7.879 },
|
|
253
|
+
{ text: "four", start: 7.94, end: 8.139 },
|
|
254
|
+
{ text: "said", start: 8.279, end: 8.46 },
|
|
255
|
+
{ text: "you", start: 8.519, end: 8.6 },
|
|
256
|
+
{ text: "know", start: 8.619, end: 8.739 },
|
|
257
|
+
{ text: "the", start: 8.8, end: 8.88 },
|
|
258
|
+
{ text: "look", start: 8.92, end: 9.079 },
|
|
259
|
+
{ text: "you", start: 9.119, end: 9.259 },
|
|
260
|
+
{ text: "want", start: 9.279, end: 9.619 },
|
|
261
|
+
{ text: "but", start: 9.779, end: 9.88 },
|
|
262
|
+
{ text: "don't", start: 9.92, end: 10.1 },
|
|
263
|
+
{ text: "have", start: 10.159, end: 10.3 },
|
|
264
|
+
{ text: "the", start: 10.3, end: 10.42 },
|
|
265
|
+
{ text: "editing", start: 10.5, end: 10.779 },
|
|
266
|
+
{ text: "skills", start: 10.86, end: 11.139 },
|
|
267
|
+
{ text: "to", start: 11.159, end: 11.239 },
|
|
268
|
+
{ text: "get", start: 11.279, end: 11.439 },
|
|
269
|
+
{ text: "there.", start: 11.46, end: 12.239 },
|
|
270
|
+
{ text: "So", start: 12.3, end: 12.38 },
|
|
271
|
+
{ text: "we", start: 12.399, end: 12.519 },
|
|
272
|
+
{ text: "built", start: 12.539, end: 12.759 },
|
|
273
|
+
{ text: "Hyperframes", start: 12.84, end: 13.119 },
|
|
274
|
+
];
|
|
228
275
|
|
|
229
276
|
// Requirement 1: "47% Motion Graphics" (Start: 1.199, End: 3.759)
|
|
230
277
|
// Positioned in bottom half, columns 1-3.
|
|
231
|
-
tl.fromTo(
|
|
232
|
-
|
|
233
|
-
{ x:
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
tl.to("#stat-47",
|
|
237
|
-
{ x: -540, duration: 0.6, ease: "expo.in" },
|
|
238
|
-
3.759 - 0.6
|
|
278
|
+
tl.fromTo(
|
|
279
|
+
"#stat-47",
|
|
280
|
+
{ x: -540, opacity: 1 },
|
|
281
|
+
{ x: 0, duration: 0.8, ease: "expo.out" },
|
|
282
|
+
1.199,
|
|
239
283
|
);
|
|
284
|
+
tl.to("#stat-47", { x: -540, duration: 0.6, ease: "expo.in" }, 3.759 - 0.6);
|
|
240
285
|
|
|
241
286
|
// Requirement 2: "62% Static Content" (Start: 3.799, End: 7.299)
|
|
242
287
|
// Full canvas moment. Large bold typography across columns.
|
|
243
288
|
tl.set("#stat-62", { opacity: 1 }, 3.799);
|
|
244
289
|
tl.from("#stat-62 .bg-charcoal", { x: "100%", duration: 0.8, ease: "expo.out" }, 3.799);
|
|
245
290
|
tl.from("#stat-62 .red-accent", { x: "100%", duration: 0.8, ease: "expo.out" }, 3.899);
|
|
246
|
-
tl.from(
|
|
291
|
+
tl.from(
|
|
292
|
+
"#stat-62 .large-number",
|
|
293
|
+
{ y: 100, opacity: 0, duration: 1, ease: "expo.out" },
|
|
294
|
+
4.099,
|
|
295
|
+
);
|
|
247
296
|
tl.from("#stat-62 .large-label", { y: 50, opacity: 0, duration: 1, ease: "expo.out" }, 4.299);
|
|
248
|
-
|
|
297
|
+
|
|
249
298
|
tl.to("#stat-62", { x: "-100%", duration: 0.8, ease: "expo.in" }, 7.299 - 0.8);
|
|
250
299
|
|
|
251
300
|
// Requirement 3: "3 out of 4 lack editing skills" (Start: 7.319, End: 12.239)
|
|
252
301
|
// Positioned in columns 5-6 (right side) to avoid face (x: 300-776)
|
|
253
|
-
tl.fromTo(
|
|
254
|
-
|
|
255
|
-
{ x:
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
tl.to("#stat-3-4",
|
|
259
|
-
{ x: 360, duration: 0.6, ease: "expo.in" },
|
|
260
|
-
12.239 - 0.6
|
|
302
|
+
tl.fromTo(
|
|
303
|
+
"#stat-3-4",
|
|
304
|
+
{ x: 360, opacity: 1 },
|
|
305
|
+
{ x: 0, duration: 0.8, ease: "expo.out" },
|
|
306
|
+
7.319,
|
|
261
307
|
);
|
|
308
|
+
tl.to("#stat-3-4", { x: 360, duration: 0.6, ease: "expo.in" }, 12.239 - 0.6);
|
|
262
309
|
|
|
263
310
|
// Requirement 4: "Hyperframes" (Start: 12.84, End: 13.84)
|
|
264
311
|
tl.set("#branding", { opacity: 1 }, 12.84);
|
|
265
|
-
tl.from(
|
|
312
|
+
tl.from(
|
|
313
|
+
"#branding .logo-text",
|
|
314
|
+
{ y: 20, opacity: 0, duration: 0.6, ease: "expo.out" },
|
|
315
|
+
12.84,
|
|
316
|
+
);
|
|
266
317
|
tl.from("#branding .logo-underline", { scaleX: 0, duration: 0.8, ease: "expo.out" }, 13.04);
|
|
267
318
|
|
|
268
319
|
window.__timelines["overlays"] = tl;
|
|
@@ -1,171 +1,178 @@
|
|
|
1
|
-
<!
|
|
1
|
+
<!doctype html>
|
|
2
2
|
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8"
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
5
|
<title>Massimo Vignelli Video</title>
|
|
6
6
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.2/gsap.min.js"></script>
|
|
7
7
|
<style>
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
8
|
+
body,
|
|
9
|
+
html {
|
|
10
|
+
margin: 0;
|
|
11
|
+
padding: 0;
|
|
12
|
+
background: #ffffff;
|
|
13
|
+
overflow: hidden;
|
|
14
|
+
width: 1080px;
|
|
15
|
+
height: 1920px;
|
|
16
|
+
font-family: "Helvetica", Arial, sans-serif;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
/* 6-Column Grid System */
|
|
20
|
+
.grid-container {
|
|
21
|
+
position: absolute;
|
|
22
|
+
top: 0;
|
|
23
|
+
left: 0;
|
|
24
|
+
width: 1080px;
|
|
25
|
+
height: 1920px;
|
|
26
|
+
display: grid;
|
|
27
|
+
grid-template-columns: repeat(6, 1fr);
|
|
28
|
+
pointer-events: none;
|
|
29
|
+
z-index: 1000;
|
|
30
|
+
opacity: 0; /* Keep grid invisible but present for layout references */
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.grid-column {
|
|
34
|
+
border-right: 1px solid rgba(204, 0, 0, 0.2); /* Vignelli Red accent */
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
#main-composition {
|
|
38
|
+
position: relative;
|
|
39
|
+
width: 1080px;
|
|
40
|
+
height: 1920px;
|
|
41
|
+
background: #ffffff;
|
|
42
|
+
overflow: hidden;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/* Layer Hosts */
|
|
46
|
+
#a-roll-wrapper {
|
|
47
|
+
position: absolute;
|
|
48
|
+
top: 0;
|
|
49
|
+
left: 0;
|
|
50
|
+
width: 100%;
|
|
51
|
+
height: 100%;
|
|
52
|
+
z-index: 10;
|
|
53
|
+
overflow: hidden;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
#a-roll,
|
|
57
|
+
#a-roll-wrapper img.__render_frame__,
|
|
58
|
+
#a-roll-wrapper img.__preview_render_frame__ {
|
|
59
|
+
position: absolute;
|
|
60
|
+
inset: 0;
|
|
61
|
+
width: 100%;
|
|
62
|
+
height: 100%;
|
|
63
|
+
object-fit: cover;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
#overlays-comp,
|
|
67
|
+
#captions-comp {
|
|
68
|
+
position: absolute;
|
|
69
|
+
top: 0;
|
|
70
|
+
left: 0;
|
|
71
|
+
width: 1080px;
|
|
72
|
+
height: 1920px;
|
|
73
|
+
pointer-events: none;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
#overlays-comp {
|
|
77
|
+
z-index: 20;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
#captions-comp {
|
|
81
|
+
z-index: 30;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/* Curtain Transition Layer */
|
|
85
|
+
.curtain {
|
|
86
|
+
position: absolute;
|
|
87
|
+
top: 0;
|
|
88
|
+
left: -100%;
|
|
89
|
+
width: 100%;
|
|
90
|
+
height: 100%;
|
|
91
|
+
background: #1a1a1a;
|
|
92
|
+
z-index: 25;
|
|
93
|
+
pointer-events: none;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.curtain.red {
|
|
97
|
+
background: #cc0000;
|
|
98
|
+
z-index: 26;
|
|
99
|
+
}
|
|
101
100
|
</style>
|
|
102
|
-
</head>
|
|
103
|
-
<body>
|
|
104
|
-
<div
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
<
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
101
|
+
</head>
|
|
102
|
+
<body>
|
|
103
|
+
<div
|
|
104
|
+
id="main-composition"
|
|
105
|
+
data-composition-id="main-comp"
|
|
106
|
+
data-width="1080"
|
|
107
|
+
data-height="1920"
|
|
108
|
+
data-duration="13.88"
|
|
109
|
+
>
|
|
110
|
+
<!-- A-Roll -->
|
|
111
|
+
<div id="a-roll-wrapper">
|
|
112
|
+
<video
|
|
113
|
+
id="a-roll"
|
|
114
|
+
src="__VIDEO_SRC__"
|
|
115
|
+
data-start="0"
|
|
116
|
+
data-duration="13.88"
|
|
117
|
+
data-track-index="0"
|
|
118
|
+
></video>
|
|
119
|
+
</div>
|
|
120
|
+
|
|
121
|
+
<!-- Transitions -->
|
|
122
|
+
<div id="curtain-black" class="curtain"></div>
|
|
123
|
+
<div id="curtain-red" class="curtain red"></div>
|
|
124
|
+
|
|
125
|
+
<!-- Overlays Composition -->
|
|
126
|
+
<div
|
|
127
|
+
id="overlays-comp"
|
|
128
|
+
data-composition-id="overlays"
|
|
129
|
+
data-composition-src="compositions/overlays.html"
|
|
130
|
+
data-start="0"
|
|
131
|
+
data-duration="13.88"
|
|
132
|
+
data-track-index="2"
|
|
133
|
+
></div>
|
|
134
|
+
|
|
135
|
+
<!-- Captions Composition -->
|
|
136
|
+
<div
|
|
137
|
+
id="captions-comp"
|
|
138
|
+
data-composition-id="captions"
|
|
139
|
+
data-composition-src="compositions/captions.html"
|
|
140
|
+
data-start="0"
|
|
141
|
+
data-duration="13.88"
|
|
142
|
+
data-track-index="3"
|
|
143
|
+
></div>
|
|
144
|
+
|
|
145
|
+
<!-- Grid Visualization -->
|
|
146
|
+
<div class="grid-container">
|
|
147
|
+
<div class="grid-column"></div>
|
|
148
|
+
<div class="grid-column"></div>
|
|
149
|
+
<div class="grid-column"></div>
|
|
150
|
+
<div class="grid-column"></div>
|
|
151
|
+
<div class="grid-column"></div>
|
|
152
|
+
<div class="grid-column"></div>
|
|
153
|
+
</div>
|
|
154
|
+
|
|
155
|
+
<script>
|
|
156
|
+
const tl = gsap.timeline({ paused: true });
|
|
157
|
+
|
|
158
|
+
// Transition: Curtain Pull logic
|
|
159
|
+
// A-roll leaves the screen at least once.
|
|
160
|
+
// Timing: Let's do a curtain pull at 3.7s (transitioning to the 62% stat)
|
|
161
|
+
// and return at 7.3s (end of attention stat).
|
|
162
|
+
|
|
163
|
+
// Curtain Out (A-roll hidden)
|
|
164
|
+
tl.to("#curtain-black", { left: "0%", duration: 0.2, ease: "power2.inOut" }, 3.5);
|
|
165
|
+
tl.to("#a-roll-wrapper", { opacity: 0, duration: 0 }, 3.7);
|
|
166
|
+
tl.to("#curtain-black", { left: "100%", duration: 0.4, ease: "power2.inOut" }, 3.7);
|
|
167
|
+
|
|
168
|
+
// Curtain In (A-roll return)
|
|
169
|
+
tl.set("#curtain-red", { left: "-100%" }, 7.1);
|
|
170
|
+
tl.to("#curtain-red", { left: "0%", duration: 0.2, ease: "power2.inOut" }, 7.1);
|
|
171
|
+
tl.to("#a-roll-wrapper", { opacity: 1, duration: 0 }, 7.3);
|
|
172
|
+
tl.to("#curtain-red", { left: "100%", duration: 0.4, ease: "power2.inOut" }, 7.3);
|
|
173
|
+
|
|
174
|
+
window.__timelines["main-comp"] = tl;
|
|
175
|
+
</script>
|
|
169
176
|
</div>
|
|
170
|
-
</body>
|
|
177
|
+
</body>
|
|
171
178
|
</html>
|