Compare commits
2 commits
09d05f53da
...
01adf70585
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
01adf70585 | ||
|
|
8dcec0e2c7 |
1 changed files with 28 additions and 1 deletions
|
|
@ -33,7 +33,26 @@
|
|||
const wrapperWidth = $derived(`${slides.all.length * 100}vw`)
|
||||
const wrapperTransform = $derived(`translateX(-${slides.activeIndex * 100}vw)`)
|
||||
|
||||
let isReady = $state(false)
|
||||
let isResizing = $state(false)
|
||||
let resizeTimer = null
|
||||
|
||||
// Active la transition seulement après le premier paint à la bonne position.
|
||||
// Sans ça, un chargement sur /expertise slide depuis l'accueil.
|
||||
$effect(() => {
|
||||
if (slides.all.length > 0 && !isReady) {
|
||||
requestAnimationFrame(() => { isReady = true })
|
||||
}
|
||||
})
|
||||
|
||||
onMount(() => {
|
||||
const handleResize = () => {
|
||||
isResizing = true
|
||||
clearTimeout(resizeTimer)
|
||||
resizeTimer = setTimeout(() => { isResizing = false }, 150)
|
||||
}
|
||||
window.addEventListener('resize', handleResize)
|
||||
|
||||
const handleKeydown = (e) => {
|
||||
if (e.key === 'ArrowRight') {
|
||||
const next = slides.all[slides.activeIndex + 1]
|
||||
|
|
@ -44,7 +63,11 @@
|
|||
}
|
||||
}
|
||||
window.addEventListener('keydown', handleKeydown)
|
||||
return () => window.removeEventListener('keydown', handleKeydown)
|
||||
return () => {
|
||||
window.removeEventListener('resize', handleResize)
|
||||
window.removeEventListener('keydown', handleKeydown)
|
||||
clearTimeout(resizeTimer)
|
||||
}
|
||||
})
|
||||
</script>
|
||||
|
||||
|
|
@ -54,6 +77,7 @@
|
|||
<main class="main">
|
||||
<div
|
||||
class="slides-wrapper"
|
||||
class:is-animated={isReady && !isResizing}
|
||||
style="width: {wrapperWidth}; transform: {wrapperTransform}"
|
||||
>
|
||||
{#each slides.all as slide}
|
||||
|
|
@ -106,6 +130,9 @@
|
|||
.slides-wrapper {
|
||||
display: flex;
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.slides-wrapper.is-animated {
|
||||
transition: transform 1000ms cubic-bezier(0.77, 0, 0.175, 1);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue