Ich verwende Bootstrap und möchte einem Dropdown-Menü eine Animation hinzufügen. Ich möchte eine Animation hinzufügen, beim Verlassen nach unten und wieder nach oben schieben. Wie könnte ich das machen?
Dinge, die ich versucht habe:
Ändern Sie die Js-Dropdown-Datei wie folgt:
javascript
drop-down-menu
twitter-bootstrap
Ben Beri
quelle
quelle
Antworten:
Wenn Sie auf Bootstrap 3 (BS3) aktualisieren, werden viele Javascript-Ereignisse angezeigt, mit denen Sie die gewünschte Funktionalität verknüpfen können. In BS3 gibt dieser Code allen Dropdown-Menüs den gewünschten Animationseffekt:
Sie können über BS3 Ereignisse lesen hier und speziell über die Drop - Down - Ereignisse hier .
quelle
hidden.bs.dropdown
Ereignis verarbeitet.Sie können auch die Verwendung von JavaScript für Dropdown-Effekte vermeiden und den CSS3-Übergang verwenden, indem Sie Ihrem Stil diesen kleinen Code hinzufügen:
Das einzige Problem auf diese Weise ist, dass Sie die maximale Höhe manuell angeben sollten. Wenn Sie einen sehr großen Wert festlegen, ist Ihre Animation sehr schnell.
Es funktioniert wie ein Zauber, wenn Sie die ungefähre Höhe Ihrer Dropdowns kennen. Andernfalls können Sie weiterhin Javascript verwenden, um einen genauen Wert für die maximale Höhe festzulegen.
Hier ein kleines Beispiel: DEMO
! In dieser Lösung gibt es einen kleinen Fehler beim Auffüllen. Überprüfen Sie den Kommentar von Jacob Stamm mit der Lösung.
quelle
Ich mache so etwas, aber beim Schweben statt beim Klicken. Dies ist der Code, den ich verwende. Möglicherweise können Sie ihn ein wenig optimieren, damit er beim Klicken funktioniert
quelle
<script>
Tags hinzugefügt, aber nichts ist passiertIch weiß nicht, ob ich diesen Thread stoßen kann, aber ich habe eine schnelle Lösung für den visuellen Fehler gefunden, der auftritt, wenn die offene Klasse zu schnell entfernt wird. Grundsätzlich müssen Sie lediglich eine OnComplete-Funktion in das slideUp-Ereignis einfügen und alle aktiven Klassen und Attribute zurücksetzen. Geht so etwas:
Hier ist das Ergebnis: Bootply-Beispiel
Javascript / Jquery:
quelle
Hier ist meine Lösung für den Slide & Fade-Effekt:
quelle
$(this).css({'margin-top':''});
@VedmantUpdate 2018 Bootstrap 4
In Boostrap 4 wurde die
.open
Klasse durch ersetzt.show
. Ich wollte dies nur mit CSS-Übergängen implementieren, ohne dass zusätzliches JS oder jQuery erforderlich ist ...Demo: https://www.codeply.com/go/3i8LzYVfMF
Hinweis:
max-height
Kann auf einen beliebigen großen Wert eingestellt werden, der ausreicht, um den Dropdown-Inhalt aufzunehmen.quelle
margin-top
.Beim Klicken kann der folgende Code verwendet werden
quelle
Ich verwende den obigen Code, habe aber den Verzögerungseffekt durch slideToggle geändert.
Das Dropdown-Menü wird beim Hover mit Animation verschoben.
quelle
Erweiterte Antwort, war meine erste Antwort, also entschuldigen Sie, wenn es vorher nicht genug Details gab.
Für Bootstrap 3.x bevorzuge ich persönlich CSS-Animationen und habe animate.css & zusammen mit den Bootstrap Dropdown Javascript Hooks verwendet. Obwohl es möglicherweise nicht genau den Effekt hat, den Sie suchen, ist es ein ziemlich flexibler Ansatz.
Schritt 1: Fügen Sie Ihrer Seite animate.css mit den Head-Tags hinzu:
Schritt 2: Verwenden Sie den Standard-Bootstrap-HTML-Code für den Trigger:
Schritt 3: Fügen Sie dann dem Dropdrop-Menüelement 2 benutzerdefinierte Datenattribute hinzu. Daten-Dropdown-In für die In-Animation und Daten-Dropdown-Out für die Out-Animation. Dies können beliebige animate.css-Effekte wie fadeIn oder fadeOut sein
Schritt 4: Fügen Sie als Nächstes das folgende Javascript hinzu, um die Datenattribute für Dropdown-In / Out-Daten zu lesen und auf die Hooks / Ereignisse der Bootstrap-Javascript-API ( http://getbootstrap.com/javascript/#dropdowns-events ) zu reagieren :
Schritt 5 (optional): Wenn Sie die Animation beschleunigen oder ändern möchten, können Sie dies mit CSS wie folgt tun:
Schrieb einen Artikel mit mehr Details und einem Download, wenn jemand interessiert war: Artikel: http://bootbites.com/tutorials/bootstrap-dropdown-effects-animatecss
Ich hoffe, das ist hilfreich und dieser zweite Artikel hat die Detailgenauigkeit, die Tom benötigt
quelle
Dieser Code funktioniert, wenn Sie Dropdowns beim Hover anzeigen möchten.
Ich habe gerade das
.slideToggle
zu.slideDown
&.slideUp
und die entfernt(400)
Timingquelle
Hier ist eine schöne einfache Lösung,
jQuery
die gut funktioniert:Das Umschalten der Folienanimation erfolgt beim Klicken und wird bei Verlust des Fokus immer wieder nach oben verschoben.
Ändern Sie den
300
Wert nach Belieben. Je niedriger die Zahl, desto schneller die Animation.Bearbeiten:
Diese Lösung funktioniert nur für Desktop-Ansichten. Es werden einige weitere Änderungen erforderlich sein, um eine gute Anzeige für Mobilgeräte zu ermöglichen.
quelle
dropdown-toggle
), verschwindet sie wieder, was bedeutet, dass ich die Untermenüpunkte nicht auswählen kannBOOTSTRAP 3 REFERENZ
Hinzugefügt, weil ich immer wieder von der Lösung in diesem Thread erwischt werde und sie mich jedes Mal voll macht.
Grundsätzlich entfernt die BS-Dropdown-Liste die
.open
Klasse sofort vom übergeordneten Element , sodass das Hochrutschen nicht funktioniert.Verwenden Sie dasselbe Bit wie andere Lösungen für slideDown ().
quelle
Bei Bootstrap 3 macht diese Variation der obigen Antworten die mobile
slideUp()
Animation flüssiger. Die obigen Antworten haben eine abgehackte Animation, da Bootstrap die.open
Klasse sofort vom übergeordneten Element des Umschalters entfernt , sodass dieser Code die Klasse wiederherstellt, bis dieslideUp()
Animation beendet ist.Hauptunterschiede:
hide.bs.dropdown
Event-Handler verwende ich den.stop()
Standardwert (false
) für das zweite Argument (jumpToEnd
)hidden.bs.dropdown
Ereignishandler stellt die.open
Klasse im übergeordneten Element des Dropdown-Umschalters wieder her und tut dies ziemlich unmittelbar nach dem ersten Entfernen der Klasse. In der Zwischenzeit wird dieslideUp()
Animation noch ausgeführt, und genau wie in den obigen Antworten ist der Rückruf "Die Animation ist abgeschlossen" dafür verantwortlich, dass die.open
Klasse endgültig von ihrem übergeordneten Element entfernt wird .quelle