_Noxty commited on
Commit
36e2c79
·
verified ·
1 Parent(s): c81c6c1

Upload 3 files

Browse files
Files changed (3) hide show
  1. index.html +43 -19
  2. script.js +34 -0
  3. style.css +457 -19
index.html CHANGED
@@ -1,19 +1,43 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <div class="container">
2
+ <div class="richard">
3
+ <div class="hair"></div>
4
+ <div class="ear left"></div>
5
+ <div class="ear right"></div>
6
+ <div class="head">
7
+ <div class="eyebrow left"></div>
8
+ <div class="eyebrow right"></div>
9
+ <div class="eye left">
10
+ <div class="pupil left"></div>
11
+ </div>
12
+ <div class="eye right">
13
+ <div class="pupil right"></div>
14
+ </div>
15
+ <div class="nose"></div>
16
+ <div class="mustache"></div>
17
+ <div class="mouth"></div>
18
+ <div class="tear left"></div>
19
+ <div class="tear right"></div>
20
+ </div>
21
+ <div class="shirt">
22
+ <div class="neck"></div>
23
+ <div class="arm left"></div>
24
+ <div class="arm right">
25
+ <div class="hand right">
26
+ <div class="thumb right"></div>
27
+ <div class="checkmark">
28
+ <img src="./checkmark.png">
29
+ </div>
30
+ </div>
31
+ </div>
32
+ </div>
33
+ <div class="pants">
34
+ <div class="belt"></div>
35
+ </div>
36
+ </div>
37
+ <div class="prompt">Prove you're human. Give Richard a compliment.</div>
38
+ <div class="button-wrapper">
39
+ <input type="text" id="name" name="name" />
40
+ <div class="captcha-label">reReCAPTCHA</div>
41
+ <div class="button">Tell Richard</div>
42
+ </div>
43
+ </div>
script.js ADDED
@@ -0,0 +1,34 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ document.addEventListener("DOMContentLoaded", function() {
2
+ const container = document.querySelector(".container");
3
+ const button = document.querySelector(".button");
4
+ const input = document.querySelector("input");
5
+
6
+ const animateStart = () => {
7
+ container.classList.add("told-richard");
8
+ }
9
+
10
+ const inputChangeHandler = (event) => {
11
+ console.log(event.target.value);
12
+
13
+ if (event.target.value.includes("Your hair ")) {
14
+ container.classList.add("eyebrow-raise");
15
+ } else {
16
+ container.classList.remove("eyebrow-raise");
17
+ }
18
+
19
+ if (event.target.value === "Your hair looks kind of funny") {
20
+ container.classList.add("animating-tear");
21
+ } else if (container.classList.value.includes("animating-tear")) {
22
+ container.classList.remove("animating-tear");
23
+ }
24
+
25
+ if (event.target.value === "Your hair looks fantastic") {
26
+ container.classList.add("animating-smile");
27
+ } else if (container.classList.value.includes("animating-smile")) {
28
+ container.classList.remove("animating-smile");
29
+ }
30
+ }
31
+
32
+ button.addEventListener("click", animateStart);
33
+ input.addEventListener("input", (event) => inputChangeHandler(event));
34
+ });
style.css CHANGED
@@ -1,28 +1,466 @@
1
- body {
2
- padding: 2rem;
3
- font-family: -apple-system, BlinkMacSystemFont, "Arial", sans-serif;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4
  }
5
 
6
- h1 {
7
- font-size: 16px;
8
- margin-top: 0;
 
 
 
 
 
 
 
 
 
 
 
 
9
  }
10
 
11
- p {
12
- color: rgb(107, 114, 128);
13
- font-size: 15px;
14
- margin-bottom: 10px;
15
- margin-top: 5px;
16
  }
17
 
18
- .card {
19
- max-width: 620px;
20
- margin: 0 auto;
21
- padding: 16px;
22
- border: 1px solid lightgray;
23
- border-radius: 16px;
24
  }
25
 
