1.1 Responsive Design / Mobile First
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Layout ab dem kleinsten Viewport, Erweiterung per Media- und Container-Queries.
Geprüfter Katalog aus unserer Deep Research: von Pflicht-Standards über „super modern“ bis Award-Niveau. Jede Karte zeigt eine echte Mini-Demo (kein Screenshot), Browser-Support, Aufwand der Umsetzung und Laufzeitkosten. Techniken, die dein Browser nicht kann, bleiben sichtbar und werden ehrlich markiert.
Aufwand ●○ = Code-Umfang der Demo (1 wenige Zeilen CSS … 5 Bibliothek + Assets)Laufzeit ●○ = Bundle, CPU/GPU, Akku, Core-Web-Vitals-Risiko
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Layout ab dem kleinsten Viewport, Erweiterung per Media- und Container-Queries.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Zweidimensionales Layout mit grid-template-areas, auto-fit und minmax().
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Eindimensionale Verteilung und Ausrichtung mit gap, grow und wrap.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Schriftgröße skaliert stufenlos zwischen Minimum und Maximum, ohne Breakpoints.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Eine Schriftdatei, stufenlose Achsen (wght, wdth, opsz). Demo nutzt die variable Systemschrift, wo vorhanden.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Magazin-Satz: Initialen, Spalten, Ligaturen, hanging-punctuation.
Award-LevelChrome + SafariLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Schrift als Bewegungsträger – sechs Beispiele im Wechsel: Welle, Dehnen, Walze (laufen von selbst) sowie Kippen, Farbe, Breite (reagieren auf Maus/Finger in der Nähe jedes Buchstabens). Tap springt weiter.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Zeichen oder Wörter gestaffelt einblenden; aria-label am Elternelement hält den Text lesbar.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Zufallszeichen „entschlüsseln“ sich Buchstabe für Buchstabe. Vier Beispiele im Wechsel: Terminal-Decode, Wort-Wechsel im Hero (Webdesign → Web-Apps → Spiele), Binär-Reveal und ein Link, der beim Hover kurz verwürfelt.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Animierter Farbverlauf in der Schrift selbst.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Zeilen gleiten aus einer Maske (overflow: hidden) nach oben ins Bild.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Text folgt einer Kurve; startOffset lässt ihn den Pfad entlangwandern.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Kachel-Raster mit unterschiedlich großen Zellen, wie ein japanisches Bento.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Bewusster Rasterbruch: Das Foto läuft über den Rand, die Überschrift greift ins Bild, Text und Nummer sitzen versetzt – alles in einem Grid, die Zellen überlappen nur. Der Schalter zeigt dieselben Inhalte brav (Vorher) und gebrochen (Nachher).
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Sektionen laufen randlos, der Inhalt bleibt in der Lesebreite (Grid mit benannten Spalten).
StandardBaseline newlyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
color-scheme und light-dark() liefern beide Themes aus einer Regel; Nutzerwahl wird gespeichert.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Komponenten reagieren auf ihren Container statt auf den Viewport. Ziehe den Griff.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Kinder erben das Raster des Elterns, dadurch fluchten Titel, Text und Preis über alle Karten.
StandardBaseline newlyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Ausgeglichene Headline-Zeilen, keine Schusterjungen im Fließtext.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Weiches Scrollen für Anker per CSS; Lenis glättet zusätzlich das Mausrad.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Elemente erscheinen beim Eintritt in den sichtbaren Bereich; ohne JS sind sie immer sichtbar.
Premium / modernChrome + SafariLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Animation an die Scroll-Position gekoppelt, läuft ohne JS auf dem Compositor.
Premium / modernBaseline widelyLive-DemoHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Eine Mondlandschaft in drei Ebenen: beim Scrollen sinkt der Mond hinter die Bergkette, die Berge heben sich leicht, der Vordergrund mit Bäumen am stärksten – so entsteht Tiefe. Regler für Stärke und Tempo, „Flach“ zeigt zum Vergleich das unbewegte Bild, „Nochmal“ startet die Fahrt.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Abschnitte haften oben, während der Inhalt darunter weiterläuft.
Premium / modernChrome + SafariLive-DemoHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Die Sektion bleibt beim Scrollen stehen („gepinnt“), während sich darin eine Geschichte abspielt – wie bei Apple: ein Handy in der Mitte wechselt seine Bildschirme (Speisekarte → Reservierung → Bestätigung), links und rechts erscheinen die passenden Vorteile, Hintergrundfarbe und Fortschritt laufen mit. Beim Start scrollt die Demo einmal selbst.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Horizontale Strecke innerhalb einer vertikalen Seite; hier nativ per Snap und Wischen.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Einrasten auf Abschnitte oder Slides, rein deklarativ.
Award-LevelBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Erzählung in Schritten: Text scrollt, die Grafik links bleibt stehen und wechselt den Zustand.
Award-LevelBaseline widelyLive-DemoEher DesktopIn deinem Browser nicht verfügbar
Bildfolge wird per Scroll „abgespielt“ (Apple-Stil): hier eine Explosionszeichnung eines Geräts in 36 Frames, die die Demo selbst rendert statt Fotos zu laden.
Award-LevelBaseline widelyLive-DemoEher DesktopIn deinem Browser nicht verfügbar
currentTime des Videos folgt der Scroll-Position: Scrollen spult den Drohnenflug vor und zurück, Zeitleiste und Timecode laufen mit. Beim Start spult die Demo einmal von selbst. Wichtig: Video mit dichten Keyframes kodieren (hier alle 8 Bilder), sonst ruckelt das Spulen.
StandardChrome + SafariLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Lesefortschrittsbalken ohne JavaScript.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Hintergrund oder Theme wechselt je nach sichtbarer Sektion.
Premium / modernChrome + SafariLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Das Bild zoomt mit dem Scroll-Fortschritt – hier fährt man beim Scrollen tief in die Gasse hinein, Text blendet aus und am Ende ein. Reines CSS (scroll-timeline); beim Start scrollt die Demo einmal von selbst.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Endloses Laufband aus einer duplizierten Spur, pausierbar.
Award-LevelBaseline widelyLive-DemoHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Skew oder Blur proportional zur Scroll-Geschwindigkeit.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Kleine Rückmeldungen, die eine Seite lebendig machen: Füllung, die mit der Maus mitläuft, Unterstrich, der wächst, Herz mit Partikel-Explosion, Schalter mit Federung, Download-Knopf mit Fortschritt und Haken. Alles auch per Tastatur und Tippen; beim Start führen sich die Elemente einmal selbst vor.
Premium / modernBaseline widelyLive-DemoEher DesktopIn deinem Browser nicht verfügbar
Der Button zieht sich sanft zur Zeigerposition.
Premium / modernBaseline widelyLive-DemoEher DesktopIn deinem Browser nicht verfügbar
Eigener Cursor mit träge nachlaufendem Ring; auf Touch-Geräten deaktiviert.
Premium / modernBaseline widelyLive-DemoHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Ein Lichtkegel folgt dem Zeiger und legt den dunklen Weinkeller frei – darunter dasselbe Foto abgedunkelt, darüber hell mit runder Maske (mask-image + CSS-Variablen). Ohne Maus wandert das Licht von selbst; am Handy folgt es dem Finger.
Premium / modernBaseline widelyLive-DemoHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Beim Überfahren der Einträge schwebt das passende Bild am Zeiger mit, leicht gedreht. Am Handy zeigt Tippen das Bild. Ohne Maus läuft die Liste beim Start einmal von selbst durch.
Premium / modernBaseline widelyLive-DemoHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Karte neigt sich zum Zeiger: Foto, Schrift und Preisschild liegen in verschiedenen Tiefen (translateZ), ein Lichtreflex und der Schatten wandern mit. Ohne Maus bewegt sich die Karte sanft von selbst; am Handy folgt sie dem Finger.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Tippen lässt Wellen wie von einem Wassertropfen durchs Foto laufen – das Bild bricht sich in den Ringen (WebGL-Shader, bis zu 8 Wellen gleichzeitig). Ziehen hinterlässt eine Spur. Ohne Maus fallen die Tropfen von selbst.
Award-LevelBaseline widelyLive-DemoHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Bild oder Text verflüssigt sich unter dem Zeiger wie unter Wasser (hier per SVG-Filter, ohne WebGL). Ruhig: leichtes Wabern, Zeiger drüber oder Tippen: stark.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Feder statt starrer Animation: Die Karte hängt wie an einem Gummiband – wegziehen, loslassen, sie schwingt über das Ziel hinaus und pendelt sich ein, dabei kippt sie leicht mit. So fühlen sich Apps „echt“ an. Beim Start zieht die Demo einmal selbst.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Der Button wird zum Lade-Indikator und dann zum Häkchen.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Eine große Inhaltsfläche lässt sich frei ziehen.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Sortieren per Ziehen: Zeile anfassen, halten, verschieben, loslassen – die Zeile folgt dem Finger, die anderen machen Platz. Tastatur-Alternative: Pfeiltasten.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Wischbare Slides ohne JavaScript-Bibliothek, mit Pfeil-Buttons als Ergänzung.
StandardBaseline newlyLive-DemoHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Kontextinfos ohne Floating-UI-Bibliothek: Popover am Anker positioniert.
Award-LevelBaseline widelyLive-DemoHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Bälle fallen, prallen ab, stoßen sich gegenseitig und rollen aus. Tippen wirft einen neuen Ball, langes Drücken schubst alle an. Ohne Eingabe kommt die Szene zur Ruhe.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Leuchtende Farbspur hinter Zeiger oder Finger, die weich verblasst und nach oben treibt. Farbe wandert mit der Zeit, Strichbreite folgt der Geschwindigkeit. Tap setzt einen Klecks.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Der Browser wählt aus mehreren Bildgrößen die passende; nur die wird geladen. Demo: Slider ändert die Darstellungsbreite, das Bild zeigt selbst, welche Datei der Browser gewählt hat (currentSrc).
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Bilder und iframes laden erst nahe am Viewport. Nie das LCP-Bild lazy laden. Demo: 8 Bilder, Zähler zeigt, wie viele wirklich geladen sind – erst beim Scrollen.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Dasselbe Foto in drei Formaten, gleich gute Qualität: JPEG 65 KB, WebP 42 KB, AVIF 32 KB. Ein <picture>-Element bietet alle an, der Browser nimmt das beste, das er kann – die Karte zeigt, welches dein Browser gewählt hat, und ob er JPEG XL könnte.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Je nach Viewport ein anderer Bildausschnitt (Hochformat auf dem Handy, Panorama am Desktop).
Premium / modernBaseline widelyLive-DemoHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Vollflächiger Hero mit echtem Video: stumm, Autoplay, playsinline, Poster bis es geladen ist, Kinobalken, Titel und Knopf blenden ein; am Ende weich abgeblendet und neu gestartet. Pause-Knopf gehört dazu (Barrierefreiheit). Video lädt erst, wenn die Demo sichtbar wird.
Premium / modernBaseline widelyLive-DemoHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Ein Foto, in dem sich genau eine Sache bewegt: Das Café steht still, nur aus der Kaffeetasse steigt Dampf auf. Demo: Canvas zeichnet den Dampf aus weichen, aufsteigenden Schwaden über das Standbild; echte Version oft als <video loop> oder animiertes AVIF.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Vorher/Nachher-Vergleich, ideal für Handwerk und Renovierung – hier dieselbe Küche vor und nach der Renovierung. Regler ziehen oder tippen, auch per Tastatur. Beim Start fährt der Regler einmal hin und her.
Premium / modernBaseline newlyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Formmasken per clip-path: Die Maske folgt Maus oder Finger wie ein Fenster ins Foto; Tippen verwandelt sie weich vom Kreis zur Raute, aufs ganze Foto und in Schrift (background-clip:text). Hinter der Maske liegt das Foto unscharf und dunkel – so wirkt die Form wie ausgeschnitten.
Award-LevelBaseline widelyLive-DemoEher DesktopIn deinem Browser nicht verfügbar
Zwei Fotos – die Moselschleife am Morgen und bei Nacht – gehen per Shader ineinander über: eine Noise-Karte verzerrt beide gegenläufig, dazu Farbkanten (RGB-Split). Finger/Maus steuert den Übergang, sonst läuft er von allein.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Bild antippen: Großansicht im nativen Dialog mit Fokusfalle, Esc, Backdrop, Pfeiltasten und Wischen zum nächsten Bild.
Premium / modernexperimentellLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Mauerwerk-Raster: Kacheln mit unterschiedlicher Höhe rücken lückenlos zusammen. Der Schalter zeigt den Unterschied zum normalen Raster, „+“ fügt eine Kachel an.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Langsames Zoomen und Schwenken über Standbilder, weich überblendet – mit Fortschrittsbalken und Untertitel wie in einer Story. Nur CSS-Keyframes, keine Bibliothek.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Zweifarbiges Markenbild per Graustufen und Blend-Mode.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Winzige unscharfe Vorschau, dann das scharfe Bild – ohne Layoutsprung.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Perspektive und Wendekarte mit backface-visibility.
Award-LevelBaseline widelyBibliothek lädt nach KlickHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Echtzeit-3D-Szene im Browser. Die Bibliothek lädt erst nach Klick.
Award-LevelBaseline widelyLive-DemoHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Fragment-Shader auf einem Foto: Regentropfen fallen auf die Mosel, jede Welle verzerrt das Bild im Ring und spaltet die Farben leicht auf (bis zu 8 Wellen gleichzeitig, alles auf der Grafikkarte). Ohne Maus regnet es von selbst; Maus bewegen oder tippen macht neue Wellen.
Award-LevelexperimentellLive-DemoEher DesktopIn deinem Browser nicht verfügbar
Next-Gen-GPU-API: 50 000 Partikel werden pro Frame in einem Compute-Shader bewegt und direkt gezeichnet – ohne dass die CPU einen Punkt anfasst. Ohne WebGPU zeigt die Karte einen Canvas-2D-Ersatz.
Award-LevelBaseline widelyBibliothek lädt nach KlickHandy: mit EinschränkungIn deinem Browser nicht verfügbar
GLB-Modell drehen, Animation abspielen, Varianten wählen. Lädt model-viewer und eine eigene 3D-Figur (20 MB) erst nach Klick.
Award-LevelChrome + SafariLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Ein Würfel rotiert mit dem Scroll-Fortschritt, rein in CSS.
Award-LevelBaseline widelyBibliothek lädt nach KlickEher DesktopIn deinem Browser nicht verfügbar
Partikelwolken, die zwischen Formen morphen. Lädt Three.js erst nach Klick.
Premium / modernBaseline widelyLive-DemoHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Ein lebendiges Netz aus rund 170 farbigen Punkten: nahe Punkte verbinden sich mit Linien im Farbverlauf, der Zeiger zieht die Punkte an und verbindet sich mit ihnen, Tippen stößt sie weg. Ohne Maus wandert ein unsichtbarer Zeiger von selbst. Canvas 2D, scharf auf jedem Bildschirm.
Award-LevelBaseline widelyLive-DemoEher DesktopIn deinem Browser nicht verfügbar
Echte Navier-Stokes-Strömung: Geschwindigkeits- und Farbfeld werden jeden Frame advektiert, Druck wird gelöst, Wirbel bleiben erhalten. Finger/Maus rührt Farbe hinein; ohne Berührung gibt die Karte selbst Impulse.
Award-LevelBaseline widelyLive-DemoHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Ein Glaskörper über einem echten Foto (Herbstwald von oben) bricht das Bild wie eine Linse: am Rand stark verzerrt und in Regenbogen-Kanten aufgespalten, in der Mitte vergrößert, dazu Glanzkante und Lichtreflex (Apple-„Liquid Glass“-Stil). Ohne Maus gleitet das Glas von selbst; ziehen verschiebt es.
Award-LevelBaseline widelyLive-DemoHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Ein flaches Foto wird mit einer Tiefenkarte (hell = nah, dunkel = fern) räumlich: die Trauben vorne bewegen sich gegen das Moseltal dahinter – wie die 3D-Fotos bei Facebook/Apple. Ohne Maus schwenkt das Bild von selbst; der Schalter zeigt die Tiefenkarte.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Die Navigation bleibt beim Scrollen oben sichtbar.
StandardBaseline newlyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Menü ohne JavaScript: Popover mit Esc, Light-Dismiss und morphendem Icon.
Premium / modernBaseline newlyLive-DemoHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Mehrspaltiges Untermenü, tastaturbedienbar, ohne Hover-Falle.
Premium / modernBaseline newlyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Vollflächiges Menü: Tipp auf ☰, das Menü blendet über die ganze Fläche ein, die Einträge staffeln sich. Ein-/Ausblenden rein per CSS (@starting-style, transition-behavior).
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Der Header verschwindet beim Runterscrollen und kommt beim Hochscrollen sofort zurück. Spart Platz auf dem Handy, Navigation bleibt erreichbar.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Der aktuell sichtbare Abschnitt wird in der Navigation markiert.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Sprungmarken, deren Ziel nicht unter dem Sticky-Header verschwindet (scroll-margin-top). Demo: Links tippen; Schalter zeigt den Fehler ohne scroll-margin.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Pfadanzeige als geordnete Liste, maschinenlesbar per strukturierten Daten.
Premium / modernBaseline newlyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Animierte DOM-Zustandswechsel: Die Kacheln rotieren alle 3 Sekunden (oder per Knopf) und gleiten dabei an ihren neuen Platz statt zu springen – die blaue Hero-Kachel „morpht“ per view-transition-name.
Premium / modernChrome + SafariLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
MPA-Seitenübergänge ohne JavaScript. Diese Bibliothek hat @view-transition { navigation: auto } gesetzt – ein Reload der Seite über den Link zeigt den Fade.
Premium / modernBaseline newlyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Moderner Router-Unterbau: Links werden abgefangen, nur der Inhalt wird getauscht, die Adresse ändert sich trotzdem. Demo simuliert das mit einer Mini-Adressleiste; Code zeigt die echte Navigation API.
Premium / modernnur ChromiumKonzeptHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Prefetch oder Prerender der wahrscheinlich nächsten Seite. In einer Ein-Datei-Bibliothek nicht vorführbar, daher nur der Code.
Premium / modernBaseline widelyLive-DemoEher DesktopIn deinem Browser nicht verfügbar
Suchbares Befehlsmenü wie in Editoren (⌘K / Strg+K). Schließen: Esc, ✕, Klick daneben oder Befehl wählen.
Premium / modernBaseline newlyLive-DemoHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Milchglas-Karte über der Mosel bei Nacht, das Foto wandert langsam: backdrop-filter verwischt, was dahinter liegt; feiner Verlaufsrand und Lichtkante machen das Glas plastisch. Kontrast prüfen; große Flächen kosten mobil GPU.
Premium / modernBaseline widelyLive-Demo⚠ Kontrast prüfen📱 Bestens für HandyIn deinem Browser nicht verfügbar
Weiche Reliefs aus zwei Schatten. Lehrbeispiel: Kontraste reichen oft nicht für WCAG 1.4.11.
Premium / modernBaseline newlyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Fließende Farbe als lebender Hintergrund: Polarlicht-Vorhänge in Grün, Türkis und Violett wogen über einem Sternenhimmel, darunter leuchtende Mesh-Wolken. Canvas zeichnet jeden Vorhang aus feinen, additiv gemischten Lichtstreifen; Maus oder Finger lenkt das Licht.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Verlaufsrahmen, der sich dreht oder als Lauflicht um die Karte rast. Hier dreht sich eine große Verlaufsfläche hinter einer Maske (läuft überall); elegantere Variante: Winkel per @property animieren.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Leuchtkanten und Neonschrift aus mehreren Schatten.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Filmkorn macht aus einem glatten Digitalfoto einen Kino-Look: rechts liegt über demselben Foto ein flimmerndes Korn (SVG feTurbulence als data-URI, keine Bilddatei), dazu Vignette, warme Farbgebung und leichtes Lichtflackern. Regler ziehen oder tippen verschiebt die Grenze; das Schild der größeren Seite leuchtet. Beim Start fährt er einmal von selbst.
Award-LevelBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Ein Pfad verwandelt sich in einen anderen: Glühbirne → Tasse → Haus → Herz. Jede Form wird in 160 Punkte zerlegt (getPointAtLength bzw. berechnet), die Punkte werden so gedreht, dass sie am kürzesten Weg wandern, dann gleiten sie mit Überschwingen und einem kurzen Wabern in die neue Form. Tippen = nächste Form.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Scroll-gesteuertes Line Drawing: beim Scrollen zeichnet sich Strich für Strich ein Haus – Fundament, Wände, Dach, Fenster, Baum –, am Ende füllt es sich mit Farbe und das Licht geht an. Technik: pathLength=1 + stroke-dashoffset, gekoppelt an den Scroll-Fortschritt. Beim Start scrollt die Demo einmal selbst; ein Hinweis „Scrollen“ bleibt, bis man selbst scrollt.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Icons mit Zustandsanimation (hier: Glocke läutet bei Hover/Fokus).
Premium / modernBaseline widelyBibliothek lädt nach KlickHandy: mit EinschränkungIn deinem Browser nicht verfügbar
After-Effects-Animation als JSON, abgespielt vom lottie-web-Player. Lädt Player und eine eigene Beispiel-Animation (4 KB JSON, selbst gehostet) erst nach Klick; Tippen pausiert.
Award-LevelBaseline widelyBibliothek lädt nach KlickHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Vektor-Animationen mit Zustandsmaschinen, die auf Eingaben reagieren. Lädt Runtime und eine eigene .riv-Datei (0,9 KB, selbst gehostet) erst nach Klick: Ruheanimation läuft, Tippen löst „jump“ aus.
Premium / modernBaseline newlyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Formen fließen ineinander, rein in CSS: clip-path interpoliert zwischen Polygonen mit gleicher Punktzahl (hier 24 Punkte) – Kreis → Stern → Blüte → Blob → Quadrat. Keine SVG-Datei, kein JS. Mit shape() geht dasselbe auch mit Kurven.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Ein Gitter wird zur Landschaft: Wireframe-Berge aus Linien rollen auf dich zu, die Sonne mit Streifen versinkt dahinter, Sterne funkeln, die Straße in der Mitte bleibt frei. Maus oder Finger lenkt den Flug nach links und rechts. Canvas 2D, Perspektive selbst gerechnet.
Award-LevelBaseline widelyLive-DemoHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Zwei generative Stile: „Fäden“ – 900 Partikel folgen einem Rauschfeld wie eine Langzeitbelichtung; „Kreise“ – farbige Kreise wachsen, bis sie sich berühren (Circle Packing). Der Knopf wechselt den Stil, jeder Tap würfelt Seed und Palette neu – kein Bild gleicht dem anderen.
StandardKonzeptKonzept📱 Bestens für HandyIn deinem Browser nicht verfügbar
Prinzipien statt Technik: eine klare Botschaft, ein primärer Handlungsaufruf, das Wichtigste ohne Scrollen.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Der Anruf-/Termin-Button bleibt auf dem Handy immer erreichbar.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Akkordeon ohne JavaScript; gleicher name = nur eins offen.
Premium / modernKonzeptKonzept📱 Bestens für HandyIn deinem Browser nicht verfügbar
Konzept: das Produkt selbst als klickbare Vorschau einbetten statt Screenshots.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Kosten- oder Bedarfsrechner, der sofort rechnet (hier: Preis pro m²).
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Formular in Schritten mit Fortschrittsanzeige; jeder Schritt ein fieldset.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Fehler erst nach der Eingabe anzeigen, verständlich formuliert, ohne JavaScript.
StandardKonzeptKonzept📱 Bestens für HandyIn deinem Browser nicht verfügbar
Siegel, echte Bewertungen, Referenzen, Zahlen. Nur Belegbares zeigen; Bewertungs-Markup nach Google-Richtlinien.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Kundenstimmen als wischbare Karten ohne JavaScript.
Premium / modernKonzeptKonzept📱 Bestens für HandyIn deinem Browser nicht verfügbar
Konzept: Inhalte an Kontext anpassen (Rückkehrer, Herkunft, Interesse), ohne Tracking-Drittanbieter.
Premium / modernKonzeptKonzept📱 Bestens für HandyIn deinem Browser nicht verfügbar
Konzept: Varianten messen statt raten; Trichter von Besuch bis Anfrage auswerten.
Premium / modernBaseline widelyKonzept⚠ Nicht empfohlenEher DesktopIn deinem Browser nicht verfügbar
Nicht empfohlen: auf Touch nicht vorhanden, unterbricht und wirkt wie ein Dark Pattern. Nur zur Kenntnis.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Richtige Elemente statt div-Suppe; hier als Landmark-Visualisierung.
StandardKonzeptKonzept📱 Bestens für HandyIn deinem Browser nicht verfügbar
Rahmenwerk, das jede Karte dieser Bibliothek einhalten soll.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Sichtbarer Fokusring nur bei Tastaturbedienung; Tab-Reihenfolge folgt dem DOM.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Bewegung reduzieren, nicht Inhalte entfernen. Die Karte zeigt deine aktuelle Systemeinstellung.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Die Basis funktioniert immer, Extras nur bei Support. Live-Matrix für deinen Browser:
StandardBaseline newlyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
LCP, INP-Vorstufe und CLS dieser Seite live in deinem Browser.
Premium / modernKonzeptKonzept📱 Bestens für HandyIn deinem Browser nicht verfügbar
Das für den ersten Screen nötige CSS inline, der Rest später. Eine Ein-Datei-Seite erfüllt das per Definition.
Premium / modernKonzeptKonzept📱 Bestens für HandyIn deinem Browser nicht verfügbar
Nur laden, was gebraucht wird. In dieser Bibliothek durch dynamische import()-Aufrufe ersetzt.
StandardBaseline newlyKonzept📱 Bestens für HandyIn deinem Browser nicht verfügbar
LCP-Bild priorisieren, CDN vorverbinden, Schrift vorladen.
StandardBaseline widelyKonzept📱 Bestens für HandyIn deinem Browser nicht verfügbar
Kleine Subsets, kein unsichtbarer Text (FOIT), kein Layoutsprung (size-adjust).
StandardBaseline newlyKonzept📱 Bestens für HandyIn deinem Browser nicht verfügbar
Die _headers-Datei dieser Bibliothek setzt CSP, HSTS und Co. Inline-Skripte nur per Hash.
StandardKonzeptKonzept📱 Bestens für HandyIn deinem Browser nicht verfügbar
Serverseitige Validierung in einer Pages Function, Bot-Schutz mit Turnstile (ohne reCAPTCHA-Cookies).
StandardKonzeptKonzept📱 Bestens für HandyIn deinem Browser nicht verfügbar
Maschinenlesbare Fakten für Google und KI-Suche (LocalBusiness, ItemList, Breadcrumb).
StandardKonzeptKonzept📱 Bestens für HandyIn deinem Browser nicht verfügbar
Canonical, sprechende Titel, Sitemap, robots, indexierbare Inhalte ohne JS-Zwang.
Premium / modernKonzeptKonzept📱 Bestens für HandyIn deinem Browser nicht verfügbar
Statisch (SSG) für Firmensites wie diese Bibliothek; SSR nur bei personalisierten Inhalten.
Premium / modernKonzeptKonzept📱 Bestens für HandyIn deinem Browser nicht verfügbar
Optionale Kurzfassung für KI-Agenten; wichtiger sind semantisches HTML und JSON-LD.
StandardKonzeptKonzept📱 Bestens für HandyIn deinem Browser nicht verfügbar
Reichweite messen ohne Cookies, localStorage oder Fingerprinting; im Pages-Projekt per Klick aktivierbar.
Premium / modernBaseline widelyKonzept📱 Bestens für HandyIn deinem Browser nicht verfügbar
Installierbar und offline-fähig. Der Service Worker braucht eine eigene Datei, passt also nicht in die eine HTML.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Wiederverwendbares Element ohne Framework: <ta-badge> mit eigenem Shadow-Stil.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Keyframes per JavaScript steuern: play, pause, reverse, finished.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Sichtbarkeit beobachten statt scroll-Events: Grundlage für Reveal, Lazy-Logik, Analytics.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Elementgröße beobachten (hier: Box per Griff ziehen).
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Rechenlast vom Main Thread: Primzahlen zählen, ohne dass die Animation daneben stockt.
Award-LevelBaseline widelyKonzeptHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Konzept: native Rechenleistung (Bild-/Videoverarbeitung, Physik, Codecs) im Browser.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Synthese und Effekte im Browser; Panner lässt den Ton wandern.
Award-LevelBaseline widelyLive-DemoHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Visuals reagieren auf Frequenzen; Demo nutzt einen Oszillator statt Mikrofon.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Neigen des Geräts steuert den Effekt; am Desktop ersatzweise die Maus.
Award-LevelexperimentellKonzeptHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Konzept: AR-Produktansicht auf dem Handy (model-viewer schaltet in Android/iOS-AR).
Award-LevelBaseline widelyKonzeptHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Konzept: Handgesten oder Gesicht steuern die Seite. Ein Kamera-Prompt in einer Katalogkarte wäre unangemessen.
Premium / modernChrome + SafariLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Vorlesen per SpeechSynthesis; Spracherkennung läuft bei Chrome über Google-Server (Datenschutzhinweis nötig).
Award-LevelBaseline widelyKonzeptHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Konzept: gemeinsame Cursor oder Editoren über WebSockets, Zustand in einem Durable Object.
Award-LevelexperimentellKonzeptHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Konzept: KI-Suche oder Assistent auf der Site, Aufrufe über Cloudflare Workers AI oder Gemini API serverseitig.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
First–Last–Invert–Play: Layoutwechsel flüssig animieren.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Elemente folgen einer Bahn – rein in CSS (offset-path, offset-rotate:auto): ein Papierflieger dreht einen Looping über der Stadt und zieht einen Kondensstreifen, zwei Vögel folgen versetzt. Die Bahn wird nur einmal definiert; Tippen wirft einen neuen Flieger.
Premium / modernBaseline newlyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Zahlen, die Eindruck machen: ein Walzen-Zählwerk rollt jede Ziffer einzeln mit Nachfedern auf den Umsatz, ein Ring füllt sich auf die Zufriedenheit, die Projekte zählen hoch, und eine Flip-Uhr klappt jede Sekunde um. Startet beim Sichtbarwerden; Tippen spielt erneut ab.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Ein Finanz-Chart, der sich selbst zeichnet: Kurslinie mit Glühen und Farbverlauf, Volumenbalken wachsen gestaffelt, der Endpunkt pulsiert, der Kopf zählt Kurs und Veränderung hoch. Zeitraum 1M / 6M / 1J morpht die Daten weich, das Fadenkreuz folgt der Maus (ohne Maus fährt es selbst). Reines SVG + 60 Zeilen JS.
Premium / modernBaseline newlyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Punkte auf einem Foto öffnen kurze Infos – ideal für Produkte, Räume, Werkstätten. Maus über einen Punkt zeigt genau seine Info; am Handy öffnet Tippen. Ohne Bedienung stellen sich die Punkte nacheinander selbst vor.
Premium / modernBaseline widelyLive-DemoHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Produkt per Ziehen drehen; Demo generiert die 36 Ansichten selbst.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Ein Ladeschirm als Auftritt: Die Buchstaben von thomashilgert.dev fliegen ein, der Balken läuft wie echtes Laden (schnell, stockt kurz, Endspurt), dann öffnet sich ein Vorhang aus Streifen von der Mitte aus und gibt die Startseite frei, deren Zeilen nacheinander aufsteigen. Läuft einmal; Tippen startet neu. Wichtig: nie als künstliche Wartezeit, nur solange wirklich geladen wird.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Platzhalter in Zielform, solange Daten laden; dann blendet der echte Inhalt ohne Layoutsprung ein (kein CLS). Demo: lädt simuliert 1,8 s, „Neu laden“ wiederholt.
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Die Oberfläche reagiert sofort, der Server bestätigt später (oder rollt zurück).
Premium / modernBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Ablauf als Zeitleiste: vier Schritte vom Erstgespräch bis zum Launch, die Linie füllt sich, der aktive Schritt wächst; Tippen springt zu einem Schritt. Zweites Beispiel: senkrechte Chronik zum Scrollen.
Premium / modernBaseline widelyBibliothek lädt nach KlickHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Karte erst nach Klick laden (Datenschutz, Performance); vorher statische Fassade.
Award-LevelBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Endlose, zoombare Fläche wie in Figma oder Miro: ein Moodboard mit Fotos, Notizen und Verbindungslinien. Ziehen verschiebt, Mausrad oder zwei Finger zoomen zum Zeiger hin, die Minikarte zeigt den Ausschnitt. Plus/Minus und „Alles“ helfen beim Zurechtfinden.
StandardBaseline newlyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Top-Layer-Overlays mit Light-Dismiss und Esc, ganz ohne JavaScript.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Modale mit Fokusfalle, Esc, ::backdrop und Formular-Methode dialog.
Premium / modernBaseline newlyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Elemente an andere Elemente koppeln, mit automatischem Ausweichen (position-try-fallbacks).
Premium / modernBaseline newlyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Einblend-Animationen aus display: none heraus, rein in CSS.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Farben im Browser mischen: Hover-Töne und Tints aus einer Markenfarbe.
StandardBaseline newlyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Wahrnehmungsgleiche Paletten aus einer Markenfarbe; Hue drehen, Helligkeit halten.
Premium / modernBaseline newlyLive-DemoHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Der Browser wählt automatisch schwarzen oder weißen Text zur Hintergrundfarbe.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Eltern- und Zustandsselektor, der viel JavaScript überflüssig macht.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Verschachtelte Regeln ohne Präprozessor.
StandardBaseline widelyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Kaskaden-Ebenen: Reihenfolge der Ebenen schlägt Spezifität.
Premium / modernBaseline newlyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Styles auf einen Teilbaum begrenzen, mit unterer Grenze (Donut-Scope).
Premium / modernBaseline newlyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Textarea und Inputs wachsen mit dem Inhalt, ohne JavaScript.
Premium / modernnur ChromiumLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Animation zu height: auto. Fallback-Variante mit Grid läuft überall.
Premium / modernBaseline newlyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Typisierte Custom Properties, die der Browser animieren kann (hier: ein Verlaufswinkel).
Premium / modernBaseline newlyLive-Demo📱 Bestens für HandyIn deinem Browser nicht verfügbar
Buttons steuern Dialog und Popover deklarativ, ohne Event-Listener.
Premium / modernnur ChromiumLive-DemoHandy: mit EinschränkungIn deinem Browser nicht verfügbar
Voll stylebares Select mit Rich Content in den Optionen.
Variable Weight
Werkstatt der Typografie: Spaltensatz, eine gesetzte Initiale und sauberer Blocksatz lassen eine Seite wie ein Magazin wirken. Ligaturen und Silbentrennung erledigt der Browser, wenn man ihn lässt.
…▌
ICH BAUEWebdesign
…

