← Blurr Motion gallery-hover-shift-editorial
Categorie galleries Tier 1 Techniek #24 Deps gsap
— A short essay

Faces in slow rooms

Five portraits, photographed without instruction, between October and March.

No. 01 Portrait, March — Studio, late afternoon
No. 02 Hands, no.04 — Linen, cold light
No. 03 Window seat — October, Paris
No. 04 Folded form — Wool, study
No. 05 Quiet hour — Northern winter
1. Mechanisme — kopieer 1-op-1, geen styling-keuzes
// Mechanisme: gallery-hover-shift-editorial
import gsap from 'https://esm.sh/[email protected]';
if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) return;
const items = gsap.utils.toArray('.hse-item');
const focus = (idx) => {
  items.forEach((it, i) => {
    gsap.to(it, {
      x: idx === -1 ? 0 : (i === idx ? (i % 2 === 0 ? 24 : -24) : 0),
      autoAlpha: idx === -1 ? 1 : (i === idx ? 1 : 0.4),
      duration: 1.2, ease: 'expo.out',
    });
  });
};
items.forEach((it, i) => {
  it.addEventListener('mouseenter', () => focus(i));
  it.addEventListener('mouseleave', () => focus(-1));
});
2. Skeleton — DOM + class-namen, mag herschikken
<!-- Skeleton: gallery-hover-shift-editorial -->
<section class="hse">
  <aside class="hse__rail"><span>— Plate</span></aside>
  <div class="hse__col">
    <figure class="hse-item">
      <div class="hse-item__img"></div>
      <figcaption><em>Portrait, March</em> — No. 01</figcaption>
    </figure>
  </div>
</section>
3. Styling-template — verplicht eigen invulling per merk
/* Styling: gallery-hover-shift-editorial */
:root {
  --hse-paper: #F4F1EB;
  --hse-ink: #1B1A17;
}
.hse { font-family: 'Fraunces', serif; }
.hse-item figcaption { font-style: italic; }