vansin commited on
Commit
fa40b45
·
verified ·
1 Parent(s): 3b37d78

Upload folder using huggingface_hub

Browse files
Files changed (3) hide show
  1. assets/css/styles.css +570 -0
  2. assets/js/script.js +138 -0
  3. index.html +159 -19
assets/css/styles.css ADDED
@@ -0,0 +1,570 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ * {
2
+ margin: 0;
3
+ padding: 0;
4
+ box-sizing: border-box;
5
+ }
6
+
7
+ :root {
8
+ --primary-color: #FF9D00;
9
+ --secondary-color: #FFD21E;
10
+ --accent-color: #FF6B6B;
11
+ --dark-bg: #1a1a2e;
12
+ --card-bg: #16213e;
13
+ --text-primary: #ffffff;
14
+ --text-secondary: #e4e4e4;
15
+ --gradient-1: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
16
+ --gradient-2: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
17
+ --gradient-3: linear-gradient(135deg, #4facfe 0%, #00f2fe 100%);
18
+ --gradient-4: linear-gradient(135deg, #43e97b 0%, #38f9d7 100%);
19
+ }
20
+
21
+ body {
22
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', sans-serif;
23
+ background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f3460 100%);
24
+ min-height: 100vh;
25
+ color: var(--text-primary);
26
+ line-height: 1.6;
27
+ }
28
+
29
+ .header {
30
+ padding: 1rem;
31
+ text-align: right;
32
+ }
33
+
34
+ .built-with {
35
+ display: inline-block;
36
+ padding: 0.5rem 1rem;
37
+ background: rgba(255, 255, 255, 0.1);
38
+ border-radius: 20px;
39
+ color: var(--text-primary);
40
+ text-decoration: none;
41
+ font-size: 0.9rem;
42
+ transition: all 0.3s ease;
43
+ backdrop-filter: blur(10px);
44
+ }
45
+
46
+ .built-with:hover {
47
+ background: rgba(255, 255, 255, 0.2);
48
+ transform: translateY(-2px);
49
+ }
50
+
51
+ .poster-container {
52
+ max-width: 1200px;
53
+ margin: 0 auto;
54
+ padding: 2rem 1rem;
55
+ }
56
+
57
+ .poster {
58
+ background: linear-gradient(135deg, rgba(255, 255, 255, 0.1) 0%, rgba(255, 255, 255, 0.05) 100%);
59
+ border-radius: 30px;
60
+ padding: 3rem 2rem;
61
+ position: relative;
62
+ overflow: hidden;
63
+ backdrop-filter: blur(10px);
64
+ border: 2px solid rgba(255, 255, 255, 0.1);
65
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
66
+ }
67
+
68
+ .bg-decoration {
69
+ position: absolute;
70
+ top: 0;
71
+ left: 0;
72
+ width: 100%;
73
+ height: 100%;
74
+ z-index: 0;
75
+ overflow: hidden;
76
+ }
77
+
78
+ .circle {
79
+ position: absolute;
80
+ border-radius: 50%;
81
+ opacity: 0.1;
82
+ animation: float 20s infinite ease-in-out;
83
+ }
84
+
85
+ .circle-1 {
86
+ width: 300px;
87
+ height: 300px;
88
+ background: var(--primary-color);
89
+ top: -100px;
90
+ right: -100px;
91
+ animation-delay: 0s;
92
+ }
93
+
94
+ .circle-2 {
95
+ width: 200px;
96
+ height: 200px;
97
+ background: var(--accent-color);
98
+ bottom: -50px;
99
+ left: -50px;
100
+ animation-delay: 5s;
101
+ }
102
+
103
+ .circle-3 {
104
+ width: 150px;
105
+ height: 150px;
106
+ background: var(--secondary-color);
107
+ top: 50%;
108
+ left: 50%;
109
+ animation-delay: 10s;
110
+ }
111
+
112
+ @keyframes float {
113
+ 0%, 100% {
114
+ transform: translate(0, 0) scale(1);
115
+ }
116
+ 33% {
117
+ transform: translate(30px, -30px) scale(1.1);
118
+ }
119
+ 66% {
120
+ transform: translate(-30px, 30px) scale(0.9);
121
+ }
122
+ }
123
+
124
+ .poster-header {
125
+ text-align: center;
126
+ margin-bottom: 3rem;
127
+ position: relative;
128
+ z-index: 1;
129
+ }
130
+
131
+ .logo-section {
132
+ display: flex;
133
+ align-items: center;
134
+ justify-content: center;
135
+ gap: 1rem;
136
+ margin-bottom: 1rem;
137
+ }
138
+
139
+ .hf-logo {
140
+ font-size: 3rem;
141
+ animation: bounce 2s infinite;
142
+ }
143
+
144
+ @keyframes bounce {
145
+ 0%, 100% {
146
+ transform: translateY(0);
147
+ }
148
+ 50% {
149
+ transform: translateY(-10px);
150
+ }
151
+ }
152
+
153
+ .main-title {
154
+ font-size: 2.5rem;
155
+ font-weight: 700;
156
+ background: linear-gradient(90deg, var(--primary-color), var(--secondary-color));
157
+ -webkit-background-clip: text;
158
+ -webkit-text-fill-color: transparent;
159
+ background-clip: text;
160
+ }
161
+
162
+ .event-title {
163
+ font-size: 3rem;
164
+ font-weight: 800;
165
+ margin: 1rem 0;
166
+ text-shadow: 0 4px 20px rgba(255, 157, 0, 0.3);
167
+ }
168
+
169
+ .date-badge {
170
+ display: inline-flex;
171
+ align-items: center;
172
+ gap: 0.5rem;
173
+ background: rgba(255, 157, 0, 0.2);
174
+ padding: 0.75rem 1.5rem;
175
+ border-radius: 25px;
176
+ font-size: 1.1rem;
177
+ border: 2px solid var(--primary-color);
178
+ }
179
+
180
+ .date-icon {
181
+ font-size: 1.3rem;
182
+ }
183
+
184
+ .content-grid {
185
+ display: grid;
186
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
187
+ gap: 1.5rem;
188
+ margin-bottom: 3rem;
189
+ position: relative;
190
+ z-index: 1;
191
+ }
192
+
193
+ .feature-card {
194
+ background: rgba(255, 255, 255, 0.05);
195
+ border-radius: 20px;
196
+ padding: 2rem;
197
+ backdrop-filter: blur(10px);
198
+ border: 2px solid rgba(255, 255, 255, 0.1);
199
+ transition: all 0.3s ease;
200
+ position: relative;
201
+ overflow: hidden;
202
+ }
203
+
204
+ .feature-card::before {
205
+ content: '';
206
+ position: absolute;
207
+ top: 0;
208
+ left: 0;
209
+ width: 100%;
210
+ height: 4px;
211
+ background: var(--gradient-1);
212
+ transform: scaleX(0);
213
+ transition: transform 0.3s ease;
214
+ }
215
+
216
+ .card-1::before {
217
+ background: var(--gradient-1);
218
+ }
219
+
220
+ .card-2::before {
221
+ background: var(--gradient-2);
222
+ }
223
+
224
+ .card-3::before {
225
+ background: var(--gradient-3);
226
+ }
227
+
228
+ .card-4::before {
229
+ background: var(--gradient-4);
230
+ }
231
+
232
+ .feature-card:hover {
233
+ transform: translateY(-10px);
234
+ border-color: var(--primary-color);
235
+ box-shadow: 0 15px 40px rgba(255, 157, 0, 0.2);
236
+ }
237
+
238
+ .feature-card:hover::before {
239
+ transform: scaleX(1);
240
+ }
241
+
242
+ .card-icon {
243
+ font-size: 3rem;
244
+ margin-bottom: 1rem;
245
+ display: inline-block;
246
+ animation: rotate 3s infinite ease-in-out;
247
+ }
248
+
249
+ @keyframes rotate {
250
+ 0%, 100% {
251
+ transform: rotate(0deg);
252
+ }
253
+ 50% {
254
+ transform: rotate(10deg);
255
+ }
256
+ }
257
+
258
+ .card-title {
259
+ font-size: 1.5rem;
260
+ font-weight: 700;
261
+ margin-bottom: 0.75rem;
262
+ color: var(--primary-color);
263
+ }
264
+
265
+ .card-description {
266
+ color: var(--text-secondary);
267
+ margin-bottom: 1rem;
268
+ font-size: 0.95rem;
269
+ }
270
+
271
+ .card-list {
272
+ list-style: none;
273
+ padding: 0;
274
+ }
275
+
276
+ .card-list li {
277
+ padding: 0.5rem 0;
278
+ padding-left: 1.5rem;
279
+ position: relative;
280
+ color: var(--text-secondary);
281
+ font-size: 0.9rem;
282
+ }
283
+
284
+ .card-list li::before {
285
+ content: '✓';
286
+ position: absolute;
287
+ left: 0;
288
+ color: var(--primary-color);
289
+ font-weight: bold;
290
+ }
291
+
292
+ .cta-section {
293
+ text-align: center;
294
+ margin: 2rem 0;
295
+ position: relative;
296
+ z-index: 1;
297
+ }
298
+
299
+ .cta-content {
300
+ background: linear-gradient(135deg, rgba(255, 157, 0, 0.2), rgba(255, 210, 30, 0.2));
301
+ padding: 2rem;
302
+ border-radius: 20px;
303
+ border: 2px solid var(--primary-color);
304
+ }
305
+
306
+ .cta-text {
307
+ font-size: 1.5rem;
308
+ font-weight: 600;
309
+ margin-bottom: 1.5rem;
310
+ }
311
+
312
+ .cta-button {
313
+ background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
314
+ color: var(--dark-bg);
315
+ border: none;
316
+ padding: 1rem 3rem;
317
+ font-size: 1.2rem;
318
+ font-weight: 700;
319
+ border-radius: 30px;
320
+ cursor: pointer;
321
+ transition: all 0.3s ease;
322
+ box-shadow: 0 10px 30px rgba(255, 157, 0, 0.3);
323
+ }
324
+
325
+ .cta-button:hover {
326
+ transform: translateY(-3px);
327
+ box-shadow: 0 15px 40px rgba(255, 157, 0, 0.5);
328
+ }
329
+
330
+ .poster-footer {
331
+ display: flex;
332
+ flex-wrap: wrap;
333
+ justify-content: center;
334
+ gap: 1rem;
335
+ position: relative;
336
+ z-index: 1;
337
+ }
338
+
339
+ .badge {
340
+ background: rgba(255, 255, 255, 0.1);
341
+ padding: 0.5rem 1.5rem;
342
+ border-radius: 20px;
343
+ font-size: 0.9rem;
344
+ border: 1px solid rgba(255, 255, 255, 0.2);
345
+ backdrop-filter: blur(5px);
346
+ }
347
+
348
+ .action-buttons {
349
+ display: flex;
350
+ justify-content: center;
351
+ gap: 1rem;
352
+ margin-top: 2rem;
353
+ flex-wrap: wrap;
354
+ }
355
+
356
+ .action-btn {
357
+ display: flex;
358
+ align-items: center;
359
+ gap: 0.5rem;
360
+ padding: 1rem 2rem;
361
+ border: 2px solid rgba(255, 255, 255, 0.2);
362
+ background: rgba(255, 255, 255, 0.05);
363
+ color: var(--text-primary);
364
+ border-radius: 25px;
365
+ font-size: 1rem;
366
+ font-weight: 600;
367
+ cursor: pointer;
368
+ transition: all 0.3s ease;
369
+ backdrop-filter: blur(10px);
370
+ }
371
+
372
+ .action-btn:hover {
373
+ background: rgba(255, 255, 255, 0.1);
374
+ border-color: var(--primary-color);
375
+ transform: translateY(-2px);
376
+ }
377
+
378
+ .btn-icon {
379
+ font-size: 1.2rem;
380
+ }
381
+
382
+ /* Modal Styles */
383
+ .modal {
384
+ display: none;
385
+ position: fixed;
386
+ z-index: 1000;
387
+ left: 0;
388
+ top: 0;
389
+ width: 100%;
390
+ height: 100%;
391
+ background: rgba(0, 0, 0, 0.7);
392
+ backdrop-filter: blur(10px);
393
+ }
394
+
395
+ .modal-content {
396
+ background: var(--card-bg);
397
+ margin: 5% auto;
398
+ padding: 2rem;
399
+ border: 2px solid rgba(255, 255, 255, 0.1);
400
+ border-radius: 20px;
401
+ width: 90%;
402
+ max-width: 500px;
403
+ position: relative;
404
+ animation: slideDown 0.3s ease;
405
+ }
406
+
407
+ @keyframes slideDown {
408
+ from {
409
+ transform: translateY(-50px);
410
+ opacity: 0;
411
+ }
412
+ to {
413
+ transform: translateY(0);
414
+ opacity: 1;
415
+ }
416
+ }
417
+
418
+ .close-btn {
419
+ color: var(--text-secondary);
420
+ float: right;
421
+ font-size: 2rem;
422
+ font-weight: bold;
423
+ cursor: pointer;
424
+ line-height: 1;
425
+ transition: color 0.3s ease;
426
+ }
427
+
428
+ .close-btn:hover {
429
+ color: var(--primary-color);
430
+ }
431
+
432
+ .modal-content h2 {
433
+ margin-bottom: 1rem;
434
+ color: var(--primary-color);
435
+ }
436
+
437
+ .modal-description {
438
+ color: var(--text-secondary);
439
+ margin-bottom: 2rem;
440
+ }
441
+
442
+ .signup-form {
443
+ display: flex;
444
+ flex-direction: column;
445
+ gap: 1.5rem;
446
+ }
447
+
448
+ .form-group {
449
+ display: flex;
450
+ flex-direction: column;
451
+ gap: 0.5rem;
452
+ }
453
+
454
+ .form-group label {
455
+ font-weight: 600;
456
+ color: var(--text-secondary);
457
+ }
458
+
459
+ .form-group input,
460
+ .form-group select {
461
+ padding: 0.75rem;
462
+ border: 2px solid rgba(255, 255, 255, 0.1);
463
+ background: rgba(255, 255, 255, 0.05);
464
+ border-radius: 10px;
465
+ color: var(--text-primary);
466
+ font-size: 1rem;
467
+ transition: all 0.3s ease;
468
+ }
469
+
470
+ .form-group input:focus,
471
+ .form-group select:focus {
472
+ outline: none;
473
+ border-color: var(--primary-color);
474
+ background: rgba(255, 255, 255, 0.1);
475
+ }
476
+
477
+ .submit-btn {
478
+ background: linear-gradient(135deg, var(--primary-color), var(--secondary-color));
479
+ color: var(--dark-bg);
480
+ border: none;
481
+ padding: 1rem;
482
+ font-size: 1.1rem;
483
+ font-weight: 700;
484
+ border-radius: 10px;
485
+ cursor: pointer;
486
+ transition: all 0.3s ease;
487
+ }
488
+
489
+ .submit-btn:hover {
490
+ transform: translateY(-2px);
491
+ box-shadow: 0 10px 30px rgba(255, 157, 0, 0.3);
492
+ }
493
+
494
+ /* Footer */
495
+ .site-footer {
496
+ text-align: center;
497
+ padding: 2rem;
498
+ color: var(--text-secondary);
499
+ font-size: 0.9rem;
500
+ }
501
+
502
+ .site-footer a {
503
+ color: var(--primary-color);
504
+ text-decoration: none;
505
+ transition: color 0.3s ease;
506
+ }
507
+
508
+ .site-footer a:hover {
509
+ color: var(--secondary-color);
510
+ }
511
+
512
+ /* Responsive Design */
513
+ @media (max-width: 768px) {
514
+ .main-title {
515
+ font-size: 1.8rem;
516
+ }
517
+
518
+ .event-title {
519
+ font-size: 2rem;
520
+ }
521
+
522
+ .poster {
523
+ padding: 2rem 1.5rem;
524
+ }
525
+
526
+ .content-grid {
527
+ grid-template-columns: 1fr;
528
+ }
529
+
530
+ .cta-text {
531
+ font-size: 1.2rem;
532
+ }
533
+
534
+ .modal-content {
535
+ width: 95%;
536
+ padding: 1.5rem;
537
+ }
538
+ }
539
+
540
+ @media (max-width: 480px) {
541
+ .hf-logo {
542
+ font-size: 2rem;
543
+ }
544
+
545
+ .main-title {
546
+ font-size: 1.5rem;
547
+ }
548
+
549
+ .event-title {
550
+ font-size: 1.5rem;
551
+ }
552
+
553
+ .date-badge {
554
+ font-size: 0.9rem;
555
+ padding: 0.5rem 1rem;
556
+ }
557
+
558
+ .feature-card {
559
+ padding: 1.5rem;
560
+ }
561
+
562
+ .card-title {
563
+ font-size: 1.2rem;
564
+ }
565
+
566
+ .action-btn {
567
+ padding: 0.75rem 1.5rem;
568
+ font-size: 0.9rem;
569
+ }
570
+ }
assets/js/script.js ADDED
@@ -0,0 +1,138 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ // Modal functions
2
+ function showModal() {
3
+ const modal = document.getElementById('modal');
4
+ modal.style.display = 'block';
5
+ document.body.style.overflow = 'hidden';
6
+ }
7
+
8
+ function closeModal() {
9
+ const modal = document.getElementById('modal');
10
+ modal.style.display = 'none';
11
+ document.body.style.overflow = 'auto';
12
+ }
13
+
14
+ // Close modal when clicking outside
15
+ window.onclick = function(event) {
16
+ const modal = document.getElementById('modal');
17
+ if (event.target === modal) {
18
+ closeModal();
19
+ }
20
+ }
21
+
22
+ // Form submission handler
23
+ function handleSubmit(event) {
24
+ event.preventDefault();
25
+
26
+ const name = document.getElementById('name').value;
27
+ const email = document.getElementById('email').value;
28
+ const interest = document.getElementById('interest').value;
29
+
30
+ // Simulate form submission
31
+ alert(`感谢您的报名!\n\n姓名: ${name}\n邮箱: ${email}\n感兴趣的主题: ${getInterestText(interest)}\n\n我们将在活动开始前向您发送详细信息。`);
32
+
33
+ // Reset form and close modal
34
+ event.target.reset();
35
+ closeModal();
36
+ }
37
+
38
+ function getInterestText(value) {
39
+ const interests = {
40
+ 'papers': '热门论文盘点',
41
+ 'courses': 'AI 课程共学',
42
+ 'models': '模型能力探索',
43
+ 'anycoder': 'AnyCoder 实战'
44
+ };
45
+ return interests[value] || '';
46
+ }
47
+
48
+ // Download poster function
49
+ function downloadPoster() {
50
+ // In a real implementation, this would generate and download an image
51
+ alert('海报下载功能已触发!\n\n在实际应用中,这里会将海报转换为图片并下载到您的设备。');
52
+
53
+ // Optional: You could use html2canvas library to convert the poster to image
54
+ // Example code (requires html2canvas library):
55
+ // html2canvas(document.querySelector('.poster')).then(canvas => {
56
+ // const link = document.createElement('a');
57
+ // link.download = 'huggingface-guoqing-poster.png';
58
+ // link.href = canvas.toDataURL();
59
+ // link.click();
60
+ // });
61
+ }
62
+
63
+ // Share poster function
64
+ function sharePoster() {
65
+ const shareData = {
66
+ title: 'Hugging Face 国庆 8 日游',
67
+ text: '第三季度热门论文盘点、AI课程共学、模型能力探索,精彩内容不容错过!',
68
+ url: window.location.href
69
+ };
70
+
71
+ // Check if Web Share API is supported
72
+ if (navigator.share) {
73
+ navigator.share(shareData)
74
+ .then(() => console.log('分享成功'))
75
+ .catch((error) => console.log('分享失败', error));
76
+ } else {
77
+ // Fallback: Copy link to clipboard
78
+ navigator.clipboard.writeText(window.location.href)
79
+ .then(() => {
80
+ alert('链接已复制到剪贴板!\n\n您可以将链接分享给朋友。');
81
+ })
82
+ .catch(() => {
83
+ alert('分享链接:\n' + window.location.href);
84
+ });
85
+ }
86
+ }
87
+
88
+ // Add smooth scroll animation for cards
89
+ document.addEventListener('DOMContentLoaded', function() {
90
+ const cards = document.querySelectorAll('.feature-card');
91
+
92
+ const observerOptions = {
93
+ threshold: 0.1,
94
+ rootMargin: '0px 0px -50px 0px'
95
+ };
96
+
97
+ const observer = new IntersectionObserver(function(entries) {
98
+ entries.forEach(entry => {
99
+ if (entry.isIntersecting) {
100
+ entry.target.style.opacity = '0';
101
+ entry.target.style.transform = 'translateY(30px)';
102
+
103
+ setTimeout(() => {
104
+ entry.target.style.transition = 'all 0.6s ease';
105
+ entry.target.style.opacity = '1';
106
+ entry.target.style.transform = 'translateY(0)';
107
+ }, 100);
108
+
109
+ observer.unobserve(entry.target);
110
+ }
111
+ });
112
+ }, observerOptions);
113
+
114
+ cards.forEach(card => {
115
+ observer.observe(card);
116
+ });
117
+ });
118
+
119
+ // Add keyboard navigation
120
+ document.addEventListener('keydown', function(event) {
121
+ const modal = document.getElementById('modal');
122
+
123
+ // Close modal on ESC key
124
+ if (event.key === 'Escape' && modal.style.display === 'block') {
125
+ closeModal();
126
+ }
127
+ });
128
+
129
+ // Add parallax effect to background circles
130
+ window.addEventListener('scroll', function() {
131
+ const circles = document.querySelectorAll('.circle');
132
+ const scrolled = window.pageYOffset;
133
+
134
+ circles.forEach((circle, index) => {
135
+ const speed = 0.5 + (index * 0.2);
136
+ circle.style.transform = `translateY(${scrolled * speed}px)`;
137
+ });
138
+ });
index.html CHANGED
@@ -1,19 +1,159 @@
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
+ <!DOCTYPE html>
2
+ <html lang="zh-CN">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <meta name="description" content="Hugging Face 国庆 8 日游 - 第三季度热门论文盘点、AI课程共学、模型能力探索">
7
+ <title>Hugging Face 国庆 8 日游</title>
8
+ <link rel="stylesheet" href="assets/css/styles.css">
9
+ </head>
10
+ <body>
11
+ <header class="header">
12
+ <a href="https://huggingface.co/spaces/akhaliq/anycoder" target="_blank" class="built-with">Built with anycoder</a>
13
+ </header>
14
+
15
+ <main class="poster-container">
16
+ <div class="poster">
17
+ <!-- Background decoration -->
18
+ <div class="bg-decoration">
19
+ <div class="circle circle-1"></div>
20
+ <div class="circle circle-2"></div>
21
+ <div class="circle circle-3"></div>
22
+ </div>
23
+
24
+ <!-- Header Section -->
25
+ <div class="poster-header">
26
+ <div class="logo-section">
27
+ <div class="hf-logo">🤗</div>
28
+ <h1 class="main-title">Hugging Face</h1>
29
+ </div>
30
+ <h2 class="event-title">国庆 8 日游</h2>
31
+ <div class="date-badge">
32
+ <span class="date-icon">📅</span>
33
+ <span>10月1日 - 10月8日</span>
34
+ </div>
35
+ </div>
36
+
37
+ <!-- Content Grid -->
38
+ <div class="content-grid">
39
+ <!-- Card 1 -->
40
+ <div class="feature-card card-1">
41
+ <div class="card-icon">📚</div>
42
+ <h3 class="card-title">Q3 热门论文盘点</h3>
43
+ <p class="card-description">第三季度各方向热门论文深度解析</p>
44
+ <ul class="card-list">
45
+ <li>LLM 最新突破</li>
46
+ <li>多模态研究进展</li>
47
+ <li>高效训练技术</li>
48
+ </ul>
49
+ </div>
50
+
51
+ <!-- Card 2 -->
52
+ <div class="feature-card card-2">
53
+ <div class="card-icon">🎓</div>
54
+ <h3 class="card-title">AI 课程共学</h3>
55
+ <p class="card-description">多领域课程体系化学习</p>
56
+ <ul class="card-list">
57
+ <li>Agent 智能体开发</li>
58
+ <li>Diffusion 扩散模型</li>
59
+ <li>RL 强化学习</li>
60
+ <li>MCP 协议实践</li>
61
+ </ul>
62
+ </div>
63
+
64
+ <!-- Card 3 -->
65
+ <div class="feature-card card-3">
66
+ <div class="card-icon">🚀</div>
67
+ <h3 class="card-title">模型能力探索</h3>
68
+ <p class="card-description">最新主流模型边界测试</p>
69
+ <ul class="card-list">
70
+ <li>GPT-4 系列评测</li>
71
+ <li>Claude 能力分析</li>
72
+ <li>开源模型对比</li>
73
+ </ul>
74
+ </div>
75
+
76
+ <!-- Card 4 -->
77
+ <div class="feature-card card-4">
78
+ <div class="card-icon">💻</div>
79
+ <h3 class="card-title">AnyCoder 实战</h3>
80
+ <p class="card-description">深入使用 AI 编程助手</p>
81
+ <ul class="card-list">
82
+ <li>代码生成技巧</li>
83
+ <li>项目实战演练</li>
84
+ <li>最佳实践分享</li>
85
+ </ul>
86
+ </div>
87
+ </div>
88
+
89
+ <!-- CTA Section -->
90
+ <div class="cta-section">
91
+ <div class="cta-content">
92
+ <p class="cta-text">🎉 8 天精彩旅程,与 AI 同行</p>
93
+ <button class="cta-button" onclick="showModal()">立即参与</button>
94
+ </div>
95
+ </div>
96
+
97
+ <!-- Footer badges -->
98
+ <div class="poster-footer">
99
+ <div class="badge">免费参与</div>
100
+ <div class="badge">在线直播</div>
101
+ <div class="badge">实战演练</div>
102
+ <div class="badge">社区交流</div>
103
+ </div>
104
+ </div>
105
+
106
+ <!-- Action buttons -->
107
+ <div class="action-buttons">
108
+ <button class="action-btn download-btn" onclick="downloadPoster()">
109
+ <span class="btn-icon">⬇️</span>
110
+ 下载海报
111
+ </button>
112
+ <button class="action-btn share-btn" onclick="sharePoster()">
113
+ <span class="btn-icon">🔗</span>
114
+ 分享海报
115
+ </button>
116
+ </div>
117
+ </main>
118
+
119
+ <!-- Modal -->
120
+ <div id="modal" class="modal">
121
+ <div class="modal-content">
122
+ <span class="close-btn" onclick="closeModal()">&times;</span>
123
+ <h2>🎊 欢迎参与 Hugging Face 国庆 8 日游</h2>
124
+ <p class="modal-description">填写信息加入我们的学习之旅</p>
125
+ <form class="signup-form" onsubmit="handleSubmit(event)">
126
+ <div class="form-group">
127
+ <label for="name">姓名</label>
128
+ <input type="text" id="name" required placeholder="请输入您的姓名">
129
+ </div>
130
+ <div class="form-group">
131
+ <label for="email">邮箱</label>
132
+ <input type="email" id="email" required placeholder="请输入您的邮箱">
133
+ </div>
134
+ <div class="form-group">
135
+ <label for="interest">最感兴趣的主题</label>
136
+ <select id="interest" required>
137
+ <option value="">请选择</option>
138
+ <option value="papers">热门论文盘点</option>
139
+ <option value="courses">AI 课程共学</option>
140
+ <option value="models">模型能力探索</option>
141
+ <option value="anycoder">AnyCoder 实战</option>
142
+ </select>
143
+ </div>
144
+ <button type="submit" class="submit-btn">提交报名</button>
145
+ </form>
146
+ </div>
147
+ </div>
148
+
149
+ <footer class="site-footer">
150
+ <p>&copy; 2024 Hugging Face 国庆 8 日游. All rights reserved.</p>
151
+ <p>
152
+ <a href="https://huggingface.co" target="_blank">Hugging Face</a> |
153
+ <a href="https://huggingface.co/spaces/akhaliq/anycoder" target="_blank">AnyCoder</a>
154
+ </p>
155
+ </footer>
156
+
157
+ <script src="assets/js/script.js"></script>
158
+ </body>
159
+ </html>