awacke1 commited on
Commit
53f053f
·
verified ·
1 Parent(s): 753d71d

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +160 -148
index.html CHANGED
@@ -17,195 +17,207 @@
17
  overflow: hidden;
18
  }
19
 
20
- /* Enhanced waterfall effects */
21
  .waterfall-container {
22
  position: absolute;
23
  left: 400px;
24
  top: 200px;
25
- width: 80px;
26
  height: 300px;
27
- overflow: hidden;
28
- filter: blur(1px);
29
  }
30
 
31
- .waterfall-stream {
 
32
  position: absolute;
 
33
  width: 100%;
34
- height: 400%;
35
- background: repeating-linear-gradient(
36
- 180deg,
37
- rgba(255, 255, 255, 0.8) 0%,
38
- rgba(255, 255, 255, 0.2) 15%,
39
- rgba(173, 216, 230, 0.4) 25%,
40
- rgba(173, 216, 230, 0.6) 35%,
41
- rgba(173, 216, 230, 0.8) 45%,
42
- rgba(173, 216, 230, 0.6) 55%,
43
- rgba(173, 216, 230, 0.4) 65%,
44
- rgba(255, 255, 255, 0.2) 85%,
45
- rgba(255, 255, 255, 0.8) 100%
46
- );
47
- animation: waterfall 4s linear infinite;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  }
49
 
50
  /* Mist effect */
51
  .mist {
52
  position: absolute;
53
- width: 120px;
54
- height: 60px;
55
- left: 380px;
56
  bottom: 160px;
57
  background: radial-gradient(
58
  ellipse at center,
59
- rgba(255, 255, 255, 0.6) 0%,
60
  rgba(255, 255, 255, 0.3) 40%,
61
  rgba(255, 255, 255, 0) 70%
62
  );
63
- filter: blur(3px);
64
- animation: mist 3s ease-in-out infinite alternate;
65
  }
66
 
67
- /* Enhanced river with realistic flow */
68
- .river {
69
- position: absolute;
70
- width: 100%;
71
- height: 120px;
72
- bottom: 100px;
73
- background:
74
- linear-gradient(
75
- 90deg,
76
- rgba(173, 216, 230, 0.8),
77
- rgba(135, 206, 235, 0.9),
78
- rgba(173, 216, 230, 0.8)
79
- ),
80
- url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100" viewBox="0 0 100 100"><path d="M0,50 Q25,40 50,50 T100,50" fill="none" stroke="rgba(255,255,255,0.2)" stroke-width="2"/></svg>');
81
- background-size: 200% 100%, 100px 100px;
82
- animation: riverFlow 8s linear infinite;
83
- transform: perspective(500px) rotateX(30deg);
84
- transform-origin: bottom;
85
  }
86
 
87
- /* Detailed climber with gear */
88
- .climber {
89
  position: absolute;
90
- width: 40px;
91
- height: 60px;
92
- filter: drop-shadow(2px 2px 2px rgba(0,0,0,0.3));
93
- }
94
-
95
- @keyframes waterfall {
96
- 0% { transform: translateY(-75%); }
97
- 100% { transform: translateY(0%); }
98
- }
99
-
100
- @keyframes riverFlow {
101
- 0% { background-position: 0% 0%, 0 0; }
102
- 100% { background-position: 200% 0%, 100px 0; }
103
- }
104
-
105
- @keyframes mist {
106
- 0% { opacity: 0.4; transform: translateY(0); }
107
- 100% { opacity: 0.7; transform: translateY(-10px); }
108
- }
109
-
110
- @keyframes climb {
111
- 0% { transform: translate(0, 0) rotate(var(--rotation, 0deg)); }
112
- 25% { transform: translate(30px, -45px) rotate(var(--rotation, 5deg)); }
113
- 50% { transform: translate(60px, -90px) rotate(var(--rotation, -5deg)); }
114
- 75% { transform: translate(90px, -135px) rotate(var(--rotation, 5deg)); }
115
- 100% { transform: translate(120px, -180px) rotate(var(--rotation, 0deg)); }
116
  }
117
-
118
- .climber1 { left: 300px; top: 500px; animation: climb 8s infinite alternate; --rotation: 0deg; }
119
- .climber2 { left: 500px; top: 450px; animation: climb 8s infinite alternate; animation-delay: -2s; --rotation: 5deg; }
120
- .climber3 { left: 700px; top: 480px; animation: climb 8s infinite alternate; animation-delay: -4s; --rotation: -5deg; }
121
  </style>
122
  </head>
123
  <body>
