Setsunapux commited on
Commit
291e0ca
·
verified ·
1 Parent(s): ed48040

undefined - Initial Deployment

Browse files
Files changed (2) hide show
  1. README.md +7 -5
  2. index.html +648 -19
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Animaflow
3
- emoji: 📚
4
- colorFrom: blue
5
- colorTo: red
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: animaflow
3
+ emoji: 🐳
4
+ colorFrom: yellow
5
+ colorTo: yellow
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite
10
  ---
11
 
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
index.html CHANGED
@@ -1,19 +1,648 @@
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="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Smooth Animations Showcase</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
+ <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap" rel="stylesheet">
10
+ <script>
11
+ tailwind.config = {
12
+ theme: {
13
+ extend: {
14
+ colors: {
15
+ primary: '#6366f1',
16
+ secondary: '#8b5cf6',
17
+ dark: '#1e293b',
18
+ },
19
+ animation: {
20
+ 'spin-slow': 'spin 3s linear infinite',
21
+ 'bounce-slow': 'bounce 2s infinite',
22
+ 'pulse-slow': 'pulse 3s cubic-bezier(0.4, 0, 0.6, 1) infinite',
23
+ 'float': 'float 6s ease-in-out infinite',
24
+ 'wave': 'wave 1.5s ease-in-out infinite',
25
+ },
26
+ keyframes: {
27
+ float: {
28
+ '0%, 100%': { transform: 'translateY(0)' },
29
+ '50%': { transform: 'translateY(-20px)' },
30
+ },
31
+ wave: {
32
+ '0%, 100%': { transform: 'rotate(0deg)' },
33
+ '25%': { transform: 'rotate(5deg)' },
34
+ '75%': { transform: 'rotate(-5deg)' },
35
+ }
36
+ }
37
+ }
38
+ }
39
+ }
40
+ </script>
41
+ <style>
42
+ * {
43
+ margin: 0;
44
+ padding: 0;
45
+ box-sizing: border-box;
46
+ font-family: 'Poppins', sans-serif;
47
+ }
48
+
49
+ body {
50
+ background: linear-gradient(135deg, #0f172a 0%, #1e293b 100%);
51
+ color: #e2e8f0;
52
+ overflow-x: hidden;
53
+ }
54
+
55
+ .hero-pattern {
56
+ background: radial-gradient(circle at 10% 20%, rgba(99, 102, 241, 0.1) 0%, transparent 20%),
57
+ radial-gradient(circle at 90% 80%, rgba(139, 92, 246, 0.1) 0%, transparent 20%);
58
+ }
59
+
60
+ .card {
61
+ background: rgba(30, 41, 59, 0.7);
62
+ backdrop-filter: blur(10px);
63
+ border: 1px solid rgba(99, 102, 241, 0.2);
64
+ border-radius: 16px;
65
+ transition: all 0.3s ease;
66
+ }
67
+
68
+ .card:hover {
69
+ transform: translateY(-10px);
70
+ box-shadow: 0 20px 25px -5px rgba(99, 102, 241, 0.2), 0 10px 10px -5px rgba(99, 102, 241, 0.1);
71
+ border-color: rgba(99, 102, 241, 0.4);
72
+ }
73
+
74
+ .parallax {
75
+ background-attachment: fixed;
76
+ background-position: center;
77
+ background-repeat: no-repeat;
78
+ background-size: cover;
79
+ }
80
+
81
+ .gradient-text {
82
+ background: linear-gradient(90deg, #6366f1 0%, #8b5cf6 100%);
83
+ -webkit-background-clip: text;
84
+ -webkit-text-fill-color: transparent;
85
+ }
86
+
87
+ .ripple {
88
+ position: relative;
89
+ overflow: hidden;
90
+ }
91
+
92
+ .ripple-effect {
93
+ position: absolute;
94
+ border-radius: 50%;
95
+ background: rgba(255, 255, 255, 0.3);
96
+ transform: scale(0);
97
+ animation: ripple-animation 0.6s linear;
98
+ }
99
+
100
+ @keyframes ripple-animation {
101
+ to {
102
+ transform: scale(4);
103
+ opacity: 0;
104
+ }
105
+ }
106
+
107
+ .typing {
108
+ overflow: hidden;
109
+ border-right: 0.15em solid #6366f1;
110
+ white-space: nowrap;
111
+ animation: typing 3.5s steps(40, end), blink-caret 0.75s step-end infinite;
112
+ }
113
+
114
+ @keyframes typing {
115
+ from { width: 0 }
116
+ to { width: 100% }
117
+ }
118
+
119
+ @keyframes blink-caret {
120
+ from, to { border-color: transparent }
121
+ 50% { border-color: #6366f1 }
122
+ }
123
+
124
+ .path {
125
+ stroke-dasharray: 1000;
126
+ stroke-dashoffset: 1000;
127
+ animation: dash 5s linear forwards infinite;
128
+ }
129
+
130
+ @keyframes dash {
131
+ to {
132
+ stroke-dashoffset: 0;
133
+ }
134
+ }
135
+
136
+ .bounce-ball {
137
+ animation: bounce 2s infinite;
138
+ }
139
+
140
+ @keyframes bounce {
141
+ 0%, 100% {
142
+ transform: translateY(0);
143
+ }
144
+ 50% {
145
+ transform: translateY(-50px);
146
+ }
147
+ }
148
+ </style>
149
+ </head>
150
+ <body>
151
+ <!-- Header -->
152
+ <header class="fixed w-full z-50">
153
+ <nav class="container mx-auto px-6 py-4 flex justify-between items-center">
154
+ <div class="text-2xl font-bold">
155
+ <span class="gradient-text">Anim</span>Magic
156
+ </div>
157
+ <div class="hidden md:flex space-x-8">
158
+ <a href="#home" class="hover:text-primary transition-colors">Home</a>
159
+ <a href="#scroll" class="hover:text-primary transition-colors">Scroll</a>
160
+ <a href="#css" class="hover:text-primary transition-colors">CSS</a>
161
+ <a href="#svg" class="hover:text-primary transition-colors">SVG</a>
162
+ <a href="#micro" class="hover:text-primary transition-colors">Micro</a>
163
+ </div>
164
+ <button class="md:hidden text-xl">
165
+ <i class="fas fa-bars"></i>
166
+ </button>
167
+ </nav>
168
+ </header>
169
+
170
+ <!-- Hero Section -->
171
+ <section id="home" class="min-h-screen flex items-center hero-pattern">
172
+ <div class="container mx-auto px-6 py-20 text-center">
173
+ <h1 class="text-5xl md:text-7xl font-bold mb-6">
174
+ <span class="gradient-text">Smooth Animations</span><br>for Modern Web
175
+ </h1>
176
+ <p class="text-xl max-w-3xl mx-auto mb-10 text-slate-300">
177
+ Enhance user experience with beautiful animations that bring your website to life
178
+ </p>
179
+ <div class="flex justify-center space-x-4">
180
+ <button class="px-8 py-3 bg-primary rounded-full font-semibold ripple hover:bg-indigo-500 transition-colors">
181
+ Explore Animations
182
+ </button>
183
+ <button class="px-8 py-3 bg-transparent border-2 border-primary rounded-full font-semibold hover:bg-primary/20 transition-colors">
184
+ View Examples
185
+ </button>
186
+ </div>
187
+
188
+ <div class="mt-20 flex justify-center">
189
+ <div class="relative w-64 h-64">
190
+ <div class="absolute inset-0 bg-primary/20 rounded-full animate-ping-slow"></div>
191
+ <div class="absolute inset-4 bg-secondary/20 rounded-full animate-ping-slow delay-1000"></div>
192
+ <div class="absolute inset-8 bg-primary/20 rounded-full animate-ping-slow delay-2000"></div>
193
+ <div class="absolute inset-0 flex items-center justify-center">
194
+ <div class="w-32 h-32 bg-gradient-to-br from-primary to-secondary rounded-full flex items-center justify-center animate-float">
195
+ <i class="fas fa-play text-white text-3xl"></i>
196
+ </div>
197
+ </div>
198
+ </div>
199
+ </div>
200
+ </div>
201
+ </section>
202
+
203
+ <!-- Scroll Animations -->
204
+ <section id="scroll" class="py-20">
205
+ <div class="container mx-auto px-6">
206
+ <h2 class="text-4xl font-bold text-center mb-4">Scroll Animations</h2>
207
+ <p class="text-center text-slate-300 max-w-2xl mx-auto mb-16">
208
+ Elements that animate as you scroll down the page
209
+ </p>
210
+
211
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-8">
212
+ <!-- Card 1 -->
213
+ <div class="card p-8 transform transition-all duration-500 opacity-0 translate-y-10" data-scroll>
214
+ <div class="text-5xl text-primary mb-6">
215
+ <i class="fas fa-fade"></i>
216
+ </div>
217
+ <h3 class="text-2xl font-semibold mb-4">Fade In</h3>
218
+ <p class="text-slate-300 mb-4">
219
+ Elements gracefully appear as you scroll down the page
220
+ </p>
221
+ <div class="mt-4 h-2 bg-gradient-to-r from-primary to-secondary rounded-full"></div>
222
+ </div>
223
+
224
+ <!-- Card 2 -->
225
+ <div class="card p-8 transform transition-all duration-500 opacity-0 translate-y-10" data-scroll>
226
+ <div class="text-5xl text-primary mb-6">
227
+ <i class="fas fa-slide"></i>
228
+ </div>
229
+ <h3 class="text-2xl font-semibold mb-4">Slide In</h3>
230
+ <p class="text-slate-300 mb-4">
231
+ Content slides in from different directions
232
+ </p>
233
+ <div class="mt-4 flex space-x-2">
234
+ <div class="h-2 w-8 bg-primary rounded-full animate-bounce-slow"></div>
235
+ <div class="h-2 w-8 bg-secondary rounded-full animate-bounce-slow delay-150"></div>
236
+ <div class="h-2 w-8 bg-primary rounded-full animate-bounce-slow delay-300"></div>
237
+ </div>
238
+ </div>
239
+
240
+ <!-- Card 3 -->
241
+ <div class="card p-8 transform transition-all duration-500 opacity-0 translate-y-10" data-scroll>
242
+ <div class="text-5xl text-primary mb-6">
243
+ <i class="fas fa-expand"></i>
244
+ </div>
245
+ <h3 class="text-2xl font-semibold mb-4">Scale Up</h3>
246
+ <p class="text-slate-300 mb-4">
247
+ Elements grow to their natural size
248
+ </p>
249
+ <div class="mt-4 flex justify-center">
250
+ <div class="w-12 h-12 bg-gradient-to-br from-primary to-secondary rounded-full animate-pulse-slow"></div>
251
+ </div>
252
+ </div>
253
+ </div>
254
+ </div>
255
+ </section>
256
+
257
+ <!-- Parallax Section -->
258
+ <section class="py-32 parallax" style="background-image: url('https://images.unsplash.com/photo-1519681393784-d120267933ba?ixlib=rb-4.0.3&auto=format&fit=crop&w=1950&q=80');">
259
+ <div class="container mx-auto px-6 text-center">
260
+ <h2 class="text-4xl font-bold mb-6">Parallax Scrolling</h2>
261
+ <p class="text-xl max-w-2xl mx-auto mb-10 text-slate-200">
262
+ Background moves at a different speed than foreground content, creating depth illusion
263
+ </p>
264
+ <div class="inline-block px-8 py-4 bg-primary/80 backdrop-blur-sm rounded-full font-semibold">
265
+ Experience the Depth
266
+ </div>
267
+ </div>
268
+ </section>
269
+
270
+ <!-- CSS Animations -->
271
+ <section id="css" class="py-20">
272
+ <div class="container mx-auto px-6">
273
+ <h2 class="text-4xl font-bold text-center mb-4">CSS Animations</h2>
274
+ <p class="text-center text-slate-300 max-w-2xl mx-auto mb-16">
275
+ Smooth transitions and animations using pure CSS
276
+ </p>
277
+
278
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-12">
279
+ <div class="flex flex-col justify-center">
280
+ <h3 class="text-3xl font-semibold mb-6">Hover Effects</h3>
281
+ <p class="text-slate-300 mb-6">
282
+ Enhance interactivity with subtle hover animations that provide visual feedback to users.
283
+ </p>
284
+ <div class="flex space-x-6">
285
+ <div class="group">
286
+ <div class="w-20 h-20 bg-primary rounded-xl flex items-center justify-center group-hover:rotate-12 transition-transform duration-300">
287
+ <i class="fas fa-star text-2xl text-white"></i>
288
+ </div>
289
+ </div>
290
+ <div class="group">
291
+ <div class="w-20 h-20 bg-secondary rounded-xl flex items-center justify-center group-hover:scale-110 transition-transform duration-300">
292
+ <i class="fas fa-heart text-2xl text-white"></i>
293
+ </div>
294
+ </div>
295
+ <div class="group">
296
+ <div class="w-20 h-20 bg-gradient-to-br from-primary to-secondary rounded-xl flex items-center justify-center group-hover:skew-y-3 transition-transform duration-300">
297
+ <i class="fas fa-bolt text-2xl text-white"></i>
298
+ </div>
299
+ </div>
300
+ </div>
301
+ </div>
302
+
303
+ <div>
304
+ <div class="card p-8 h-full">
305
+ <h3 class="text-2xl font-semibold mb-6">Animated Cards</h3>
306
+ <div class="space-y-4">
307
+ <div class="flex items-center p-4 bg-slate-800 rounded-lg hover:bg-slate-700 transition-colors">
308
+ <div class="w-12 h-12 bg-primary rounded-full flex items-center justify-center mr-4">
309
+ <i class="fas fa-cube"></i>
310
+ </div>
311
+ <div>
312
+ <h4 class="font-semibold">3D Transform</h4>
313
+ <p class="text-sm text-slate-300">Rotate elements in 3D space</p>
314
+ </div>
315
+ </div>
316
+
317
+ <div class="flex items-center p-4 bg-slate-800 rounded-lg hover:bg-slate-700 transition-colors">
318
+ <div class="w-12 h-12 bg-secondary rounded-full flex items-center justify-center mr-4">
319
+ <i class="fas fa-move"></i>
320
+ </div>
321
+ <div>
322
+ <h4 class="font-semibold">Smooth Transitions</h4>
323
+ <p class="text-sm text-slate-300">Animate property changes</p>
324
+ </div>
325
+ </div>
326
+
327
+ <div class="flex items-center p-4 bg-slate-800 rounded-lg hover:bg-slate-700 transition-colors">
328
+ <div class="w-12 h-12 bg-gradient-to-br from-primary to-secondary rounded-full flex items-center justify-center mr-4">
329
+ <i class="fas fa-infinity"></i>
330
+ </div>
331
+ <div>
332
+ <h4 class="font-semibold">Keyframe Animations</h4>
333
+ <p class="text-sm text-slate-300">Create complex animation sequences</p>
334
+ </div>
335
+ </div>
336
+ </div>
337
+ </div>
338
+ </div>
339
+ </div>
340
+ </div>
341
+ </section>
342
+
343
+ <!-- SVG Animation -->
344
+ <section id="svg" class="py-20 bg-slate-900/50">
345
+ <div class="container mx-auto px-6">
346
+ <h2 class="text-4xl font-bold text-center mb-4">SVG Animations</h2>
347
+ <p class="text-center text-slate-300 max-w-2xl mx-auto mb-16">
348
+ Scalable vector graphics with smooth animations
349
+ </p>
350
+
351
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-12 items-center">
352
+ <div>
353
+ <svg viewBox="0 0 200 200" class="w-full max-w-md mx-auto">
354
+ <circle cx="100" cy="100" r="80" fill="none" stroke="#6366f1" stroke-width="4" stroke-dasharray="1000" stroke-dashoffset="1000">
355
+ <animate attributeName="stroke-dashoffset" from="1000" to="0" dur="2s" fill="freeze" repeatCount="indefinite" />
356
+ </circle>
357
+
358
+ <path d="M50,100 Q100,20 150,100 T250,100" fill="none" stroke="#8b5cf6" stroke-width="3" stroke-dasharray="1000" stroke-dashoffset="1000" class="path">
359
+ <animate attributeName="stroke-dashoffset" from="1000" to="0" dur="3s" fill="freeze" repeatCount="indefinite" />
360
+ </path>
361
+
362
+ <circle cx="100" cy="100" r="30" fill="#6366f1" opacity="0.7">
363
+ <animate attributeName="r" from="30" to="50" dur="2s" repeatCount="indefinite" />
364
+ <animate attributeName="opacity" from="0.7" to="0.3" dur="2s" repeatCount="indefinite" />
365
+ </circle>
366
+ </svg>
367
+ </div>
368
+
369
+ <div>
370
+ <h3 class="text-3xl font-semibold mb-6">Dynamic SVG Elements</h3>
371
+ <p class="text-slate-300 mb-6">
372
+ SVG animations provide resolution-independent graphics that look crisp on any device. They're perfect for logos, icons, and illustrations.
373
+ </p>
374
+ <ul class="space-y-3">
375
+ <li class="flex items-center">
376
+ <i class="fas fa-check-circle text-primary mr-3"></i>
377
+ <span>Path drawing animations</span>
378
+ </li>
379
+ <li class="flex items-center">
380
+ <i class="fas fa-check-circle text-primary mr-3"></i>
381
+ <span>Morphing between shapes</span>
382
+ </li>
383
+ <li class="flex items-center">
384
+ <i class="fas fa-check-circle text-primary mr-3"></i>
385
+ <span>Transform animations</span>
386
+ </li>
387
+ <li class="flex items-center">
388
+ <i class="fas fa-check-circle text-primary mr-3"></i>
389
+ <span>Stroke and fill animations</span>
390
+ </li>
391
+ </ul>
392
+ </div>
393
+ </div>
394
+ </div>
395
+ </section>
396
+
397
+ <!-- Micro-interactions -->
398
+ <section id="micro" class="py-20">
399
+ <div class="container mx-auto px-6">
400
+ <h2 class="text-4xl font-bold text-center mb-4">Micro-interactions</h2>
401
+ <p class="text-center text-slate-300 max-w-2xl mx-auto mb-16">
402
+ Small animations that respond to user actions
403
+ </p>
404
+
405
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-12">
406
+ <div class="card p-8">
407
+ <h3 class="text-2xl font-semibold mb-6">Like Button</h3>
408
+ <div class="flex justify-center">
409
+ <button id="likeButton" class="w-16 h-16 rounded-full bg-slate-800 flex items-center justify-center group">
410
+ <i class="fas fa-heart text-3xl text-slate-400 group-hover:text-red-500 transition-colors"></i>
411
+ </button>
412
+ </div>
413
+ <p class="text-center mt-6 text-slate-300">Click the heart to see the animation</p>
414
+ </div>
415
+
416
+ <div class="card p-8">
417
+ <h3 class="text-2xl font-semibold mb-6">Ripple Effect</h3>
418
+ <div class="flex justify-center">
419
+ <button id="rippleButton" class="px-8 py-4 bg-primary rounded-full font-semibold ripple">
420
+ Click Me
421
+ </button>
422
+ </div>
423
+ <p class="text-center mt-6 text-slate-300">Creates a water ripple effect on click</p>
424
+ </div>
425
+ </div>
426
+ </div>
427
+ </section>
428
+
429
+ <!-- Loading Animation -->
430
+ <section class="py-20 bg-slate-900/50">
431
+ <div class="container mx-auto px-6 text-center">
432
+ <h2 class="text-4xl font-bold mb-6">Loading Animations</h2>
433
+ <p class="text-xl max-w-2xl mx-auto mb-16 text-slate-300">
434
+ Engaging animations displayed during loading processes
435
+ </p>
436
+
437
+ <div class="flex flex-wrap justify-center gap-8">
438
+ <div class="w-32 h-32 rounded-full border-4 border-t-primary border-r-secondary border-b-secondary border-l-primary animate-spin-slow"></div>
439
+ <div class="flex items-center justify-center space-x-3">
440
+ <div class="w-6 h-6 bg-primary rounded-full animate-bounce-slow"></div>
441
+ <div class="w-6 h-6 bg-secondary rounded-full animate-bounce-slow delay-150"></div>
442
+ <div class="w-6 h-6 bg-primary rounded-full animate-bounce-slow delay-300"></div>
443
+ </div>
444
+ <div class="relative w-32 h-32">
445
+ <div class="absolute inset-0 flex items-center justify-center">
446
+ <div class="w-16 h-16 bg-gradient-to-br from-primary to-secondary rounded-full animate-pulse-slow"></div>
447
+ </div>
448
+ </div>
449
+ </div>
450
+ </div>
451
+ </section>
452
+
453
+ <!-- Canvas Animation -->
454
+ <section class="py-20">
455
+ <div class="container mx-auto px-6">
456
+ <h2 class="text-4xl font-bold text-center mb-4">Canvas Animations</h2>
457
+ <p class="text-center text-slate-300 max-w-2xl mx-auto mb-16">
458
+ Dynamic animations using HTML5 Canvas
459
+ </p>
460
+
461
+ <div class="card p-6">
462
+ <canvas id="animationCanvas" class="w-full h-96 rounded-xl"></canvas>
463
+ </div>
464
+ </div>
465
+ </section>
466
+
467
+ <!-- Footer -->
468
+ <footer class="py-12 border-t border-slate-800">
469
+ <div class="container mx-auto px-6 text-center">
470
+ <div class="text-3xl font-bold mb-6">
471
+ <span class="gradient-text">Anim</span>Magic
472
+ </div>
473
+ <p class="text-slate-400 max-w-2xl mx-auto mb-8">
474
+ Creating beautiful web experiences with smooth animations and interactions
475
+ </p>
476
+ <div class="flex justify-center space-x-6 mb-8">
477
+ <a href="#" class="text-slate-400 hover:text-primary transition-colors">
478
+ <i class="fab fa-twitter text-xl"></i>
479
+ </a>
480
+ <a href="#" class="text-slate-400 hover:text-primary transition-colors">
481
+ <i class="fab fa-github text-xl"></i>
482
+ </a>
483
+ <a href="#" class="text-slate-400 hover:text-primary transition-colors">
484
+ <i class="fab fa-linkedin text-xl"></i>
485
+ </a>
486
+ <a href="#" class="text-slate-400 hover:text-primary transition-colors">
487
+ <i class="fab fa-codepen text-xl"></i>
488
+ </a>
489
+ </div>
490
+ <p class="text-slate-500 text-sm">
491
+ &copy; 2023 AnimMagic. All rights reserved.
492
+ </p>
493
+ </div>
494
+ </footer>
495
+
496
+ <script>
497
+ // Scroll animations
498
+ document.addEventListener('DOMContentLoaded', function() {
499
+ // Scroll animation for cards
500
+ const scrollElements = document.querySelectorAll('[data-scroll]');
501
+
502
+ const elementInView = (el) => {
503
+ const elementTop = el.getBoundingClientRect().top;
504
+ return (
505
+ elementTop <= (window.innerHeight || document.documentElement.clientHeight) * 0.75
506
+ );
507
+ };
508
+
509
+ const displayScrollElement = (element) => {
510
+ element.classList.add('opacity-100', 'translate-y-0');
511
+ };
512
+
513
+ const handleScrollAnimation = () => {
514
+ scrollElements.forEach((el) => {
515
+ if (elementInView(el)) {
516
+ displayScrollElement(el);
517
+ }
518
+ });
519
+ };
520
+
521
+ window.addEventListener('scroll', () => {
522
+ handleScrollAnimation();
523
+ });
524
+
525
+ // Initialize by checking elements on load
526
+ handleScrollAnimation();
527
+
528
+ // Like button animation
529
+ const likeButton = document.getElementById('likeButton');
530
+ likeButton.addEventListener('click', function() {
531
+ this.classList.toggle('text-red-500');
532
+
533
+ // Create animation element
534
+ const heart = document.createElement('div');
535
+ heart.innerHTML = '<i class="fas fa-heart text-red-500"></i>';
536
+ heart.classList.add('absolute', 'text-2xl', 'animate-like');
537
+
538
+ // Position it
539
+ const rect = this.getBoundingClientRect();
540
+ heart.style.left = `${rect.left + rect.width/2}px`;
541
+ heart.style.top = `${rect.top + rect.height/2}px`;
542
+
543
+ document.body.appendChild(heart);
544
+
545
+ // Remove after animation
546
+ setTimeout(() => {
547
+ heart.remove();
548
+ }, 1000);
549
+ });
550
+
551
+ // Ripple effect
552
+ const rippleButton = document.getElementById('rippleButton');
553
+ rippleButton.addEventListener('click', function(e) {
554
+ // Remove any existing ripples
555
+ const existingRipples = document.querySelectorAll('.ripple-effect');
556
+ existingRipples.forEach(ripple => ripple.remove());
557
+
558
+ // Create ripple
559
+ const ripple = document.createElement('span');
560
+ ripple.classList.add('ripple-effect');
561
+
562
+ // Position ripple
563
+ const rect = this.getBoundingClientRect();
564
+ const size = Math.max(rect.width, rect.height);
565
+ ripple.style.width = ripple.style.height = `${size}px`;
566
+ ripple.style.left = `${e.clientX - rect.left - size/2}px`;
567
+ ripple.style.top = `${e.clientY - rect.top - size/2}px`;
568
+
569
+ this.appendChild(ripple);
570
+
571
+ // Remove ripple after animation
572
+ setTimeout(() => {
573
+ ripple.remove();
574
+ }, 600);
575
+ });
576
+
577
+ // Canvas animation
578
+ const canvas = document.getElementById('animationCanvas');
579
+ const ctx = canvas.getContext('2d');
580
+
581
+ // Set canvas size
582
+ canvas.width = canvas.offsetWidth;
583
+ canvas.height = canvas.offsetHeight;
584
+
585
+ // Ball properties
586
+ const balls = [];
587
+ const ballCount = 30;
588
+
589
+ class Ball {
590
+ constructor() {
591
+ this.radius = Math.random() * 20 + 10;
592
+ this.x = Math.random() * (canvas.width - this.radius * 2) + this.radius;
593
+ this.y = Math.random() * (canvas.height - this.radius * 2) + this.radius;
594
+ this.dx = (Math.random() - 0.5) * 4;
595
+ this.dy = (Math.random() - 0.5) * 4;
596
+ this.color = `hsl(${Math.random() * 360}, 70%, 60%)`;
597
+ }
598
+
599
+ draw() {
600
+ ctx.beginPath();
601
+ ctx.arc(this.x, this.y, this.radius, 0, Math.PI * 2);
602
+ ctx.fillStyle = this.color;
603
+ ctx.fill();
604
+ ctx.closePath();
605
+ }
606
+
607
+ update() {
608
+ if (this.x + this.radius > canvas.width || this.x - this.radius < 0) {
609
+ this.dx = -this.dx;
610
+ }
611
+
612
+ if (this.y + this.radius > canvas.height || this.y - this.radius < 0) {
613
+ this.dy = -this.dy;
614
+ }
615
+
616
+ this.x += this.dx;
617
+ this.y += this.dy;
618
+
619
+ this.draw();
620
+ }
621
+ }
622
+
623
+ // Create balls
624
+ for (let i = 0; i < ballCount; i++) {
625
+ balls.push(new Ball());
626
+ }
627
+
628
+ // Animation loop
629
+ function animate() {
630
+ requestAnimationFrame(animate);
631
+ ctx.clearRect(0, 0, canvas.width, canvas.height);
632
+
633
+ balls.forEach(ball => {
634
+ ball.update();
635
+ });
636
+ }
637
+
638
+ animate();
639
+
640
+ // Resize canvas on window resize
641
+ window.addEventListener('resize', () => {
642
+ canvas.width = canvas.offsetWidth;
643
+ canvas.height = canvas.offsetHeight;
644
+ });
645
+ });
646
+ </script>
647
+ <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=Setsunapux/animaflow" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
648
+ </html>