Wie lassen sich präzise Hover-Effekte auf unregelmäßig geformten (trapezförmigen) Trichter-Segmenten realisieren?
Die Umsetzung präziser Hover-Effekte auf trapezförmigen Flächen ist eine klassische Herausforderung im Webdesign, da das Standard-Box-Modell von CSS immer rechteckig ist.
Hier sind die drei besten Methoden, um dies umzusetzen – sortiert von „hochpräzise“ bis „modern & einfach“.
1. Die Königslösung: SVG (Scalable Vector Graphics)
SVGs sind für unregelmäßige Formen prädestiniert. Das Besondere: Der Hover-Zustand wird bei einem <path> oder <polygon> nur auf der tatsächlich gezeichneten Fläche ausgelöst, nicht auf dem umschließenden Rechteck.
Vorteile:
- Absolute Präzision.
- Perfekt responsiv.
- Einfaches Styling via CSS.
Code-Beispiel:
<svg viewBox="0 0 400 150" class="funnel">
<!-- Oberes Segment (Trapez) -->
<path d="M0,0 L400,0 L350,50 L50,50 Z" class="segment" />
<!-- Mittleres Segment (Trapez) -->
<path d="M50,55 L350,55 L300,105 L100,105 Z" class="segment" />
</svg>
<style>
.segment {
fill: #3498db;
transition: fill 0.3s, transform 0.3s;
cursor: pointer;
}
.segment:hover {
fill: #2980b9;
transform: scale(1.02);
transform-origin: center;
}
</style>
2. Die moderne CSS-Lösung: clip-path
Mit der CSS-Eigenschaft clip-path kannst du ein normales div in eine Trapezform schneiden. Moderne Browser (Chrome, Firefox, Safari, Edge) unterstützen die Interaktion so, dass der Hover-Effekt nur innerhalb der Schnittmaske reagiert.
Vorteile:
- Du arbeitest mit normalen HTML-Elementen (gut für Text-Inhalt).
- Einfache Syntax.
Code-Beispiel:
<div class="trapezoid">Segment 1</div>
<style>
.trapezoid {
width: 400px;
height: 100px;
background: #e74c3c;
/* Erzeugt ein Trapez: oben breit, unten schmal */
clip-path: polygon(0% 0%, 100% 0%, 80% 100%, 20% 100%);
transition: background 0.3s;
display: flex;
align-items: center;
justify-content: center;
color: white;
}
.trapezoid:hover {
background: #c0392b;
cursor: pointer;
}
</style>
3. Der "Old School" Trick: CSS Transforms (Skew)
Bevor es clip-path gab, nutzte man transform: skew(). Dies ist jedoch für Trichter-Segmente sehr kompliziert, da man zwei gegenüberliegende Skews kombinieren muss, um ein gleichschenkliges Trapez zu erhalten.
Nachteil: Die Hitbox (der Hover-Bereich) ist oft unsauber, und die Text-Ausrichtung innerhalb des verzerrten Containers ist mühsam. Nicht empfohlen für präzise Trichter.
Profi-Tipps für die Umsetzung:
- Abstände (Gaps): Bei Trichtern liegen die Segmente oft direkt übereinander. Wenn du
clip-pathnutzt, achte darauf, dass sich die Polygone nicht überlappen, da sonst der Hover-Effekt des oberen Elements das untere verdecken könnte. Nutze kleine Abstände in den Koordinaten (z. B. 0-48% und 52-100%). - Filter & Schatten: Ein Problem bei
clip-pathist, dassbox-shadowmit abgeschnitten wird. Um einen Schatten auf ein Trapez zu werfen, musst dufilter: drop-shadow(...)auf das Eltern-Element anwenden. - Tooltips: Wenn du Tooltips beim Hover anzeigen willst, platziere diese außerhalb des geclippten Bereichs oder nutze ein übergeordnetes Container-Element, da
clip-pathalles außerhalb der Form radikal abschneidet.
Welche Methode wählen?
- Wenn der Trichter Teil einer Datenvisualisierung ist oder sehr komplexe Formen hat: SVG.
- Wenn du einfach nur 3-4 Kacheln untereinander in Trapezform anordnen willst, in denen Text steht: CSS
clip-path.