124
  <div class="scene-container">
125
- <!-- Base landscape -->
126
  <svg width="100%" height="100%" viewBox="0 0 1200 800" preserveAspectRatio="xMidYMid slice">
127
- <!-- Complex cliff texture with multiple layers -->
128
  <defs>
129
- <linearGradient id="rockGradient" x1="0%" y1="0%" x2="0%" y2="100%">
130
- <stop offset="0%" style="stop-color:#8B4513"/>
131
- <stop offset="25%" style="stop-color:#A0522D"/>
132
- <stop offset="50%" style="stop-color:#8B4513"/>
133
- <stop offset="75%" style="stop-color:#6B4423"/>
134
- <stop offset="100%" style="stop-color:#593122"/>
135
  </linearGradient>
136
- <filter id="rockTexture">
137
- <feTurbulence type="fractalNoise" baseFrequency="0.05" numOctaves="5"/>
138
- <feDisplacementMap in="SourceGraphic" scale="20"/>
 
 
139
  </filter>
 
 
 
 
 
 
 
 
 
 
 
140
  </defs>
141
 
142
- <!-- Main cliff face -->
143
- <path d="M0,200 Q300,100 600,250 T1200,200 V800 H0 Z"
144
- fill="url(#rockGradient)"
145
- filter="url(#rockTexture)"/>
146
-
147
- <!-- Detailed rock formations -->
148
- <g transform="translate(0,100)" opacity="0.9">
149
- <path d="M0,300 Q200,250 400,300 T800,280 T1200,300 V800 H0 Z"
150
- fill="#8B4513" filter="url(#rockTexture)"/>
151
- <path d="M0,400 Q200,350 400,400 T800,380 T1200,400 V800 H0 Z"
152
- fill="#A0522D" filter="url(#rockTexture)"/>
 
 
 
 
153
  </g>
154
- </svg>
155
 
156
- <!-- Water effects -->
157
- <div class="waterfall-container">
158
- <div class="waterfall-stream"></div>
159
- </div>
160
- <div class="mist"></div>
161
- <div class="river"></div>
162
-
163
- <!-- Detailed climbers -->
164
- <svg class="climber climber1" viewBox="0 0 40 60">
165
- <!-- Body -->
166
- <path d="M20,10 L20,35 M15,20 L25,20 M20,35 L15,50 M20,35 L25,50"
167
- stroke="#333" stroke-width="3" stroke-linecap="round"/>
168
- <!-- Climbing gear -->
169
- <path d="M15,25 L25,25 M18,30 L22,30"
170
- stroke="#666" stroke-width="2"/>
171
- <!-- Helmet -->
172
- <path d="M15,8 Q20,5 25,8 Q25,12 20,12 Q15,12 15,8"
173
- fill="#ff4444"/>
174
- <!-- Harness -->
175
- <path d="M18,32 Q20,30 22,32"
176
- stroke="#888" stroke-width="2" fill="none"/>
177
- <!-- Rope -->
178
- <path d="M20,32 C30,32 30,0 20,0"
179
- stroke="#eee" stroke-width="1" fill="none"/>
180
  </svg>
181
 
182
- <svg class="climber climber2" viewBox="0 0 40 60">
183
- <!-- Similar detailed climber structure with different colors -->
184
- <path d="M20,10 L20,35 M15,20 L25,20 M20,35 L15,50 M20,35 L25,50"
185
- stroke="#333" stroke-width="3" stroke-linecap="round"/>
186
- <path d="M15,25 L25,25 M18,30 L22,30"
187
- stroke="#666" stroke-width="2"/>
188
- <path d="M15,8 Q20,5 25,8 Q25,12 20,12 Q15,12 15,8"
189
- fill="#4444ff"/>
190
- <path d="M18,32 Q20,30 22,32"
191
- stroke="#888" stroke-width="2" fill="none"/>
192
- <path d="M20,32 C30,32 30,0 20,0"
193
- stroke="#eee" stroke-width="1" fill="none"/>
194
- </svg>
 
 
 
 
 
 
 
 
 
 
195
 
196
- <svg class="climber climber3" viewBox="0 0 40 60">
197
- <!-- Similar detailed climber structure with different colors -->
198
- <path d="M20,10 L20,35 M15,20 L25,20 M20,35 L15,50 M20,35 L25,50"
199
- stroke="#333" stroke-width="3" stroke-linecap="round"/>
200
- <path d="M15,25 L25,25 M18,30 L22,30"
201
- stroke="#666" stroke-width="2"/>
202
- <path d="M15,8 Q20,5 25,8 Q25,12 20,12 Q15,12 15,8"
203
- fill="#44ff44"/>
204
- <path d="M18,32 Q20,30 22,32"
205
- stroke="#888" stroke-width="2" fill="none"/>
206
- <path d="M20,32 C30,32 30,0 20,0"
207
- stroke="#eee" stroke-width="1" fill="none"/>
208
- </svg>
 
 
 
 
 
 
 
 
 
 
 
 
 
