diff --git a/src/views/Portfolio.svelte b/src/views/Portfolio.svelte index 5b16012..8291f0c 100644 --- a/src/views/Portfolio.svelte +++ b/src/views/Portfolio.svelte @@ -128,12 +128,28 @@ } }) + // --- Préchargement de tous les médias au premier passage --- + let preloaded = false + + function preloadAll() { + for (const project of projects) { + if (project.mockup) new Image().src = project.mockup + if (project.mockupWebp) new Image().src = project.mockupWebp + if (project.galleryBackgroundImage) new Image().src = project.galleryBackgroundImage + for (const img of (project.imagesGallery ?? [])) { + if (img.src) new Image().src = img.src + if (img.webp) new Image().src = img.webp + } + } + } + // --- Effect: reset when slide deactivated --- // wasActive évite que clearAnchor() s'exécute au montage initial // (isActive est false avant l'initialisation des slides) let wasActive = false $effect(() => { if (isActive) { + if (!preloaded) { preloaded = true; preloadAll() } wasActive = true } else if (wasActive) { nav.reset()