26
- .card p:last-child {
27
- margin-bottom: 0;
 
 
28
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ .container {
2
+ display: grid;
3
+ height: 100vh;
4
+ place-items: center;
5
+
6
+ font-family: "Roboto Condensed";
7
+ }
8
+
9
+ .button {
10
+ position: absolute;
11
+ right: -255px;
12
+ top: 60px;
13
+
14
+ width: 150px;
15
+ padding: 10px 20px;
16
+ background-color: #6a89cc;
17
+ border-radius: 10px;
18
+ text-align: center;
19
+
20
+ color: white;
21
+
22
+ z-index: 1;
23
+
24
+ &:hover {
25
+ cursor: pointer;
26
+ background-color: #5977b9;
27
+ }
28
+ }
29
+
30
+ .button-wrapper {
31
+ position: absolute;
32
+ bottom: 200px;
33
+ display: grid;
34
+ grid-auto-flow: column;
35
+ gap: 20px;
36
+ }
37
+
38
+ input {
39
+ position: absolute;
40
+ left: -270px;
41
+ top: 60px;
42
+
43
+ width: 300px;
44
+ height: 33px;
45
+
46
+ padding-left: 10px;
47
+
48
+ border: 2px solid #6a89cc;
49
+ border-radius: 10px;
50
+
51
+ font-size: 18px;
52
+ }
53
+
54
+ .captcha-label {
55
+ position: absolute;
56
+ bottom: -125px;
57
+ left: -265px;
58
+ color: lightgray;
59
+ }
60
+
61
+ .richard {
62
+ position: absolute;
63
+ bottom: 275px;
64
+
65
+ width: 250px;
66
+ height: 250px;
67
+
68
+ .head {
69
+ position: absolute;
70
+ top: 100px;
71
+ left: 50px;
72
+
73
+ width: 150px;
74
+ height: 150px;
75
+
76
+ background-color: tan;
77
+
78
+ border-radius: 100px 100px 0 0;
79
+
80
+ .eye {
81
+ position: absolute;
82
+ top: 50px;
83
+
84
+ width: 25px;
85
+ height: 15px;
86
+
87
+ background-color: white;
88
+
89
+ border-radius: 0 0 25px 25px;
90
+
91
+ &.left {
92
+ left: 40px;
93
+ }
94
+
95
+ &.right {
96
+ right: 40px;
97
+ }
98
+
99
+ .pupil {
100
+ position: absolute;
101
+ top: 0px;
102
+
103
+ width: 10px;
104
+ height: 7px;
105
+
106
+ background-color: black;
107
+
108
+ border-radius: 0 0 10px 10px;
109
+
110
+ &.left {
111
+ left: 12px;
112
+ }
113
+
114
+ &.right {
115
+ right: 12px;
116
+ }
117
+ }
118
+ }
119
+
120
+ .eyebrow {
121
+ position: absolute;
122
+ top: 40px;
123
+
124
+ width: 25px;
125
+ height: 10px;
126
+
127
+ background-color: #6f4611;
128
+
129
+ border-radius: 25px;
130
+
131
+ &.left {
132
+ left: 40px;
133
+ }
134
+
135
+ &.right {
136
+ right: 40px;
137
+ }
138
+ }
139
+ }
140
+
141
+ .mustache {
142
+ position: absolute;
143
+ top: 90px;
144
+ left: 58px;
145
+
146
+ width: 35px;
147
+ height: 10px;
148
+
149
+ background-color: #6f4611;
150
+ border-radius: 25px;
151
+
152
+ z-index: 1;
153
+ }
154
+
155
+ .hair {
156
+ position: absolute;
157
+ top: 100px;
158
+ left: 50px;
159
+
160
+ width: 140px;
161
+ height: 35px;
162
+
163
+ background-color: #6f4611;
164
+ border-radius: 10% 80% 10% 50% / 30% 40% 30% 80%;
165
+
166
+ z-index: 1;
167
+ }
168
+
169
+ .ear {
170
+ position: absolute;
171
+ top: 150px;
172
+
173
+ width: 25px;
174
+ height: 15px;
175
+
176
+ background-color: tan;
177
+
178
+ border-radius: 0 0 25px 25px;
179
+
180
+ &.left {
181
+ left: 45px;
182
+ border-radius: 25px 0 0px 25px;
183
+ }
184
+
185
+ &.right {
186
+ right: 45px;
187
+ border-radius: 0 25px 25px 0px;
188
+ }
189
+ }
190
+
191
+ .nose {
192
+ position: absolute;
193
+ top: 60px;
194
+ left: 68px;
195
+
196
+ width: 15px;
197
+ height: 25px;
198
+
199
+ background-color: tan;
200
+
201
+ border-radius: 0 0 25px 25px;
202
+ box-shadow: 0px 10px 15px -3px rgba(0,0,0,0.1),0px 10px 15px -3px rgba(0,0,0,0.1),0px 10px 15px -3px rgba(0,0,0,0.1),0px 10px 15px -3px rgba(0,0,0,0.1);
203
+
204
+ z-index: 1;
205
+ }
206
+
207
+ .mouth {
208
+ position: absolute;
209
+ top: 110px;
210
+ left: 62px;
211
+
212
+ width: 22px;
213
+ height: 30px;
214
+
215
+ border: solid 3px #000;
216
+ border-color: #000 transparent transparent transparent;
217
+
218
+ z-index: 1;
219
+ }
220
+
221
+ .shirt {
222
+ position: absolute;
223
+ top: 230px;
224
+ left: 50px;
225
+
226
+ width: 150px;
227
+ height: 40px;
228
+
229
+ background-color: #6a89cc;
230
+ }
231
+
232
+ .neck {
233
+ position: absolute;
234
+ left: 56px;
235
+
236
+ width: 0;
237
+ height: 0;
238
+
239
+ border-left: 20px solid transparent;
240
+ border-right: 20px solid transparent;
241
+
242
+ border-top: 25px solid tan;
243
+ }
244
+
245
+ .pants {
246
+ position: absolute;
247
+ left: 50px;
248
+ top: 270px;
249
+
250
+ width: 120px;
251
+ height: 0;
252
+
253
+ border-top: 30px solid #0a3d62;
254
+ border-left: 15px solid transparent;
255
+ border-right: 15px solid transparent;
256
+
257
+ z-index: 1;
258
+ }
259
+ }
260
+
261
+ .prompt {
262
+ position: absolute;
263
+ bottom: 160px;
264
+
265
+ font-size: 20px;
266
+ color: #0a3d62;
267
+ }
268
+
269
+ .eyebrow-raise {
270
+ .eyebrow.right {
271
+ transform: translateY(-5px);
272
+ }
273
+ }
274
+
275
+ .tear {
276
+ position: absolute;
277
+ top: 65px;
278
+
279
+ width: 8px;
280
+ height: 0px;
281
+
282
+ background-color: #4a69bd;
283
+
284
+ &.left {
285
+ left: 46px;
286
+ }
287
+ &.right {
288
+ right: 46px;
289
+ }
290
+ }
291
+
292
+ .arm.right {
293
+ position: absolute;
294
+ width: 55px;
295
+ height: 7px;
296
+ background: #6a89cc;
297
+ right: 0px;
298
+ top: 10px;
299
+
300
+ z-index: -1;
301
+ }
302
+
303
+ .hand.right {
304
+ position: absolute;
305
+ right: 0px;
306
+ top: -3px;
307
+
308
+ width: 10px;
309
+ height: 10px;
310
+
311
+ background-color: tan;
312
+ }
313
+
314
+ .thumb.right {
315
+ position: absolute;
316
+ right: 5px;
317
+ top: -3px;
318
+
319
+ width: 5px;
320
+ height: 5px;
321
+
322
+ background-color: tan;
323
+ }
324
+
325
+ .checkmark img {
326
+ position: absolute;
327
+ top: -3px;
328
+ right: -5px;
329
+ width: 20px;
330
+ height: 20px;
331
+ opacity: 0;
332
+ }
333
+
334
+ /* animation start */
335
+ /* If you're reading this, leave a compliment for Richard in the comments :) */
336
+
337
+ .animating-tear {
338
+ .tear {
339
+ animation-name: tears-falling;
340
+ animation-duration: .25s;
341
+ animation-delay: 0s;
342
+ animation-fill-mode: forwards;
343
+ animation-timing-function: cubic-bezier(0.075, 0.82, 0.165, 1);
344
+ }
345
+ .eyebrow.left {
346
+ animation-name: tears-eyebrow-left;
347
+ animation-duration: .25s;
348
+ animation-delay: 0s;
349
+ animation-fill-mode: forwards;
350
+ animation-timing-function: cubic-bezier(0.075, 0.82, 0.165, 1);
351
+ }
352
+ .eyebrow.right {
353
+ animation-name: tears-eyebrow-right;
354
+ animation-duration: .25s;
355
+ animation-delay: 0s;
356
+ animation-fill-mode: forwards;
357
+ animation-timing-function: cubic-bezier(0.075, 0.82, 0.165, 1);
358
+ }
359
+ .mouth {
360
+ animation-name: frown;
361
+ animation-duration: .25s;
362
+ animation-delay: 0s;
363
+ animation-fill-mode: forwards;
364
+ animation-timing-function: cubic-bezier(0.075, 0.82, 0.165, 1);
365
+ }
366
+ }
367
+
368
+ .animating-smile {
369
+ .mouth {
370
+ animation-name: smile;
371
+ animation-duration: .25s;
372
+ animation-delay: 0s;
373
+ animation-fill-mode: forwards;
374
+ animation-timing-function: cubic-bezier(0.075, 0.82, 0.165, 1);
375
+ }
376
+ .eyebrow.left {
377
+ animation-name: smile-eyebrow-left;
378
+ animation-duration: .25s;
379
+ animation-delay: 0s;
380
+ animation-fill-mode: forwards;
381
+ animation-timing-function: cubic-bezier(0.075, 0.82, 0.165, 1);
382
+ }
383
+ .eyebrow.right {
384
+ animation-name: smile-eyebrow-right;
385
+ animation-duration: .25s;
386
+ animation-delay: 0s;
387
+ animation-fill-mode: forwards;
388
+ animation-timing-function: cubic-bezier(0.075, 0.82, 0.165, 1);
389
+ }
390
  }
391
 
392
+ .animating-smile.told-richard {
393
+ .arm.right {
394
+ animation-name: thumbs-up;
395
+ animation-duration: .1s;
396
+ animation-delay: 0s;
397
+ animation-fill-mode: forwards;
398
+ animation-timing-function: cubic-bezier(0.075, 0.82, 0.165, 1);
399
+ }
400
+ .checkmark img {
401
+ animation-name: checkmark;
402
+ animation-duration: .1s;
403
+ animation-delay: .25s;
404
+ animation-fill-mode: forwards;
405
+ animation-timing-function: cubic-bezier(0.075, 0.82, 0.165, 1);
406
+ }
407
  }
408
 
409
+ @keyframes tears-falling {
410
+ 100% {
411
+ height: 80px;
412
+ }
 
413
  }
414
 
415
+ @keyframes tears-eyebrow-left {
416
+ 100% {
417
+ transform: translateY(2px) rotate(-5deg);
418
+ }
 
 
419
  }
420
 
421
+ @keyframes smile-eyebrow-right {
422
+ 100% {
423
+ transform: translateY(-5px) rotate(5deg);
424
+ }
425
  }
426
+
427
+ @keyframes smile-eyebrow-left {
428
+ 100% {
429
+ transform: translateY(-5px) rotate(-5deg);
430
+ }
431
+ }
432
+
433
+ @keyframes tears-eyebrow-right {
434
+ 100% {
435
+ transform: translateY(2px) rotate(5deg);
436
+ }
437
+ }
438
+
439
+ @keyframes frown {
440
+ 100% {
441
+ border-radius: 50% / 15px 15px 0 0;
442
+ }
443
+ }
444
+
445
+ @keyframes smile {
446
+ 0%, 100% {
447
+ top: 80px;
448
+ border-radius: 50% / 15px 15px 0 0;
449
+ transform: rotate(180deg);
450
+ }
451
+ }
452
+
453
+ @keyframes thumbs-up {
454
+ 100% {
455
+ right: -50px;
456
+ }
457
+ }
458
+
459
+ @keyframes checkmark {
460
+ 100% {
461
+ transform: translateY(-25px);
462
+ opacity: 1;
463
+ }
464
+ }
465
+
466
+ /* animation end */