awacke1 commited on
Commit
025a46c
·
verified ·
1 Parent(s): 56aece3

Create index.html

Browse files
Files changed (1) hide show
  1. index.html +229 -0
index.html ADDED
@@ -0,0 +1,229 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <style>
5
+ .scene-container {
6
+ width: 100%;
7
+ height: 800px;
8
+ background: linear-gradient(#1B4B8A, #3A6FB0 40%, #87CEEB 70%);
9
+ position: relative;
10
+ overflow: hidden;
11
+ }
12
+
13
+ :root {
14
+ --water-blue-1: rgba(173, 216, 230, 0.7);
15
+ --water-blue-2: rgba(135, 206, 235, 0.6);
16
+ --water-white-1: rgba(255, 255, 255, 0.5);
17
+ --water-white-2: rgba(240, 248, 255, 0.4);
18
+ }
19
+
20
+ .waterfall-container {
21
+ position: absolute;
22
+ left: 350px;
23
+ top: 50px; /* Start higher */
24
+ width: 200px; /* Wider waterfall */
25
+ height: 450px; /* Taller to reach river */
26
+ overflow: visible;
27
+ }
28
+
29
+ .river-container {
30
+ position: absolute;
31
+ bottom: 0; /* Extend to bottom */
32
+ left: -20%; /* Start before screen */
33
+ width: 140%; /* Extend beyond screen */
34
+ height: 200px; /* Taller river */
35
+ transform: perspective(1000px) rotateX(30deg);
36
+ transform-origin: bottom;
37
+ overflow: visible;
38
+ }
39
+
40
+ .impact-zone {
41
+ position: absolute;
42
+ left: 330px;
43
+ bottom: 180px;
44
+ width: 240px; /* Wider impact */
45
+ height: 120px;
46
+ overflow: visible;
47
+ }
48
+
49
+ .water-shape {
50
+ position: absolute;
51
+ border-radius: 50%;
52
+ opacity: 0;
53
+ }
54
+
55
+ .waterfall-drop {
56
+ animation: waterfall-fall var(--fall-duration, 2.5s) linear infinite;
57
+ }
58
+
59
+ .impact-splash {
60
+ animation: splash var(--splash-duration, 1.5s) ease-out infinite;
61
+ }
62
+
63
+ .river-swirl {
64
+ animation: river-flow var(--flow-duration, 8s) linear infinite;
65
+ }
66
+
67
+ @keyframes waterfall-fall {
68
+ 0% {
69
+ transform: translate(var(--start-x, 0), -20%) scale(1);
70
+ opacity: 0;
71
+ }
72
+ 5% { opacity: var(--opacity, 0.6); }
73
+ 95% { opacity: var(--opacity, 0.6); }
74
+ 100% {
75
+ transform: translate(var(--end-x, 0), 120%) scale(var(--end-scale, 0.8));
76
+ opacity: 0;
77
+ }
78
+ }
79
+
80
+ @keyframes splash {
81
+ 0% {
82
+ transform: translate(var(--start-x, 0), 0) scale(0.2);
83
+ opacity: 0;
84
+ }
85
+ 20% {
86
+ opacity: var(--opacity, 0.6);
87
+ transform: translate(var(--end-x, 0), var(--y-offset, 0)) scale(1);
88
+ }
89
+ 100% {
90
+ transform: translate(var(--final-x, 0), var(--final-y, 0)) scale(2);
91
+ opacity: 0;
92
+ }
93
+ }
94
+
95
+ @keyframes river-flow {
96
+ 0% {
97
+ transform: translate(-20%, var(--y-pos, 0)) rotate(0deg);
98
+ opacity: 0;
99
+ }
100
+ 5% { opacity: var(--opacity, 0.6); }
101
+ 95% { opacity: var(--opacity, 0.6); }
102
+ 100% {
103
+ transform: translate(120%, var(--y-pos, 0)) rotate(360deg);
104
+ opacity: 0;
105
+ }
106
+ }
107
+
108
+ /* Climbers remain the same */
109
+ .climber {
110
+ position: absolute;
111
+ width: 40px;
112
+ height: 60px;
113
+ animation: bounce 1.2s infinite ease-in-out;
114
+ }
115
+
116
+ @keyframes bounce {
117
+ 0%, 100% { transform: translateY(0); }
118
+ 50% { transform: translateY(-20px); }
119
+ }
120
+
121
+ .climber1 { left: 300px; top: 200px; animation-delay: -0.2s; }
122
+ .climber2 { left: 500px; top: 180px; animation-delay: -0.5s; }
123
+ .climber3 { left: 700px; top: 220px; animation-delay: -0.8s; }
124
+ </style>
125
+ </head>
126
+ <body>
127
+ <div class="scene-container">
128
+ <!-- Background cliffs -->
129
+ <svg width="100%" height="100%" viewBox="0 0 1200 800">
130
+ <path d="M0,300 L200,100 L300,250 L400,80 L500,220 L600,100 L700,240 L800,120 L1000,280 L1200,150 L1200,800 L0,800 Z"
131
+ fill="#8B4513"/>
132
+ </svg>
133
+
134
+ <!-- Climbers remain the same -->
135
+ <svg class="climber climber1" viewBox="0 0 40 60">
136
+ <path d="M20,10 L20,35 M15,20 L25,20 M20,35 L15,50 M20,35 L25,50"
137
+ stroke="#333" stroke-width="3" stroke-linecap="round"/>
138
+ <circle cx="20" cy="8" r="6" fill="#ff4444"/>
139
+ </svg>
140
+ <svg class="climber climber2" viewBox="0 0 40 60">
141
+ <path d="M20,10 L20,35 M15,20 L25,20 M20,35 L15,50 M20,35 L25,50"
142
+ stroke="#333" stroke-width="3" stroke-linecap="round"/>
143
+ <circle cx="20" cy="8" r="6" fill="#4444ff"/>
144
+ </svg>
145
+ <svg class="climber climber3" viewBox="0 0 40 60">
146
+ <path d="M20,10 L20,35 M15,20 L25,20 M20,35 L15,50 M20,35 L25,50"
147
+ stroke="#333" stroke-width="3" stroke-linecap="round"/>
148
+ <circle cx="20" cy="8" r="6" fill="#44ff44"/>
149
+ </svg>
150
+
151
+ <div class="waterfall-container"></div>
152
+ <div class="impact-zone"></div>
153
+ <div class="river-container"></div>
154
+
155
+ <script>
156
+ function createWaterSystem() {
157
+ const waterfall = document.querySelector('.waterfall-container');
158
+ const impactZone = document.querySelector('.impact-zone');
159
+ const river = document.querySelector('.river-container');
160
+
161
+ function createWaterfallDrop() {
162
+ const drop = document.createElement('div');
163
+ drop.className = 'water-shape waterfall-drop';
164
+ const size = 20 + Math.random() * 60; // Larger drops
165
+ drop.style.cssText = `
166
+ width: ${size}px;
167
+ height: ${size}px;
168
+ background: var(--water-${Math.random() > 0.5 ? 'blue' : 'white'}-${Math.random() > 0.5 ? '1' : '2'});
169
+ left: ${Math.random() * 100}%;
170
+ --fall-duration: ${2 + Math.random()}s;
171
+ --opacity: ${0.4 + Math.random() * 0.3};
172
+ --start-x: ${-20 + Math.random() * 40}px;
173
+ --end-x: ${-40 + Math.random() * 80}px;
174
+ --end-scale: ${0.8 + Math.random() * 0.4};
175
+ filter: blur(${2 + Math.random() * 3}px);
176
+ `;
177
+ waterfall.appendChild(drop);
178
+ setTimeout(() => drop.remove(), 3000);
179
+ }
180
+
181
+ function createSplash() {
182
+ const splash = document.createElement('div');
183
+ splash.className = 'water-shape impact-splash';
184
+ const size = 30 + Math.random() * 80; // Larger splashes
185
+ splash.style.cssText = `
186
+ width: ${size}px;
187
+ height: ${size}px;
188
+ background: var(--water-${Math.random() > 0.5 ? 'blue' : 'white'}-${Math.random() > 0.5 ? '1' : '2'});
189
+ left: ${Math.random() * 100}%;
190
+ --splash-duration: ${1.2 + Math.random() * 0.6}s;
191
+ --opacity: ${0.3 + Math.random() * 0.4};
192
+ --y-offset: ${-20 - Math.random() * 40}px;
193
+ --final-y: ${-40 - Math.random() * 60}px;
194
+ --final-x: ${-60 + Math.random() * 120}px;
195
+ filter: blur(${3 + Math.random() * 3}px);
196
+ `;
197
+ impactZone.appendChild(splash);
198
+ setTimeout(() => splash.remove(), 2000);
199
+ }
200
+
201
+ function createRiverSwirl() {
202
+ const swirl = document.createElement('div');
203
+ swirl.className = 'water-shape river-swirl';
204
+ const size = 40 + Math.random() * 100; // Larger swirls
205
+ swirl.style.cssText = `
206
+ width: ${size}px;
207
+ height: ${size}px;
208
+ background: var(--water-${Math.random() > 0.5 ? 'blue' : 'white'}-${Math.random() > 0.5 ? '1' : '2'});
209
+ top: ${Math.random() * 100}%;
210
+ --flow-duration: ${6 + Math.random() * 4}s;
211
+ --opacity: ${0.3 + Math.random() * 0.4};
212
+ --y-pos: ${-40 + Math.random() * 80}px;
213
+ filter: blur(${2 + Math.random() * 4}px);
214
+ `;
215
+ river.appendChild(swirl);
216
+ setTimeout(() => swirl.remove(), 8000);
217
+ }
218
+
219
+ // Generate more frequent water elements
220
+ setInterval(createWaterfallDrop, 50); // More frequent drops
221
+ setInterval(createSplash, 100); // More frequent splashes
222
+ setInterval(createRiverSwirl, 100); // More frequent swirls
223
+ }
224
+
225
+ createWaterSystem();
226
+ </script>
227
+ </div>
228
+ </body>
229
+ </html>