209
  </div>
210
  </body>
211
  </html>
 
17
  overflow: hidden;
18
  }
19
 
20
+ /* Waterfall base styles */
21
  .waterfall-container {
22
  position: absolute;
23
  left: 400px;
24
  top: 200px;
25
+ width: 120px;
26
  height: 300px;
27
+ overflow: visible;
 
28
  }
29
 
30
+ /* River container */
31
+ .river-container {
32
  position: absolute;
33
+ bottom: 100px;
34
  width: 100%;
35
+ height: 150px;
36
+ overflow: hidden;
37
+ transform: perspective(1000px) rotateX(30deg);
38
+ transform-origin: bottom;
39
+ }
40
+
41
+ /* Particle animations */
42
+ @keyframes particleFlow {
43
+ 0% {
44
+ transform: translate3d(0, -100%, 0) rotate(0deg);
45
+ opacity: 0;
46
+ }
47
+ 10% { opacity: 1; }
48
+ 90% { opacity: 1; }
49
+ 100% {
50
+ transform: translate3d(var(--translateX, 0), 100%, var(--translateZ, 0)) rotate(360deg);
51
+ opacity: 0;
52
+ }
53
+ }
54
+
55
+ @keyframes whitewaterFloat {
56
+ 0% {
57
+ transform: translate3d(-100%, 0, 0);
58
+ opacity: 0;
59
+ }
60
+ 10% { opacity: 1; }
61
+ 90% { opacity: 1; }
62
+ 100% {
63
+ transform: translate3d(100%, 0, 0);
64
+ opacity: 0;
65
+ }
66
  }
67
 
68
  /* Mist effect */
69
  .mist {
70
  position: absolute;
71
+ width: 200px;
72
+ height: 100px;
73
+ left: 360px;
74
  bottom: 160px;
75
  background: radial-gradient(
76
  ellipse at center,
77
+ rgba(255, 255, 255, 0.7) 0%,
78
  rgba(255, 255, 255, 0.3) 40%,
79
  rgba(255, 255, 255, 0) 70%
80
  );
81
+ filter: blur(4px);
82
+ animation: mistPulse 4s ease-in-out infinite alternate;
83
  }
84
 
85
+ @keyframes mistPulse {
86
+ 0% {
87
+ opacity: 0.4;
88
+ transform: translate(0, 0) scale(1);
89
+ }
90
+ 100% {
91
+ opacity: 0.7;
92
+ transform: translate(-10px, -15px) scale(1.1);
93
+ }
 
 
 
 
 
 
 
 
 
94
  }
95
 
96
+ .splash {
 
97
  position: absolute;
98
+ bottom: 250px;
99
+ left: 380px;
100
+ width: 160px;
101
+ height: 40px;
102
+ filter: blur(2px);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
103
  }
 
 
 
 
104
  </style>
105
  </head>
106
  <body>
107
  <div class="scene-container">
108
+ <!-- Main waterfall and river SVG -->
109
  <svg width="100%" height="100%" viewBox="0 0 1200 800" preserveAspectRatio="xMidYMid slice">
 
110
  <defs>
111
+ <!-- Gradients -->
112
+ <linearGradient id="waterGradient" x1="0%" y1="0%" x2="100%" y2="0%">
113
+ <stop offset="0%" style="stop-color:rgba(173,216,230,0.9)"/>
114
+ <stop offset="50%" style="stop-color:rgba(135,206,235,0.8)"/>
115
+ <stop offset="100%" style="stop-color:rgba(173,216,230,0.9)"/>
 
116
  </linearGradient>
117
+
118
+ <!-- Filters -->
119
+ <filter id="waterBlur" x="-50%" y="-50%" width="200%" height="200%">
120
+ <feGaussianBlur in="SourceGraphic" stdDeviation="3"/>
121
+ <feColorMatrix type="matrix" values="1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 0.8 0"/>
122
  </filter>