Morgensonne fällt durchs Fenster, Holzstaub tanzt im Strahl, Hobel und Beitel liegen bereit. Handwerk, ehrlich gezeigt.
01 — Serie HandwerkInhalt in der Lesebreite
Full-Bleed-Band über die volle Breite
Weiter in der Lesebreite


scroll ↓…
…
…
…
…
…
Gerichte mit Fotos, Preise aktuell.
Uhrzeit tippen, fertig – ohne Anruf.
Bestätigung aufs Handy, Erinnerung am Tag.
Flat White3,60
Brot & Butter4,90
Quiche8,50
Schritt 1: ein Quadrat
Schritt 2: wird zum Kreis
Schritt 3: dreht und wächst
Scrollen = spulenScroll ↓ – der Balken oben zeigt den Fortschritt.
…
…
Ende.
SCHNELL
SCROLLEN
VERZERRT
DIE
ZEILEN
↓
…
INS WASSER TIPPENIm echten Code reicht loading="lazy" am <img>; der Browser lädt dann selbst erst in Viewport-Nähe.
JPEG65 KB
WebP42 KB
AVIF32 KB
Video · stumm · Autoplay
Echtes Video im Hintergrund – leise, ruhig, mit Poster.
Mehr erfahren →
Standbild – nur der Kaffee dampft
VorherNachher

