Spaces:
Sleeping
Sleeping
fix(mosaic): gate animations behind animationReady, remove loading=lazy
Browse files- Animation classes only applied after height measurement completes
- Removed loading="lazy" so images load eagerly for accurate scrollHeight
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
frontend/src/lib/Mosaic.svelte
CHANGED
|
@@ -160,8 +160,8 @@
|
|
| 160 |
{#each columns as colStories, colIdx}
|
| 161 |
<div
|
| 162 |
class="mosaic-column"
|
| 163 |
-
class:scroll-up={colIdx % 2 === 0}
|
| 164 |
-
class:scroll-down={colIdx % 2 === 1}
|
| 165 |
class:paused={pausedColumn === colIdx}
|
| 166 |
style="--scroll-duration: {columnDurations[colIdx] || 30}s;"
|
| 167 |
>
|
|
@@ -172,7 +172,7 @@
|
|
| 172 |
onmouseenter={(e) => handleMouseEnter(story, colIdx, e)}
|
| 173 |
onmouseleave={handleMouseLeave}
|
| 174 |
>
|
| 175 |
-
<img src={story.poster} alt={story.name}
|
| 176 |
</div>
|
| 177 |
{/each}
|
| 178 |
<!-- Duplicate for seamless loop -->
|
|
@@ -182,7 +182,7 @@
|
|
| 182 |
onmouseenter={(e) => handleMouseEnter(story, colIdx, e)}
|
| 183 |
onmouseleave={handleMouseLeave}
|
| 184 |
>
|
| 185 |
-
<img src={story.poster} alt={story.name}
|
| 186 |
</div>
|
| 187 |
{/each}
|
| 188 |
</div>
|
|
|
|
| 160 |
{#each columns as colStories, colIdx}
|
| 161 |
<div
|
| 162 |
class="mosaic-column"
|
| 163 |
+
class:scroll-up={animationReady && colIdx % 2 === 0}
|
| 164 |
+
class:scroll-down={animationReady && colIdx % 2 === 1}
|
| 165 |
class:paused={pausedColumn === colIdx}
|
| 166 |
style="--scroll-duration: {columnDurations[colIdx] || 30}s;"
|
| 167 |
>
|
|
|
|
| 172 |
onmouseenter={(e) => handleMouseEnter(story, colIdx, e)}
|
| 173 |
onmouseleave={handleMouseLeave}
|
| 174 |
>
|
| 175 |
+
<img src={story.poster} alt={story.name} />
|
| 176 |
</div>
|
| 177 |
{/each}
|
| 178 |
<!-- Duplicate for seamless loop -->
|
|
|
|
| 182 |
onmouseenter={(e) => handleMouseEnter(story, colIdx, e)}
|
| 183 |
onmouseleave={handleMouseLeave}
|
| 184 |
>
|
| 185 |
+
<img src={story.poster} alt={story.name} />
|
| 186 |
</div>
|
| 187 |
{/each}
|
| 188 |
</div>
|