M291 · LU05b
Hover über die Elemente
Demo 1
↓ Hover
.box { background-color: steelblue; transition: background-color 600ms ease-in-out; } .box:hover { background-color: tomato; }
Demo 2
↓ Hover
/* transform ändert kein Layout → sehr performant */ .box { transition: transform 400ms ease-out; } .box:hover { transform: scale(1.4); }
Demo 3
↓ Hover
/* cubic-bezier → Überschwing */ .box { transition: transform 500ms cubic-bezier(.34,1.56,.64,1); } .box:hover { transform: translateY(-36px) rotate(15deg); }
Demo 4
↓ Hover
/* Element bleibt im Layout – nur unsichtbar */ .box { transition: opacity 700ms ease-in-out; } .box:hover { opacity: 0.1; }
Demo 5
↓ Hover
.box { transition: background-color 400ms ease-in-out, border-color 400ms ease-in-out, transform 400ms ease-in-out, border-radius 400ms ease-in-out; } .box:hover { background-color: yellow; border-color: yellow; transform: rotate(45deg); border-radius: 50%; }
Demo 6
↓ Hover
/* Nur zwischen zwei fixen Werten animierbar – nicht zu «auto» */ .bar { width: 40%; overflow: hidden; transition: width 600ms ease-in-out; } .bar:hover { width: 100%; }
Demo 7
↓ Hover über eine Zeile
/* Alle bewegen sich gleich weit in gleicher Zeit */ .dot-ease { transition: left 1200ms ease; } .dot-ease-in { transition: left 1200ms ease-in; } .dot-ease-out { transition: left 1200ms ease-out; } .dot-linear { transition: left 1200ms linear; } .dot-bounce { transition: left 1200ms cubic-bezier(.34,1.56,.64,1); }
Demo 8 · Chrome/Edge only (Stand 2026)
↓ Klick
/* Einmal global setzen */ :root { interpolate-size: allow-keywords; } .panel { height: 0; opacity: 0; overflow: hidden; transition: height 500ms ease-in-out, opacity 500ms ease-in-out; } .panel.open { height: auto; /* ✅ */ opacity: 1; }
Welcher Zustand löst die Transition aus? — Jedes Beispiel hat live-editierbare Regler für duration, easing und delay.
Demo 9 · Trigger
↓ Hover
Transition anpassen
.pill { transition: background-color 300ms ease 0ms; } .pill:hover { background: steelblue; color: #000; transform: translateY(-5px); }
Demo 10 · Trigger
↓ Klick ins Feld oder Tab-Taste
Tab-Taste wechselt Felder
Transition anpassen
input { border: 2px solid #333; outline: none; transition: border-color 400ms ease 0ms, box-shadow 400ms ease 0ms; } input:focus { border-color: yellow; box-shadow: 0 0 0 4px rgba(yellow, .15); }
Demo 11 · Trigger
↓ In ein Feld klicken
Transition anpassen
/* Eltern-Element reagiert, wenn ein Kind fokussiert ist */ .card { border: 2px solid #333; transition: border-color 400ms ease 0ms; } .card:focus-within { border-color: steelblue; box-shadow: 0 0 0 4px rgba(steelblue,.12); }
Demo 12 · Trigger
↓ Maustaste gedrückt halten
Transition anpassen
/* Feuert nur solange die Maustaste gedrückt ist */ .btn { box-shadow: 0 6px 0 #8b1818; transition: transform 100ms ease 0ms, box-shadow 100ms ease 0ms; } .btn:active { transform: translateY(5px); box-shadow: 0 1px 0 #8b1818; }
Demo 13 · Trigger
↓ Link klicken → URL-Hash ändert sich
Transition anpassen
/* URL: seite.html#tgt-a → Element mit id="tgt-a" wird zum :target */ .section { border: 2px solid #333; transition: border-color 500ms ease 0ms; } .section:target { border-color: yellow; background: rgba(yellow,.06); } /* HTML */ <a href="#tgt-a">Link</a> <div id="tgt-a">…</div>