GLSL · Tippen oder Maus bewegen = Welle
Liquid Glass

scroll ↓
…
…
👆 Tippe auf „Leistungen ▾“ – das Untermenü klappt unter dem Button auf.
Beim Runterscrollen rutscht der Header nach oben weg. Scroll kurz hoch ↑ und er ist sofort wieder da.
So bleibt auf dem Handy mehr Platz für Inhalt, ohne dass die Navigation unerreichbar wird.
Technik: Scrollrichtung vergleichen, ab 20 px Scrollweg eine Klasse setzen, der Rest ist eine CSS-Transition.
Noch ein Absatz, damit genug zum Scrollen da ist.
Und noch einer. Jetzt wieder hoch ↑.
Sticky-Header oben. Tippe einen Link: Die Überschrift landet sichtbar unter dem Header.
Websites, Apps, Beratung. Ohne scroll-margin-top würde diese Überschrift unter dem Header liegen.
Trier erleben, Handschrift-Studio, Web Techniques Lab.
thomashilgert.dev
@view-transition { navigation: auto; }
::view-transition-old(root) { animation: fade-out .3s }
::view-transition-new(root) { animation: fade-in .3s }▶ Seitenwechsel mit Übergang ansehen<script type="speculationrules">
{ "prerender": [{ "where": { "href_matches": "/*" },
"eagerness": "moderate" }] }
</script>
// Support: prüfe …Vorgehen: 1 Botschaft pro Screen · 1 primärer CTA (Kontrast, Verb, Nutzen) · Telefon und Kontakt above the fold · sekundäre Links leiser · Lesefluss F- oder Z-Muster prüfen.
Ab … €, je nach Umfang.
Meist 2–4 Wochen.
Ja, auf Wunsch.
Umsetzung: Sandbox-Modus des Produkts, geführte Tour mit 3–5 Hotspots (siehe 11.5), Fortschrittsanzeige, am Ende ein CTA. Keine Drittanbieter-Tour-Tools nötig: Popover + Anchor Positioning reichen.
Bausteine: Kundenlogos, Zitate mit Name und Firma, Zahlen (Projekte, Jahre), Google-Bewertungen per Link statt kopiert, Zertifikate. Keine erfundenen Testimonials – rechtlich und für das Vertrauen fatal.
Leichtgewichtig: localStorage merkt sich die zuletzt angesehene Leistung und hebt sie beim nächsten Besuch hervor; Cloudflare Worker kann nach Region ausliefern. Kein Fingerprinting, keine Cookies ohne Einwilligung.
Ohne Drittanbieter: Cloudflare Worker weist Variante A/B per Cookie-freiem Hash zu, Cloudflare Web Analytics zählt Ereignisse. Erst ab einigen hundert Besuchen pro Variante aussagekräftig.
Warum nicht: Auf dem Handy gibt es keinen Mauszeiger, der die Seite verlässt. Popups beim Verlassen senken Vertrauen und können als aggressive Werbung gewertet werden. Besser: sichtbarer Nutzen und ein ruhiger CTA (8.2).
Kurz-Checkliste: Kontrast ≥ 4,5:1 · sichtbarer Fokus · Ziele ≥ 24 px · keine Tastaturfallen · Bewegung pausierbar · Formularfehler benannt · Alt-Texte · Überschriften-Hierarchie · Sprache gesetzt · kein Inhalt nur über Farbe.
Systemeinstellung: prüfe …
<head>
<style>/* nur Above-the-Fold-Regeln */</style>
<link rel="preload" href="rest.css" as="style"
onload="this.rel='stylesheet'">
</head>// statt alles vorab:
import * as THREE from 'three';
// erst bei Bedarf:
button.onclick = async () => {
const THREE = await import('three');
…
};<link rel="preconnect" href="https://cdn.jsdelivr.net"> <link rel="preload" href="font.woff2" as="font" type="font/woff2" crossorigin> <img src="hero.avif" fetchpriority="high" width="1600" height="900" alt="…"> <img src="later.avif" loading="lazy" fetchpriority="low" …>
@font-face {
font-family: "Marke";
src: url(marke-latin.woff2) format("woff2");
unicode-range: U+0000-00FF, U+0131, U+0152-0153;
font-display: swap;
size-adjust: 104%; ascent-override: 92%;
}/* Content-Security-Policy: default-src 'self'; script-src 'self' 'sha256-…' https://cdn.jsdelivr.net https://static.cloudflareinsights.com; … Strict-Transport-Security: max-age=63072000; includeSubDomains; preload X-Content-Type-Options: nosniff Referrer-Policy: strict-origin-when-cross-origin Permissions-Policy: camera=(), microphone=(), geolocation=()
// functions/kontakt.js
export async function onRequestPost({ request, env }) {
const f = await request.formData();
const ok = await verifyTurnstile(f.get('cf-turnstile-response'), env);
if (!ok || !/^[^@]+@[^@]+$/.test(f.get('email'))) return new Response('Ungültig', { status: 400 });
// … Mail über Gmail-API / Speicherung in KV
return Response.redirect('/danke', 303);
}{
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": "Thomas Hilgert – thomashilgert.dev",
"address": { "@type": "PostalAddress", "addressLocality": "Trier" },
"url": "https://thomashilgert.dev",
"areaServed": "Trier"
}<title>Webdesign Trier – thomashilgert.dev</title> <meta name="description" content="…"> <link rel="canonical" href="https://thomashilgert.dev/"> <meta property="og:title" content="…"> <html lang="de"> /sitemap.xml · /robots.txt · saubere 404
Regel: Statisches HTML auf Cloudflare Pages ist am schnellsten, sichersten und billigsten. Serverseitiges Rendering (Workers) nur, wenn Inhalte pro Nutzer oder pro Sekunde wechseln.
# thomashilgert.dev > Webdesign und Apps aus Trier. ## Leistungen - [Webdesign](/leistungen/webdesign): … - [Apps](/leistungen/apps): … ## Kontakt - [Kontakt](/kontakt)
So: Cloudflare Dashboard → Pages-Projekt → Metrics → Web Analytics aktivieren. Das Snippet kommt beim nächsten Deploy automatisch. Kein Consent-Banner nötig, weil keine Daten im Browser abgelegt werden.
// sw.js
self.addEventListener('install', e => e.waitUntil(
caches.open('v1').then(c => c.addAll(['/', '/index.html']))));
self.addEventListener('fetch', e => e.respondWith(
caches.match(e.request).then(r => r || fetch(e.request))));
// index.html
navigator.serviceWorker.register('/sw.js');
<link rel="manifest" href="/manifest.webmanifest">sichtbar: 0
const { instance } = await WebAssembly.instantiateStreaming(
fetch('modul.wasm'), imports);
instance.exports.berechne(…);
// Typische Quellen: Rust (wasm-pack), C/C++ (Emscripten), AssemblyScript<model-viewer src="produkt.glb" ios-src="produkt.usdz" ar ar-modes="webxr scene-viewer quick-look" camera-controls alt="Produkt"></model-viewer>
const stream = await navigator.mediaDevices.getUserMedia({ video: true });
// + MediaPipe Hands / FaceLandmarker (Google)
// Nur nach klarer Erklärung und Klick, nie automatisch.// Worker
export class Raum {
fetch(req) { const [a, b] = Object.values(new WebSocketPair());
b.accept(); this.clients.add(b); … return new Response(null, { status: 101, webSocket: a }); }
}
// Browser
const ws = new WebSocket('wss://…/raum/1');// Pages Function → Workers AI
const r = await env.AI.run('@cf/meta/llama-3.1-8b-instruct', {
messages: [{ role: 'user', content: frage }]
});
// Schlüssel bleiben im Worker, nie im Browser.Mein Labor für Websites und Experimente – gebaut mit den besten KI-Modellen.
Websites & Apps aus Trier. Der Inhalt kam genau in die Form, die der Platzhalter freigehalten hat.
.card { & h4 { … } &:hover { … } }
kein Sass nötigDieser Inhalt hat eine unbekannte Höhe. Mit interpolate-size: allow-keywords animiert der Browser trotzdem weich.