{
 "$schema": "../../schema.json",
 "schema": "fundus/1",
 "id": "menue-choreografie-wipe-clip",
 "name": "Menü-Choreografie: Panel-Wipe bzw. Clip-Reveal mit asymmetrischem Schließen",
 "name_en": "Layered wipe / clip-path menu reveal with easeReverse",
 "kurz": "Drei Farbpanels wischen gestaffelt herein, dann steigen die Links gedreht aus ihren Masken; geschlossen wird rückwärts, 1,5-mal schneller und mit eigener Kurve.",
 "kategorie": "Navigation",
 "kategorie_slug": "navigation",
 "kategorie_nr": 3,
 "bau_chat": "C3",
 "prioritaet": "A",
 "trendstatus": "aufsteigend",
 "belegstatus": "belegt",
 "website_belege": 3,
 "stimmung": [
  "editorial",
  "präzise",
  "verspielt",
  "laut"
 ],
 "stimmung_roh": [
  "verspielt",
  "laut",
  "präzise",
  "editorial"
 ],
 "technik": [
  "gsap",
  "customease",
  "css",
  "clip-path",
  "vanilla-js"
 ],
 "technik_gruppen": [
  "css",
  "js",
  "gsap"
 ],
 "leistungskosten": "niedrig",
 "steckbrief": {
  "beschreibung": "1) Klick auf den Menüknopf: zwei bis drei farbige Panels fahren nacheinander von der Seite herein (xPercent 101 → 0). Alternativ öffnet sich ein Clip-Path vom Knopf aus (circle, inset oder polygon). 2) Kurz bevor das letzte Panel steht, steigen die Menülinks aus ihren Masken nach oben, leicht gedreht (10°) und gestaffelt. 3) Danach blenden Nebeninhalte wie Adresse, Social und Kleingedrucktes mit kleinem Versatz ein. 4) Ein halbtransparenter Schleier dunkelt die Seite ab, ein Klick darauf schließt. 5) Zum Schließen läuft dieselbe Timeline rückwärts, aber 1,5-mal schneller und mit eigener Kurve (GSAP easeReverse). Wird mitten in der Bewegung umgeschaltet, rechnet GSAP die Kurve ab dem Umkehrpunkt neu.",
  "warum_es_wirkt": "Die Schichten erzeugen Tiefe und Rhythmus, die Staffelung führt den Blick vom Hintergrund zu den Links. Das asymmetrische Timing trifft die Erwartung: Öffnen darf inszeniert sein, Schließen muss sofort reagieren. Weil die Bewegung jederzeit umkehrbar ist, hängt das Menü nie.",
  "wann_einsetzen": "Overlay- oder Seitenleisten-Navigation mit Markencharakter, vor allem bei Studios, Agenturen und Kampagnenseiten.",
  "wann_nicht": "Wenn das Menü sehr oft geöffnet wird, etwa in Web-Apps oder Dokumentationen. Dort höchstens 200 bis 300 ms und keine mehrstufige Choreografie.",
  "varianten": [
   "Seitenleiste mit drei gestaffelten Farbpanels, die von rechts hereinwischen (Osmo)",
   "Clip-Path-Kreis wächst aus dem Menüknopf (Codrops, TRIONN)",
   "Vorhang: clip-path polygon fährt von unten auf volle Fläche (Stewart & Partners)",
   "Vorhang von oben mit konkaver SVG-Kante (Shape-Overlay)",
   "Radialmenü (GSAP-3.15-Demo)"
  ],
  "umsetzung": "Beim Init eine pausierte GSAP-Timeline bauen: Panels (xPercent 101 → 0, stagger), Links (yPercent 140, rotate 10 → 0) über den Positionsparameter verzahnt, danach die Fades. Umschalten: offen ? tl.timeScale(1).play() : tl.timeScale(1.5).reverse(). Ab GSAP 3.15 easeReverse in den Timeline-defaults setzen (true für die gespiegelte Kurve oder eine eigene, z. B. \"power3.out\"); das ersetzt das veraltete yoyoEase. Für die Kreis-Variante clip-path: circle(0px at X Y) → circle(R at X Y), X und Y aus getBoundingClientRect des Knopfs, R als Abstand zur fernsten Ecke. Fallstricke: display:none am Container verhindert das Messen, besser visibility bzw. autoAlpha. Panels mit will-change: transform. Klicks nur auf echten <button>-Elementen.",
  "mobil": "Gleiche Timeline, Panels vollflächig statt 36em breit. Dauer und Stagger um 20 bis 30 % kürzen.",
  "reduzierte_bewegung": "Die Timeline durch einen einfachen Opacity-Fade (150 ms) ersetzen, zentral über gsap.matchMedia('(prefers-reduced-motion: reduce)').",
  "barrierefreiheit": "Echter <button> mit aria-expanded und aria-controls. Escape schließt. Der Klick auf den Schleier schließt zusätzlich, nicht ausschließlich. Nach dem Öffnen per Tastatur Fokus auf den ersten Link, Hintergrund inert. Beim Schließen Fokus zurück auf den Knopf."
 },
 "messwerte": {
  "easing": "CustomEase „main“ 0.65, 0.01, 0.05, 0.99; CSS-Übergänge cubic-bezier(.65,.05,0,1)",
  "dauer_ms": "Panels 575; Überschriften-Transition 550; Icons 400",
  "stagger_ms": "Panels 120; Links 50; Fade-Elemente 40",
  "distanz": "Panels xPercent 101→0; Links yPercent 140 + rotate 10° → 0",
  "sonstiges": "Links starten 350 ms nach den Panels, Fades 200 ms nach den Links. Schließen mit timeScale 1.5 und easeReverse (GSAP-3.15-Doku).",
  "herkunft": "beobachtet",
  "quelle": "https://osmo.supply/resource/side-navigation-with-wipe-effect ; https://gsap.com/blog/3-15/"
 },
 "kurve": {
  "bezier": [
   0.65,
   0.05,
   0.0,
   1.0
  ],
  "css": "cubic-bezier(0.65, 0.05, 0, 1)",
  "name": "eigene Kurve",
  "dauer_ms": 575
 },
 "gesehen_bei": [
  {
   "seite": "Codrops: GSAP EaseReverse Clip Menu (Manoela Ilic)",
   "url": "https://tympanus.net/codrops/2026/04/22/a-playful-clip-menu-with-gsaps-easereverse/",
   "auszeichnung": "Codrops-Demo 04/2026",
   "beobachtung": "Verspieltes Clip-Menü als Demonstration von easeReverse; Artikel selbst nicht abrufbar, Repository-README bestätigt Fokus auf ‚smoother, snappier‘ Umkehranimationen.",
   "art": "artikel"
  },
  {
   "seite": "Osmo: Side Navigation with Wipe Effect",
   "url": "https://osmo.supply/resource/side-navigation-with-wipe-effect",
   "auszeichnung": "Osmo (Ressourcenbibliothek von Dennis Snellenberg und Ilja van Eck)",
   "beobachtung": "Drei Farbpanels wischen gestaffelt herein, danach Links mit Rotation, dann Social-Fade; Escape schließt.",
   "art": "demo"
  },
  {
   "seite": "Lusion",
   "url": "https://lusion.co",
   "auszeichnung": "Awwwards SOTY 2023 (v3)",
   "beobachtung": "Menü öffnet als eigene Ebene mit Close-Zustand; Choreografie im Text-Abruf nicht messbar.",
   "art": "website",
   "browser_gemessen": true
  },
  {
   "seite": "Stewart & Partners",
   "url": "https://www.stewartpartners.studio/",
   "auszeichnung": "",
   "beobachtung": "Live geprüft (sp-scripts.txt): CustomEase \"primary-ease\" 0.62,0.05,0.01,0.99; Menü-Panel clipPath polygon von unten auf voll (.8s), Logo und Links yPercent 110 → 0 (.8s circ.out, Stagger .07); Schließen schneller: Links yPercent -110 (.53s power3.inOut, Stagger .04), Panel-Clip nach oben (.8s primary-ease).",
   "art": "website"
  },
  {
   "seite": "TRIONN",
   "url": "https://trionn.com/",
   "auszeichnung": "",
   "beobachtung": "Live geprüft (Chunk 0eq63v9bib54k.js): Menü öffnet per clipPath circle(0% at 95% 5%) → circle(150% at 0% 5%) vom Button aus, dazu scale .9 → 1 und rotation 2 → 0 (1.2s expo.inOut); Menüpunkte y 20 → 0.",
   "art": "website",
   "browser_gemessen": true
  }
 ],
 "tutorials": [
  {
   "titel": "Codrops: A Playful Clip Menu with GSAP’s easeReverse",
   "url": "https://tympanus.net/codrops/2026/04/22/a-playful-clip-menu-with-gsaps-easereverse/"
  },
  {
   "titel": "GitHub: codrops/EaseReverseClipMenu",
   "url": "https://github.com/codrops/EaseReverseClipMenu"
  },
  {
   "titel": "GSAP 3.15 Release (easeReverse)",
   "url": "https://gsap.com/blog/3-15/"
  },
  {
   "titel": "Osmo: Side Navigation with Wipe Effect",
   "url": "https://osmo.supply/resource/side-navigation-with-wipe-effect"
  }
 ],
 "kombinierbar_mit": [
  "vollbild-overlay-menue-bildvorschau",
  "menue-icon-und-label-morph",
  "kompakte-expandierende-navigation"
 ],
 "urls": {
  "detail": "https://cecodesign.de/lab/fundus/navigation/menue-choreografie-wipe-clip/",
  "meta": "https://cecodesign.de/lab/fundus/navigation/menue-choreografie-wipe-clip/meta.json",
  "demo": "https://cecodesign.de/lab/fundus/navigation/menue-choreografie-wipe-clip/demo"
 },
 "herkunft": {
  "quelldateien": [
   "navigation.json",
   "patch-belege-3.json"
  ],
  "pruefnotizen": [
   "patch-belege-3.json: Zwei weitere Produktionsbelege (asymmetrisches Schließen bei Stewart & Partners). Bestehende Messwerte (Codrops/Lusion) bleiben."
  ]
 },
 "bau": {
  "status": "fertig",
  "kurz": "Drei Farbpanels wischen gestaffelt herein, dann steigen die Links gedreht aus ihren Masken; geschlossen wird rückwärts, 1,5-mal schneller und mit eigener Kurve.",
  "demo": true,
  "abhaengigkeiten": [
   "gsap@3.15.0",
   "CustomEase@3.15.0"
  ],
  "werte": {
   "easing": "Öffnen CustomEase „main“ M0,0 C0.65,0.01 0.05,0.99 1,1 (Timeline-defaults). Hover und UI cubic-bezier(0.65, 0.05, 0, 1), 150 ms",
   "schliessen": "dieselbe Timeline rückwärts: timeScale 1.5, easeReverse \"power3.out\" in den defaults; bei Umkehr mitten in der Bewegung rechnet GSAP die Kurve ab dem Umkehrpunkt neu",
   "dauer_ms": "Panels 575 · Links 700 · Fades 700 · Knopf-Label und Icon 400 · Knopffarbe 300 · Schleier 575",
   "stagger_ms": "Panels 120 · Links 50 · Fades 40",
   "start_ms": "Panels 0 · Label/Icon 50 · Knopffarbe 150 · Links 350 · Trennlinie und Fades 550",
   "gesamt_ms": "Öffnen 1410 · Schließen 940 (Telefon 1058 / 705)",
   "distanz": "Wipe: Panels xPercent 101 → 0. Links yPercent 140 + rotate 10° → 0 (transform-origin 0% 50%) aus overflow:hidden-Maske. Fades autoAlpha 0 → 1, yPercent 50 → 0. Trennlinie scaleX 0 → 1",
   "kreis": "clip-path circle(0px at X Y) → circle(R at X Y); X/Y = Mitte des Knopf-Icons, R = Abstand zur fernsten Ecke (Math.hypot), bei Resize neu gemessen",
   "vorhang": "clip-path polygon(0% 100%, 100% 100%, 100% 100%, 0% 100%) → polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%)",
   "flaeche": "Wipe min(36em, 100%) rechts, Kreis und Vorhang vollflächig",
   "farben": "Panels #d3cbbd → #e2552b → #141413, Schleier rgba(20, 20, 19, .52), Hover-Akzent #ff7a4d",
   "telefon": "unter 600 px alle Dauern, Stagger und Startpunkte × 0,75",
   "reduziert": "ein Opacity-Fade des ganzen Menüs, 150 ms linear, in beide Richtungen"
  },
  "ausloeser": "klick",
  "touch": "Tippen auf den Menüknopf öffnet und schließt. Unter 600 px ist auch der Wipe vollflächig, Dauer und Stagger sind um 25 % kürzer. Keine Hover-Abdunklung der Nachbarlinks.",
  "reduziert": "Kein Wischen, Kreis oder Vorhang: das fertige Menü blendet in 150 ms ein und aus, Knopf steht sofort auf „Schließen“.",
  "korrekturen": {
   "beschreibung": "1) Klick auf den Menüknopf: zwei bis drei farbige Panels fahren nacheinander von der Seite herein (xPercent 101 → 0). Alternativ öffnet sich ein Clip-Path vom Knopf aus (circle, inset oder polygon). 2) Kurz bevor das letzte Panel steht, steigen die Menülinks aus ihren Masken nach oben, leicht gedreht (10°) und gestaffelt. 3) Danach blenden Nebeninhalte wie Adresse, Social und Kleingedrucktes mit kleinem Versatz ein. 4) Ein halbtransparenter Schleier dunkelt die Seite ab, ein Klick darauf schließt. 5) Zum Schließen läuft dieselbe Timeline rückwärts, aber 1,5-mal schneller und mit eigener Kurve (GSAP easeReverse). Wird mitten in der Bewegung umgeschaltet, rechnet GSAP die Kurve ab dem Umkehrpunkt neu.",
   "warum_es_wirkt": "Die Schichten erzeugen Tiefe und Rhythmus, die Staffelung führt den Blick vom Hintergrund zu den Links. Das asymmetrische Timing trifft die Erwartung: Öffnen darf inszeniert sein, Schließen muss sofort reagieren. Weil die Bewegung jederzeit umkehrbar ist, hängt das Menü nie.",
   "wann_einsetzen": "Overlay- oder Seitenleisten-Navigation mit Markencharakter, vor allem bei Studios, Agenturen und Kampagnenseiten.",
   "wann_nicht": "Wenn das Menü sehr oft geöffnet wird, etwa in Web-Apps oder Dokumentationen. Dort höchstens 200 bis 300 ms und keine mehrstufige Choreografie.",
   "varianten": [
    "Seitenleiste mit drei gestaffelten Farbpanels, die von rechts hereinwischen (Osmo)",
    "Clip-Path-Kreis wächst aus dem Menüknopf (Codrops, TRIONN)",
    "Vorhang: clip-path polygon fährt von unten auf volle Fläche (Stewart & Partners)",
    "Vorhang von oben mit konkaver SVG-Kante (Shape-Overlay)",
    "Radialmenü (GSAP-3.15-Demo)"
   ],
   "umsetzung": "Beim Init eine pausierte GSAP-Timeline bauen: Panels (xPercent 101 → 0, stagger), Links (yPercent 140, rotate 10 → 0) über den Positionsparameter verzahnt, danach die Fades. Umschalten: offen ? tl.timeScale(1).play() : tl.timeScale(1.5).reverse(). Ab GSAP 3.15 easeReverse in den Timeline-defaults setzen (true für die gespiegelte Kurve oder eine eigene, z. B. \"power3.out\"); das ersetzt das veraltete yoyoEase. Für die Kreis-Variante clip-path: circle(0px at X Y) → circle(R at X Y), X und Y aus getBoundingClientRect des Knopfs, R als Abstand zur fernsten Ecke. Fallstricke: display:none am Container verhindert das Messen, besser visibility bzw. autoAlpha. Panels mit will-change: transform. Klicks nur auf echten <button>-Elementen.",
   "mobil": "Gleiche Timeline, Panels vollflächig statt 36em breit. Dauer und Stagger um 20 bis 30 % kürzen.",
   "reduzierte_bewegung": "Die Timeline durch einen einfachen Opacity-Fade (150 ms) ersetzen, zentral über gsap.matchMedia('(prefers-reduced-motion: reduce)').",
   "barrierefreiheit": "Echter <button> mit aria-expanded und aria-controls. Escape schließt. Der Klick auf den Schleier schließt zusätzlich, nicht ausschließlich. Nach dem Öffnen per Tastatur Fokus auf den ersten Link, Hintergrund inert. Beim Schließen Fokus zurück auf den Knopf."
  },
  "geprueft": "31.10.2026",
  "notiz": "Erfundenes Kölner Studio „Ostwind & Kalk“ mit Arbeiten aus medien/. Umschalter Wipe / Kreis / Vorhang; alle drei teilen dieselbe Link- und Fade-Choreografie, nur die Panel-Bewegung wechselt. Das Pult zeigt die Zeitleiste live: Fortschritt, Richtung (Schließen in Akzentfarbe) und eine Marke am Umkehrpunkt, wenn mitten in der Bewegung umgeschaltet wird. Die Vorführung klickt per gedachtem Zeiger: öffnen, über Links fahren, schließen, dann öffnen und nach 42 % umkehren, danach nächste Variante. Bilder 01.11.2026: eigene Bilder statt Portfolio. Zugang 02.11.2026: --leise .56 → .66 (5,5:1); Knopf-Rahmen im Kontrastmodus. Offen gelassen: orangenes „&“ in der Wortmarke (3,2:1), Logo-Ausnahme nach WCAG 1.4.3."
 }
}
