OK, was ich brauche, ist ziemlich einfach.
Ich habe eine Navigationsleiste mit einigen Dropdown-Menüs eingerichtet (mit class="dropdown-toggle" data-toggle="dropdown"
), und sie funktioniert einwandfrei .
Die Sache ist, es funktioniert " onClick
", während ich es vorziehen würde, wenn es " onHover
" funktioniert .
Gibt es eine eingebaute Möglichkeit, dies zu tun?
javascript
jquery
html
css
twitter-bootstrap
Dr.Kameleon
quelle
quelle
Antworten:
Die einfachste Lösung wäre CSS. Fügen Sie etwas hinzu wie ...
Geige arbeiten
quelle
data-toggle
Attribut entfernen , damit das übergeordnete Element anklickbar ist ... Achten Sie auf Kollateralschäden auf mobilen Bildschirmen.Der beste Weg, dies zu tun, besteht darin, das Bootstraps-Klickereignis mit einem Hover auszulösen. Auf diese Weise sollte es weiterhin berührungsgerätefreundlich bleiben
quelle
Sie können die Schwebefunktion von jQuery verwenden.
Sie müssen nur die Klasse hinzufügen
open
wenn die Maus eintritt, und die Klasse entfernen, wenn die Maus das Dropdown-Menü verlässt.Hier ist mein Code:
quelle
show
stattdessen Folgendes verwendenopen
und auch Folgendes einschließendropdown-menu
:$('.dropdown').hover(function() { $(this).addClass('show'); $(this).find('.dropdown-menu').addClass('show');}, function() {$(this).removeClass('show'); $(this).find('.dropdown-menu').removeClass('show');});
(Entschuldigung für die Formatierung.)Ein einfacher Weg, jQuery zu verwenden, ist folgender:
quelle
.first()
-$(this).find('.dropdown-menu').first().stop(true, true).delay(200).fadeIn(200);
...Für CSS wird es verrückt, wenn Sie auch darauf klicken. Dies ist der Code, den ich verwende. Er ändert auch nichts für die mobile Ansicht.
quelle
In Twitter ist Bootstrap nicht implementiert, aber Sie können dieses Plugin verwenden
Update 1:
Gleiche Frage hier
quelle
Bewegen Sie den Mauszeiger über die Navigationselemente, um zu sehen, dass sie beim Schweben aktiviert werden. http://cameronspear.com/demos/twitter-bootstrap-hover-dropdown/#
quelle
Sie haben also diesen Code:
Normalerweise funktioniert es bei einem Klickereignis, und Sie möchten, dass es bei einem Schwebeereignis funktioniert. Dies ist sehr einfach, verwenden Sie einfach diesen Javascript / JQuery-Code:
Das funktioniert sehr gut und hier ist die Erklärung: Wir haben eine Schaltfläche und ein Menü. Wenn wir mit der Maus über die Schaltfläche fahren, wird das Menü angezeigt, und wenn wir mit der Maus über die Schaltfläche fahren, wird das Menü nach 100 ms ausgeblendet. Wenn Sie sich fragen, warum ich das benutze, brauchen Sie Zeit, um den Cursor von der Schaltfläche über das Menü zu ziehen. Wenn Sie im Menü sind, wird die Zeit zurückgesetzt und Sie können so oft dort bleiben, wie Sie möchten. Wenn Sie das Menü verlassen, wird das Menü sofort ohne Zeitüberschreitung ausgeblendet.
Ich habe diesen Code in vielen Projekten verwendet. Wenn Sie Probleme bei der Verwendung haben, können Sie mir gerne Fragen stellen.
quelle
Dies ist, was ich benutze, um es mit etwas jQuery beim Hover zum Dropdown zu bringen
quelle
Versuchen Sie dies mit der Hover-Funktion bei Fadein-Fadeout-Animationen
quelle
Auf diese Weise können Sie Ihre eigene Hover-Klasse für Bootstrap erstellen:
CSS:
Die Ränder werden so eingestellt, dass ein unerwünschtes Schließen vermieden wird. Sie sind optional.
HTML:
Vergessen Sie nicht, das Schaltflächenattribut data-toggle = "dropdown" zu entfernen, wenn Sie onclick open entfernen möchten. Dies funktioniert auch, wenn die Eingabe mit einem Dropdown angehängt wird.
quelle
Dadurch wird die Navigationsleiste nur angezeigt, wenn Sie sich nicht auf einem mobilen Gerät befinden, da ich finde, dass das Bewegen der Navigation auf mobilen Geräten nicht gut funktioniert:
quelle
Ich probiere andere Lösungen aus, ich verwende Bootstrap 3, aber das Dropdown-Menü wird zu schnell geschlossen, um darüber zu wechseln
Angenommen, Sie fügen li class = "dropdown" hinzu, ich habe eine Zeitüberschreitung hinzugefügt
quelle
Aktualisiert mit einem richtigen Plugin
Ich habe ein geeignetes Plugin für die Dropdown-Hover-Funktion veröffentlicht, in dem Sie sogar definieren können, was passiert, wenn Sie auf klicken
dropdown-toggle
Element :https://github.com/istvan-ujjmeszaros/bootstrap-dropdown-hover
Warum habe ich es geschafft, wenn es schon viele Lösungen gibt?
Ich hatte Probleme mit allen zuvor vorhandenen Lösungen. Die einfachen CSS verwenden die
.open
Klasse für das nicht.dropdown
, daher gibt es keine Rückmeldung zum Dropdown-Umschaltelement, wenn das Dropdown sichtbar ist.Die js stören das Klicken auf
.dropdown-toggle
, so dass das Dropdown beim Hover angezeigt wird und beim Klicken auf ein geöffnetes Dropdown ausgeblendet wird. Wenn Sie die Maus herausziehen, wird das Dropdown erneut angezeigt. Einige der js-Lösungen bremsen die iOS-Kompatibilität, andere Plugins funktionieren nicht in modernen Desktop-Browsern, die Touch-Ereignisse unterstützen.Aus diesem Grund habe ich das Bootstrap Dropdown Hover- Plugin erstellt, das all diese Probleme verhindert, indem nur die Standard-Bootstrap-Javascript-API ohne Hack verwendet wird.
quelle
quelle
Das Auslösen eines
click
Ereignisses mit ahover
hat einen kleinen Fehler. Wennmouse-in
und dannclick
erzeugt ein umgekehrter Effekt. Esopens
wannmouse-out
undclose
wannmouse-in
. Eine bessere Lösung:quelle
html
jquery
Codepen
quelle
Die von mir vorgeschlagene Lösung erkennt, ob das Gerät nicht berührt wird und dass das
navbar-toggle
(Hamburger-Menü) nicht sichtbar ist, und lässt das übergeordnete Menüelement beim Schweben das Untermenü anzeigen und folgt dem Link beim Klicken .Macht auch den Rand nach oben, da die Lücke zwischen der Navigationsleiste und dem Menü in einigen Browsern Sie nicht zu den Unterelementen schweben lässt
quelle
Dropdown-Menü "Bootstrap" Arbeiten Sie am Hover und bleiben Sie beim Klicken geschlossen, indem Sie die Eigenschaftsanzeige hinzufügen : block; in CSS und Entfernen dieser Attribute data-toggle = "dropdown" role = "button" aus dem Button-Tag
quelle