Menüs mit „Dynamischen Treffer bereichen“

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

Flyout-Menüs! Sobald Sie ein Menü implementieren müssen, das ein Hover-Ereignis verwendet, um weitere Menüpunkte anzuzeigen, geraten Sie in kniffliges Terrain. Zum einen sollten sie auch mit Klicks und Taps funktionieren. Ohne dies haben Sie das Menü für alle, die keine Maus haben, unbrauchbar gemacht. Das bedeutet nicht, dass Sie :hover nicht *auch* verwenden können. Wenn Sie einen Hover-Zustand verwenden, um weitere Inhalte anzuzeigen, bedeutet dies, dass ein *nicht*-Hover-Zustand diese ausblenden muss. Darin liegt das Problem.

Das Problem ist, dass, wenn ein Untermenü beim Hovern irgendwo auftaucht, das Überfahren mit der Maus das Bewegen durch einen ziemlich schmalen Korridor erfordern kann. Wenn Sie versehentlich diesen Bereich verlassen, kann sich das Menü schließen, und das kann ein extrem frustrierendes UX-Erlebnis sein.

Wir haben dies bereits in unserem Artikel „Dropdown-Menüs mit fehlerverzeihenderen Mausbewegungspfaden“ behandelt.

Sie können den gewünschten Menüpunkt erreichen, aber es gibt auf dem Weg einige enge Passagen.
Viele Dropdowns sind so gestaltet, dass das Untermenü, in dem sich der gewünschte Menüpunkt befindet, sich schließen kann, wenn der richtige Bereich nicht in :hover ist, oder wenn ein mouseleave- oder ein mouseout-Ereignis auftritt.

Die überzeugendsten Beispiele, die dieses Problem lösen, sind diejenigen, die zusätzliche versteckte „Trefferbereiche“ beinhalten. Amazon hat solche Menüs eigentlich nicht mehr (soweit ich sehen kann), und vielleicht ist dies einer der Gründe dafür. Aber in der Vergangenheit haben sie diese Trefferbereich-Technik verwendet. Wir könnten sie „dynamische Trefferbereiche“ nennen, da sie basierend auf der Position des übergeordneten Elements und der Untermenüs gezeichnet wurden.

Ich habe in letzter Zeit nicht viele Implementierungen davon gesehen, aber erst kürzlich hat Hakim El Hattab eine moderne Implementierung davon in seinem Vortrag bei der CSS Day 2019 aufgenommen. Die Implementierung nutzt das dynamische Zeichnen der Bereiche mit SVG. Man sieht die Trefferbereiche nicht wirklich, aber sie sehen so aus und bilden somit Pfade, die Hover-Abbrüche verhindern.

Ich werde hier einen YouTube-Embed des Vortrags einfügen, der an diesem Punkt beginnt.

Die Art und Weise, wie er den Trefferbereich zeichnet, ist so raffiniert, dass es mich auf vielfältige Weise glücklich macht.

Die Live-Demo davon ist im Slides.com Pattern Library Dingens verfügbar.