diff --git a/test_anim/NOTES.md b/test_anim/NOTES.md new file mode 100644 index 0000000..39807c4 --- /dev/null +++ b/test_anim/NOTES.md @@ -0,0 +1,50 @@ +# Animation Galerie d'Images + +## Fichiers + +- `style.css` : CSS de l'animation (à intégrer dans le projet Kirby) +- `index.html` : Page de test +- `images/` : Images de test + +## Usage + +```html + +``` + +### Variables CSS + +```css +.gallery-animation { + --animation-duration: 30s; /* Durée de l'animation */ + --gap: 1rem; /* Espacement entre colonnes/rangées */ +} +``` + +### Structure HTML + +**Mode vertical** (3 colonnes) : +```html + +``` + +**Mode horizontal** (3 rangées) : remplacer `--vertical` par `--horizontal` et `__column` par `__row`. + +## Comportement + +- Colonnes impaires : défilent vers le bas / droite +- Colonnes paires : défilent vers le haut / gauche +- Images dupliquées dans le HTML pour transition fluide +- Décalage automatique entre colonnes/rangées via `animation-delay` diff --git a/test_anim/images/LEGACY/apples-averywhere.png b/test_anim/images/LEGACY/apples-averywhere.png new file mode 100644 index 0000000..8739857 Binary files /dev/null and b/test_anim/images/LEGACY/apples-averywhere.png differ diff --git a/test_anim/images/LEGACY/legacy-menu-pause.png b/test_anim/images/LEGACY/legacy-menu-pause.png new file mode 100644 index 0000000..7f70a11 Binary files /dev/null and b/test_anim/images/LEGACY/legacy-menu-pause.png differ diff --git a/test_anim/images/LEGACY/legacy-screen-6.png b/test_anim/images/LEGACY/legacy-screen-6.png new file mode 100644 index 0000000..a2db396 Binary files /dev/null and b/test_anim/images/LEGACY/legacy-screen-6.png differ diff --git a/test_anim/images/LEGACY/legacy-screen-7.png b/test_anim/images/LEGACY/legacy-screen-7.png new file mode 100644 index 0000000..a58506a Binary files /dev/null and b/test_anim/images/LEGACY/legacy-screen-7.png differ diff --git a/test_anim/images/LEGACY/run-and-eat-to-survive.png b/test_anim/images/LEGACY/run-and-eat-to-survive.png new file mode 100644 index 0000000..4f6c0c7 Binary files /dev/null and b/test_anim/images/LEGACY/run-and-eat-to-survive.png differ diff --git a/test_anim/images/LEGACY/you-won_t-live-forever.png b/test_anim/images/LEGACY/you-won_t-live-forever.png new file mode 100644 index 0000000..cbfd4f9 Binary files /dev/null and b/test_anim/images/LEGACY/you-won_t-live-forever.png differ diff --git a/test_anim/images/OLLY/lesson_contentblock01.png b/test_anim/images/OLLY/lesson_contentblock01.png new file mode 100644 index 0000000..0f5865d Binary files /dev/null and b/test_anim/images/OLLY/lesson_contentblock01.png differ diff --git a/test_anim/images/OLLY/lesson_contentblock04.png b/test_anim/images/OLLY/lesson_contentblock04.png new file mode 100644 index 0000000..acf132c Binary files /dev/null and b/test_anim/images/OLLY/lesson_contentblock04.png differ diff --git a/test_anim/images/OLLY/lesson_contentblock05.png b/test_anim/images/OLLY/lesson_contentblock05.png new file mode 100644 index 0000000..2cd70f8 Binary files /dev/null and b/test_anim/images/OLLY/lesson_contentblock05.png differ diff --git a/test_anim/images/OLLY/lesson_cover01.png b/test_anim/images/OLLY/lesson_cover01.png new file mode 100644 index 0000000..301a42f Binary files /dev/null and b/test_anim/images/OLLY/lesson_cover01.png differ diff --git a/test_anim/images/OLLY/quiz_choosemode.png b/test_anim/images/OLLY/quiz_choosemode.png new file mode 100644 index 0000000..478d0ed Binary files /dev/null and b/test_anim/images/OLLY/quiz_choosemode.png differ diff --git a/test_anim/images/OLLY/quiz_quadmode.png b/test_anim/images/OLLY/quiz_quadmode.png new file mode 100644 index 0000000..a02327f Binary files /dev/null and b/test_anim/images/OLLY/quiz_quadmode.png differ diff --git a/test_anim/index.php b/test_anim/index.php new file mode 100644 index 0000000..e1cdf79 --- /dev/null +++ b/test_anim/index.php @@ -0,0 +1,76 @@ + [ + 'images/LEGACY/apples-averywhere.png', + 'images/LEGACY/legacy-menu-pause.png', + 'images/LEGACY/legacy-screen-6.png', + 'images/LEGACY/legacy-screen-7.png', + 'images/LEGACY/run-and-eat-to-survive.png', + 'images/LEGACY/you-won_t-live-forever.png', + ], + 'OLLY' => [ + 'images/OLLY/lesson_contentblock01.png', + 'images/OLLY/lesson_contentblock04.png', + 'images/OLLY/lesson_contentblock05.png', + 'images/OLLY/lesson_cover01.png', + 'images/OLLY/quiz_choosemode.png', + 'images/OLLY/quiz_quadmode.png', + ], +]; + +$images = $imagesSets[$set]; +$count = count($images); +$duration = $count * $secondsPerImage; // durée calculée selon le nombre d'images + +// Décalage par colonne basé sur le nombre d'images +// Colonnes 1 et 3 vont dans la même direction, donc décalées de 1/2 +// Colonne 2 va dans l'autre direction, décalée de 1/4 +$columns = [ + ['offset' => 0, 'delay' => 0], + ['offset' => (int)($count / 3), 'delay' => $duration / 4], + ['offset' => 0, 'delay' => $duration / 2], +]; + +function getShiftedImages($images, $offset) { + return array_merge( + array_slice($images, $offset), + array_slice($images, 0, $offset) + ); +} +?> + + + + + + Test Animation Galerie + + + + + + + + diff --git a/test_anim/style.css b/test_anim/style.css new file mode 100644 index 0000000..0cf45b6 --- /dev/null +++ b/test_anim/style.css @@ -0,0 +1,152 @@ +* { margin: 0; padding: 0; box-sizing: border-box; } +body { + min-height: 100vh; +} +.gallery-animation { + --gap: 40px; + --vertical-wrapper-width: 900px; + --shadow-diffusion: 10px; + position: fixed; + top: 0; + left: 0; + width: 40vw; + height: 100vh; + overflow: hidden; +} + +.gallery-animation__wrapper { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + display: flex; +} + +.gallery-animation__track { + display: flex; + animation-timing-function: linear; + animation-iteration-count: infinite; +} + +.gallery-animation__image { + object-fit: cover; + flex-shrink: 0; + filter: drop-shadow(0px 0px var(--shadow-diffusion) rgb(0, 0, 0)); +} + +/* ========================================================================== + MODE VERTICAL + ========================================================================== */ + +.gallery-animation--vertical .gallery-animation__wrapper{ + width: var(--vertical-wrapper-width); + flex-direction: row; + justify-content: center; + padding: 0 var(--gap); + left: 50%; + transform: translateX(-50%); +} + +.gallery-animation--vertical .gallery-animation__column { + width: 100%; + display: flex; + flex-direction: column; + align-items: stretch; + overflow: hidden; +} + +.gallery-animation--vertical .gallery-animation__track { + flex-direction: column; + align-items: stretch; + width: 100%; + padding-inline: calc(var(--gap) / 2); +} + +.gallery-animation--vertical .gallery-animation__image { + width: 100%; + height: auto; + object-fit: contain; + margin-block: calc(var(--gap) / 2); +} + +/* Animations verticales */ +.gallery-animation--vertical .gallery-animation__column:nth-child(odd) .gallery-animation__track { + animation: scrollDown var(--animation-duration) linear infinite; +} + +.gallery-animation--vertical .gallery-animation__column:nth-child(even) .gallery-animation__track { + animation: scrollUp var(--animation-duration) linear infinite; +} + + +@keyframes scrollDown { + from { transform: translateY(0); } + to { transform: translateY(-50%); } +} + +@keyframes scrollUp { + from { transform: translateY(-50%); } + to { transform: translateY(0); } +} + +/* ========================================================================== + MODE HORIZONTAL + ========================================================================== */ + +.gallery-animation--horizontal .gallery-animation__wrapper { + flex-direction: column; + padding: var(--gap) 0; +} + +.gallery-animation--horizontal .gallery-animation__column { + flex: 1; + display: flex; + flex-direction: row; + align-items: stretch; + overflow: hidden; +} + +.gallery-animation--horizontal .gallery-animation__track { + flex-direction: row; + align-items: stretch; + height: 100%; + padding-block: calc(var(--gap) / 2); +} + +.gallery-animation--horizontal .gallery-animation__image { + height: 100%; + width: auto; + object-fit: contain; + margin-inline: calc(var(--gap) / 2); +} + +/* Animations horizontales */ +.gallery-animation--horizontal .gallery-animation__column:nth-child(odd) .gallery-animation__track { + animation: scrollRight var(--animation-duration) linear infinite; +} + +.gallery-animation--horizontal .gallery-animation__column:nth-child(even) .gallery-animation__track { + animation: scrollLeft var(--animation-duration) linear infinite; +} + + +@keyframes scrollRight { + from { transform: translateX(-50%); } + to { transform: translateX(0); } +} + +@keyframes scrollLeft { + from { transform: translateX(0); } + to { transform: translateX(-50%); } +} + +/* ========================================================================== + REDUCED MOTION + ========================================================================== */ + +@media (prefers-reduced-motion: reduce) { + .gallery-animation__track { + animation: none !important; + } +}