{
 "$schema": "../../schema.json",
 "schema": "fundus/1",
 "id": "projektindex-hover-vorschau",
 "name": "Projektindex als Liste mit Hover-Bildvorschau",
 "name_en": "Project index list with hover image reveal",
 "kurz": "Ein Werkverzeichnis als typografische Liste: das Bild erscheint erst beim Zeigen, folgt dem Zeiger oder wechselt in einer festen Fläche und wächst beim Klick zum Hero der Fallstudie.",
 "kategorie": "Hero & Section-Layouts",
 "kategorie_slug": "hero-layouts",
 "kategorie_nr": 4,
 "bau_chat": "C2",
 "prioritaet": "A",
 "trendstatus": "etabliert",
 "belegstatus": "belegt",
 "website_belege": 2,
 "stimmung": [
  "ruhig",
  "editorial",
  "präzise"
 ],
 "stimmung_roh": [
  "editorial",
  "minimal",
  "seriös",
  "architektonisch"
 ],
 "technik": [
  "css",
  "gsap",
  "vanilla-js",
  "lerp",
  "clip-path",
  "view-transitions"
 ],
 "technik_gruppen": [
  "css",
  "js",
  "gsap"
 ],
 "leistungskosten": "niedrig",
 "steckbrief": {
  "beschreibung": "Projekte stehen nicht im Kachelraster, sondern in einer typografischen Liste. Jede Zeile hat Nummer, großen Projektnamen und rechts kleine Metadaten wie Disziplin, Branche und Jahr, getrennt durch Haarlinien. Beim Hover erscheint ein Bild des Projekts. Es folgt entweder verzögert dem Zeiger und kippt je nach Mausgeschwindigkeit, oder es wechselt in einer festen Fläche neben der Liste. Das neue Bild schiebt sich aus der Richtung herein, aus der die Maus kommt. Die übrigen Zeilen treten zurück. Ein Klick führt per Seitenübergang zur Fallstudie, oft wächst das Vorschaubild dabei zum Hero der Detailseite.",
  "warum_es_wirkt": "Die Liste liest sich wie das Inhaltsverzeichnis eines Buches: seriös, schnell zu überfliegen, viele Projekte auf wenig Raum. Das Bild kommt erst, wenn Interesse da ist. Das macht neugierig, ohne die Seite zu überladen.",
  "wann_einsetzen": "Portfolios mit vielen Projekten, Studios, Architekturbüros, Fotografen, Archive. Auch für Journal- und Blogübersichten.",
  "wann_nicht": "Wenn Bilder das Hauptargument sind und viele Besucher am Telefon kommen, wo es keinen Hover gibt. Dann gehören Daumenbilder fest in die Zeilen. Bei sehr wenigen Projekten (zwei oder drei) wirkt die Liste leer.",
  "varianten": [
   "Bild folgt dem Zeiger mit Lerp und Rotation",
   "Feste Vorschaufläche, das Bild wechselt per Reveal",
   "Zeile klappt beim Hover auf und zeigt einen Bildstreifen",
   "Bildspur: mehrere Bilder bleiben als Trail hinter dem Zeiger",
   "Index als Overlay über der aktuellen Seite"
  ],
  "umsetzung": "Liste als <ul> mit einem <a> pro Zeile, Grid aus Nummer, Name und Meta. Ein einziges Vorschau-Element mit pointer-events: none teilen sich alle Zeilen, damit die Bewegung beim Zeilenwechsel nicht abreißt. In einer requestAnimationFrame-Schleife rückt die Position pro Tick um ein Zwölftel an die Maus heran (bei 120 Hz, auf die echte Bildrate umrechnen). Die Rotation ergibt sich aus der Mausgeschwindigkeit und wird begrenzt. Für den Reveal fahren Ebene und Bild gegenläufig von ±100 % auf 0, die Richtung kommt aus dem Zeilenwechsel. Bilder vorladen. Den Übergang zur Detailseite übernehmen View Transitions: view-transition-name auf Vorschau und Ziel-Hero, zwischen echten Seiten mit @view-transition { navigation: auto; } in beiden Dokumenten. Alternativ GSAP Flip.",
  "mobil": "Kein Hover: Daumenbild in der Zeile zeigen oder das Bild einblenden, wenn die Zeile beim Scrollen die Bildschirmmitte kreuzt. Tippen öffnet direkt.",
  "reduzierte_bewegung": "Kein Folgen und keine Rotation. Das Bild steht an fester Stelle und wechselt per Überblendung.",
  "barrierefreiheit": "Vorschau auch bei :focus-visible zeigen, damit sie per Tastatur erreichbar ist. Das Vorschaubild ist dekorativ (alt=\"\"), der Linktext trägt die Information. Metadaten als echter Text, nicht nur im Bild. Nach dem Seitenwechsel den Fokus auf die neue Seite setzen und beim Zurückkehren auf den geöffneten Eintrag."
 },
 "messwerte": {
  "easing": "Lerp-Faktor 1/12 pro Tick",
  "dauer_ms": "200 Reveal ein/aus; 1200 Intro je Zeile",
  "stagger_ms": "60 pro Zeile (Intro)",
  "distanz": "Reveal ±100 % → 0; Rotation bis ±60° aus Mausgeschwindigkeit (0–100px/Frame); Lerp-Faktor 0.08; Vorschau 220×320px",
  "sonstiges": "Ticker 0.0083 s (120 Hz), Bild folgt der Maus mit Verzögerung",
  "herkunft": "beobachtet",
  "quelle": "https://dennissnellenberg.com/assets/js/index-new.js"
 },
 "kurve": null,
 "gesehen_bei": [
  {
   "seite": "'kin (by-kin.com)",
   "url": "https://by-kin.com/",
   "auszeichnung": "laut hontran.dev Awwwards SOTD + Developer Award, FWA, CSSDA WOTD",
   "beobachtung": "Selbst abgerufen: „FEATURED WORKS“ als nummerierte Liste (01 Dentons, 02 5 St Paul's, 03 JD Sports – Canteen) mit Name + Thumbnail, keine weiteren Metadaten; Layout-Umschalter 1/2.",
   "art": "website",
   "browser_gemessen": true
  },
  {
   "seite": "Dennis Snellenberg",
   "url": "https://dennissnellenberg.com/",
   "auszeichnung": "",
   "beobachtung": "Live geprüft: HTML .mouse-pos-list-image > .float-image-wrap mit einem li je Projekt; index-new.js zieht das Vorschaubild per Lerp nach (pos += (maus - pos) / 12 auf einem 120-Hz-GSAP-Ticker).",
   "art": "website",
   "browser_gemessen": true
  }
 ],
 "tutorials": [
  {
   "titel": "Creating a Menu Image Animation on Hover (Codrops)",
   "url": "https://tympanus.net/codrops/2020/07/01/creating-a-menu-image-animation-on-hover/"
  },
  {
   "titel": "Image Reveal Hover Effects (Codrops)",
   "url": "https://tympanus.net/codrops/2018/11/27/image-reveal-hover-effects/"
  }
 ],
 "kombinierbar_mit": [
  "flip-zustandswechsel",
  "case-study-geruest",
  "meta-labels-hud-typografie",
  "listen-hover-bildvorschau"
 ],
 "urls": {
  "detail": "https://cecodesign.de/lab/fundus/hero-layouts/projektindex-hover-vorschau/",
  "meta": "https://cecodesign.de/lab/fundus/hero-layouts/projektindex-hover-vorschau/meta.json",
  "demo": "https://cecodesign.de/lab/fundus/hero-layouts/projektindex-hover-vorschau/demo"
 },
 "herkunft": {
  "quelldateien": [
   "layouts.json",
   "patch-belege-3.json"
  ],
  "pruefnotizen": [
   "patch-belege-3.json: Zweiter Produktionsbeleg neben ’kin; Awwwards-Inspirationen entfernt."
  ],
  "kategorie_alt": "Projektlisten"
 },
 "bau": {
  "status": "fertig",
  "kurz": "Ein Werkverzeichnis als typografische Liste: das Bild erscheint erst beim Zeigen, folgt dem Zeiger oder wechselt in einer festen Fläche und wächst beim Klick zum Hero der Fallstudie.",
  "demo": true,
  "abhaengigkeiten": [],
  "werte": {
   "folgen": "Lerp 1/12 je 120-Hz-Tick (8,33 ms), zeitkorrigiert: k = 1 − (11/12)^(dt / 8,33 ms)",
   "kippen": "Mausweg in px je 60-Hz-Frame, begrenzt auf ±100, × 0,6° → bis ±60°; Rotation mit demselben Lerp geglättet",
   "bild_zeiger": "256 × 320 px (4:5), mittig unter dem Zeiger (unter 760 px Breite 186 × 232 px). Bewusste Abweichung vom Messwert 220 × 320: die Medien sind 4:5, das schmalere Format schnitt breite Wortmarken an.",
   "ein_aus": "scale 0 → 1 und zurück, 200 ms, cubic-bezier(0.16, 1, 0.3, 1)",
   "bildwechsel": "Ebene translateY(±100 % → 0), Bild darin gegenläufig translateY(∓100 % → 0) und scale 1,15 → 1; 700 ms cubic-bezier(0.16, 1, 0.3, 1); Richtung: Zeile weiter unten = von unten",
   "feste_flaeche": "4:5, clamp(220px, 27vw, 380px) breit, sticky; Leeren über opacity 200 ms linear",
   "nachbarn": "Deckkraft 0,3, Übergang 400 ms expo.out; aktive Zeile rückt 0,18em ein",
   "intro": "Name aus Maske translateY(105 % → 0), Haarlinie scaleX 0 → 1, Meta opacity + translateY 40 %; je 1200 ms expo.out, Versatz 60 ms pro Zeile",
   "seitenwechsel": "same-document View Transition, ::view-transition-group 1000 ms cubic-bezier(0.16, 1, 0.3, 1); Namen projekt-bild (Vorschau → Hero) und projekt-titel (Zeilenname → h2); root aus 300 ms, ein 600 ms nach 150 ms",
   "typo": "Name clamp(24px, 3.3vw, 46px) Instrument Sans 500, Laufweite −0,035em; Labels Geist Mono 11 px versal 0,14em; Akzent Instrument Serif Italic",
   "reduziert": "Überblenden 150 ms linear an fester Stelle"
  },
  "ausloeser": "hover",
  "touch": "Keine schwebende Vorschau und kein Umschalter. Jede Zeile zeigt ein Daumenbild; die Zeile, die die Bildschirmmitte kreuzt (IntersectionObserver, rootMargin −50 %), wird aktiv, ihr Daumenbild farbig. Tippen öffnet die Fallstudie, das Daumenbild wächst per View Transition zum Hero.",
  "reduziert": "Kein Intro, kein Folgen, kein Kippen. Die Vorschau steht rechts in der aktiven Zeile und blendet in 150 ms über; der Seitenwechsel ist eine kurze Überblendung (150 ms).",
  "korrekturen": {
   "beschreibung": "Projekte stehen nicht im Kachelraster, sondern in einer typografischen Liste. Jede Zeile hat Nummer, großen Projektnamen und rechts kleine Metadaten wie Disziplin, Branche und Jahr, getrennt durch Haarlinien. Beim Hover erscheint ein Bild des Projekts. Es folgt entweder verzögert dem Zeiger und kippt je nach Mausgeschwindigkeit, oder es wechselt in einer festen Fläche neben der Liste. Das neue Bild schiebt sich aus der Richtung herein, aus der die Maus kommt. Die übrigen Zeilen treten zurück. Ein Klick führt per Seitenübergang zur Fallstudie, oft wächst das Vorschaubild dabei zum Hero der Detailseite.",
   "warum_es_wirkt": "Die Liste liest sich wie das Inhaltsverzeichnis eines Buches: seriös, schnell zu überfliegen, viele Projekte auf wenig Raum. Das Bild kommt erst, wenn Interesse da ist. Das macht neugierig, ohne die Seite zu überladen.",
   "wann_einsetzen": "Portfolios mit vielen Projekten, Studios, Architekturbüros, Fotografen, Archive. Auch für Journal- und Blogübersichten.",
   "wann_nicht": "Wenn Bilder das Hauptargument sind und viele Besucher am Telefon kommen, wo es keinen Hover gibt. Dann gehören Daumenbilder fest in die Zeilen. Bei sehr wenigen Projekten (zwei oder drei) wirkt die Liste leer.",
   "varianten": [
    "Bild folgt dem Zeiger mit Lerp und Rotation",
    "Feste Vorschaufläche, das Bild wechselt per Reveal",
    "Zeile klappt beim Hover auf und zeigt einen Bildstreifen",
    "Bildspur: mehrere Bilder bleiben als Trail hinter dem Zeiger",
    "Index als Overlay über der aktuellen Seite"
   ],
   "umsetzung": "Liste als <ul> mit einem <a> pro Zeile, Grid aus Nummer, Name und Meta. Ein einziges Vorschau-Element mit pointer-events: none teilen sich alle Zeilen, damit die Bewegung beim Zeilenwechsel nicht abreißt. In einer requestAnimationFrame-Schleife rückt die Position pro Tick um ein Zwölftel an die Maus heran (bei 120 Hz, auf die echte Bildrate umrechnen). Die Rotation ergibt sich aus der Mausgeschwindigkeit und wird begrenzt. Für den Reveal fahren Ebene und Bild gegenläufig von ±100 % auf 0, die Richtung kommt aus dem Zeilenwechsel. Bilder vorladen. Den Übergang zur Detailseite übernehmen View Transitions: view-transition-name auf Vorschau und Ziel-Hero, zwischen echten Seiten mit @view-transition { navigation: auto; } in beiden Dokumenten. Alternativ GSAP Flip.",
   "mobil": "Kein Hover: Daumenbild in der Zeile zeigen oder das Bild einblenden, wenn die Zeile beim Scrollen die Bildschirmmitte kreuzt. Tippen öffnet direkt.",
   "reduzierte_bewegung": "Kein Folgen und keine Rotation. Das Bild steht an fester Stelle und wechselt per Überblendung.",
   "barrierefreiheit": "Vorschau auch bei :focus-visible zeigen, damit sie per Tastatur erreichbar ist. Das Vorschaubild ist dekorativ (alt=\"\"), der Linktext trägt die Information. Metadaten als echter Text, nicht nur im Bild. Nach dem Seitenwechsel den Fokus auf die neue Seite setzen und beim Zurückkehren auf den geöffneten Eintrag."
  },
  "geprueft": "01.11.2026",
  "notiz": "Werkverzeichnis eines Designstudios mit acht eigenen Arbeiten aus medien/. Umschalter zwischen „Am Zeiger“ (Lerp 1/12 je 120-Hz-Tick und Kippen wie bei dennissnellenberg.com gemessen) und „Feste Fläche“. Klick öffnet eine simulierte Fallstudie als zweiten Zustand derselben Datei; Vorschau und Titel wandern per same-document View Transition (Fallback ohne API: sofortiger Wechsel). Zurück per Knopf oder Esc. Vorführung: gedachter Zeiger fährt die Liste ab, öffnet „Gefüge“, kehrt zurück und zeigt danach die feste Fläche (16 s Schleife). Bildwechsel 700 ms ist ein eigener Wert, die übrigen Bewegungswerte stammen aus den Messwerten. Korrektur 01.11.2026: Die Zeiger-Vorschau ist jetzt 256 × 320 px (4:5) statt der gemessenen 220 × 320 px, weil das schmalere Format breite Wortmarken der 4:5-Medien beschnitt (begründete Abweichung vom Messwert); unter 760 px entsprechend 186 × 232 px. Werte-Anzeige angepasst. Bilder 01.11.2026: eigene Bilder statt Portfolio. Zugang 02.11.2026: Unter 760 px brechen Projektnamen auch mit Maus um (vorher nur bei Touch, sonst „Haus Kaltenbach“ bei 320 px abgeschnitten); Kontrastmodus-Rahmen für Knöpfe."
 }
}