123
+
124
+ <!-- Curved path for waterfall -->
125
+ <path id="waterfallPath" d="M0,0 C20,-10 40,10 60,0 S80,-10 100,0" />
126
+
127
+ <!-- River flow path -->
128
+ <path id="riverFlowPath" d="M0,50 C200,20 400,80 600,50 S800,20 1000,50 S1200,80 1400,50" />
129
+
130
+ <!-- Animation paths -->
131
+ <animateMotion id="flowAnimation" dur="3s" repeatCount="indefinite">
132
+ <mpath href="#riverFlowPath"/>
133
+ </animateMotion>
134
  </defs>
135
 
136
+ <!-- Layered waterfall -->
137
+ <g class="waterfall">
138
+ <!-- Base water column -->
139
+ <use href="#waterfallPath" stroke="rgba(173,216,230,0.8)" stroke-width="80" filter="url(#waterBlur)">
140
+ <animate attributeName="d"
141
+ dur="2s"
142
+ repeatCount="indefinite"
143
+ values="M0,0 C20,-10 40,10 60,0 S80,-10 100,0;
144
+ M0,0 C20,10 40,-10 60,0 S80,10 100,0;
145
+ M0,0 C20,-10 40,10 60,0 S80,-10 100,0"/>
146
+ </use>
147
+
148
+ <!-- Transparent overlays for depth -->
149
+ <use href="#waterfallPath" stroke="rgba(255,255,255,0.4)" stroke-width="60" filter="url(#waterBlur)"/>
150
+ <use href="#waterfallPath" stroke="rgba(173,216,230,0.6)" stroke-width="40" filter="url(#waterBlur)"/>
151
  </g>
 
152
 
153
+ <!-- River with whitewater -->
154
+ <g class="river" transform="translate(0,600)">
155
+ <!-- Base river flow -->
156
+ <use href="#riverFlowPath" stroke="url(#waterGradient)" stroke-width="150" filter="url(#waterBlur)"/>
157
+
158
+ <!-- Whitewater patterns -->
159
+ <g class="whitewater">
160
+ <circle r="5" fill="rgba(255,255,255,0.6)" filter="url(#waterBlur)">
161
+ <animateMotion dur="4s" repeatCount="indefinite">
162
+ <mpath href="#riverFlowPath"/>
163
+ </animateMotion>
164
+ </circle>
165
+ <!-- Multiple whitewater particles with varying speeds and opacities -->
166
+ <!-- Generated dynamically via JavaScript -->
167
+ </g>
168
+ </g>
 
 
 
 
 
 
 
 
169
  </svg>
170
 
171
+ <!-- Dynamic particle system -->
172
+ <script>
173
+ function createWaterParticles() {
174
+ const waterfall = document.querySelector('.waterfall-container');
175
+ const river = document.querySelector('.river-container');
176
+
177
+ // Create waterfall particles
178
+ for (let i = 0; i < 50; i++) {
179
+ const particle = document.createElement('div');
180
+ particle.className = 'water-particle';
181
+ particle.style.cssText = `
182
+ position: absolute;
183
+ width: ${2 + Math.random() * 4}px;
184
+ height: ${2 + Math.random() * 4}px;
185
+ background: rgba(255, 255, 255, ${0.3 + Math.random() * 0.4});
186
+ border-radius: 50%;
187
+ left: ${Math.random() * 100}%;
188
+ animation: particleFlow ${2 + Math.random() * 2}s linear infinite;
189
+ animation-delay: ${Math.random() * 2}s;
190
+ filter: blur(1px);
191
+ `;
192
+ waterfall.appendChild(particle);
193
+ }
194
 
195
+ // Create river whitewater
196
+ for (let i = 0; i < 30; i++) {
197
+ const foam = document.createElement('div');
198
+ foam.className = 'whitewater-particle';
199
+ foam.style.cssText = `
200
+ position: absolute;
201
+ width: ${5 + Math.random() * 10}px;
202
+ height: ${5 + Math.random() * 10}px;
203
+ background: rgba(255, 255, 255, ${0.4 + Math.random() * 0.3});
204
+ border-radius: 50%;
205
+ top: ${Math.random() * 100}%;
206
+ animation: whitewaterFloat ${5 + Math.random() * 5}s linear infinite;
207
+ animation-delay: ${Math.random() * 5}s;
208
+ filter: blur(2px);
209
+ `;
210
+ river.appendChild(foam);
211
+ }
212
+ }
213
+
214
+ // Initialize particle systems
215
+ createWaterParticles();
216
+ </script>
217
+
218
+ <!-- Mist and splash effects -->
219
+ <div class="mist"></div>
220
+ <div class="splash"></div>
221
  </div>
222
  </body>
223
  </html>