Aktivieren Sie das Menü nur durch Klicken auf die Elemente

8

Auf meiner Website habe ich ein Menü mit bestimmten Funktionen und Animationen:

  • Beim Maus-Rollover ändert sich die Deckkraft für alle Elemente des Menüs, mit Ausnahme der oben genannten.
  • Wenn Sie auf ein Element klicken, wird es markiert, indem die Farbe beibehalten und die Deckkraft der nicht angeklickten Elemente reduziert wird.

Jetzt funktionieren diese Funktionen gut, aber das Problem ist, dass sie alle aktiviert werden können, indem Sie im Menü und darüber und nicht nur auf den Elementen klicken. Kann es behoben werden, so dass alle Funktionen (ohne sie zu ändern) durch Klicken auf ein Element im Menü aktiviert werden?

JSFIDDLE: Ссылка

HTML des Menüs:

%Vor%     
mikeb 04.07.2015, 10:05
quelle

4 Antworten

1

Ich habe auch ein Update für deine Fiddle gemacht:

  

aktualisierte Fiddle

Meine Lösung bestand darin, den click-event-handler für die <LI> -Elemente zu entfernen und durch click- und Hover-Events für die Schaltflächen zu ersetzen:

Es sind nur zwei minimale Änderungen an Ihrem CSS erforderlich.

Der Vorteil dieser Lösung (anstatt sich auf .headlines: hover-selector zu verlassen) besteht darin, dass Ihre Schaltflächen unterschiedliche Größen und Abstände zwischen ihnen haben können. Der Bereich, der zum Auslösen der Hover-Stile verwendet wird, ist immer der Button-Bereich und nicht die Größe des umgebenden <li>

%Vor%

Dies fügt hinzu und entfernt .hover Klassen in .headlines und Ihre Schaltflächen übergeordnete <li> Elemente.

In Ihrem CSS müssen Sie nur im Auswahlqualifikator von :hover pseudo-selector auf .hover class wechseln.

Also wechseln Sie von:

%Vor%

bis

%Vor%

Voila.

    
wolfflow 06.07.2015, 13:29
quelle
1

Versuchen Sie einfach, Ereignishandler direkt zu Schaltflächen hinzuzufügen und nicht <li> elements:

%Vor%     
Fabjan 06.07.2015 11:02
quelle
1

Sieh dir diese Geige an, es sieht so aus, als wäre das Problem in deinem CSS:

%Vor%

Wegen dieser Regel wurden Ihre li-Elemente nach unten verschoben, aber in css ausgelöst, ausgelöst durch .headlines (ul-Element), deren Position 180px höher bleibt, als ihre untergeordneten Elemente, so dass Sie die Opazität ändern, wenn die Maus höher als Ihr Menü ist Artikel. Und Ihre ul Element Breite war 100%, ihre Kinder li Elemente Breite war die gleiche (ohne Margen), so ändert sich Ihre Opazität auch, wenn die Maus von links oder rechts von Ihrem eigentlichen Text des Menüs war.

    
dajnz 06.07.2015 12:25
quelle
0

Hier ist die ordinierte Geige:

%Vor%

Dies liegt daran, dass Sie das li-Element für alle Ereignisse (click und hover) in script und css anvisieren. Ändern Sie stattdessen Ihre CSS-Ziel-Schaltfläche. Ändern Sie die Deckkraft für die Schaltfläche. Geben Sie das: Hover-Styling für Schaltflächen und nicht für li. Außerdem benötigen Sie keinen Zeiger, sondern die Tasten.

    
King Size 06.07.2015 12:03
quelle

Tags und Links