Dies ist kein Dropdown-Menü, die Kategorie ist Klasse li wie im Bild:
Durch Auswahl einer Kategorie aus dem Antwortmenü (die Vorlage ist nur eine Seite) möchte ich den Navigationskollaps beim Klicken automatisch ausblenden. Bummeln Sie auch zur Navigation, da die Vorlage nur eine Seite hat. Ich suche eine Lösung, die sich nicht darauf auswirkt. Hier ist der HTML-Code des Menüs:
<!-- NAVBAR
================================================== -->
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</a>
<a class="brand" href="#">Carousel Demo</a>
<div class="nav-collapse">
<ul class="nav" >
<li class="active"><a href="#home">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#portfolio">Portfolio</a></li>
<li><a href="#services">Services</a></li>
<li><a href="#contact">Contact</a></li>
<!-- dropdown -->
</ul>
<!-- /.nav -->
</div>
<!--/.nav-collapse -->
</div>
<!-- /.container -->
</div>
<!-- /.navbar-inner -->
</div>
<!-- /.navbar -->
jquery
html
twitter-bootstrap
Tim Vitor
quelle
quelle
Antworten:
Versuche dies:
quelle
Ich repliziere einfach die 2 Attribute von
btn-navbar
(data-toggle="collapse" data-target=".nav-collapse.in"
) auf jedem Link wie folgt:In der Bootstrap 4-Navigationsleiste wurde die Syntax wie folgt
in
geändertshow
:data-toggle="collapse" data-target=".navbar-collapse.show"
quelle
data-toggle
unddata-target
zu <li> ist eine sauberere Lösung. Vielen Dank..in
demdata-toggle="collapse" data-target=".nav-collapse.in"
quelle
.navbar-toggler
. Wie auch immer, super funktionierender Code, danke!Verwenden Sie besser die Standardmethoden für Collapse.js ( V3-Dokumente , V4-Dokumente ):
quelle
.nav a
Selektor durch diesen:.nav a:not(.dropdown-toggle)
.nav a
ich verwenden musste.navbar a
.navbar-collapse
nicht und nicht.nav-collapse
?.nav-collapse
im Fragecodebeispiel verwendet wurde.Noch eleganter ohne ein bisschen doppelten Code ist es, die Attribute
data-toggle="collapse"
und einfachdata-target=".nav-collapse"
auf das Navi selbst anzuwenden :Super sauber, kein JavaScript erforderlich. Funktioniert hervorragend, solange Ihre
nav a
Elemente genügend Polsterung für dicke Finger haben und Sie nicht verhindern, dass Klickereignisse über dase.stopPropagation()
Klicken vonnav a
Elementen sprudeln .quelle
data-target=".nav-collapse.in"
<div class="collapse navbar-collapse" data-toggle="collapse" data-target=".navbar-collapse">
Aktualisieren Sie Ihre
zu
Diese einfache Änderung hat bei mir funktioniert.
Ref: https://github.com/twbs/bootstrap/issues/9013
quelle
data-target=".navbar-collapse.in"
wie beim neuen Bootstrap-Standard. Die.in
Klasse soll die Animation auf dem Desktop verhinderndiv.navbar-collapse
Elements alsdata-target
Parameter verwendet.Die Navigation sollte jedes Mal geschlossen werden, wenn ein Benutzer irgendwo auf den Körper klickt - nicht nur auf Navigationselemente. Angenommen, das Menü ist geöffnet, aber der Benutzer klickt auf den Seitenkörper. Der Benutzer erwartet, dass das Menü geschlossen wird.
Sie müssen auch sicherstellen, dass die Umschalttaste sichtbar ist, da sonst ein Sprung im Menü angezeigt wird.
quelle
Getestet auf Bootstrap 3.3.6 - funktioniert!
quelle
Versuchen Sie dies> Bootstrap 3
Genial genau das, wonach ich gesucht habe, aber ich hatte einige Konflikte mit dem Javascript und dem Bootstrap-Modal, dies hat es behoben.
Hoffe das hilft.
quelle
Das hat bei mir gut funktioniert. Dies entspricht der akzeptierten Antwort, behebt jedoch das Problem in Bezug auf die Desktop- / Tablet-Ansicht
quelle
quelle
beforeShow
Veranstaltung schließen.Ich denke, es ist besser, die Collapse.js- Standardmethoden von Bootstrap 3 zu verwenden, indem Sie das
.navbar-collapse
als reduzierbares Element verwenden, das Sie wie unten gezeigt ausblenden möchten.Andere Lösungen können andere unerwünschte Probleme mit der Anzeige oder Funktion von Elementen auf Ihrer Webseite verursachen. Obwohl einige Lösungen Ihr anfängliches Problem zu beheben scheinen, können andere sehr gut eingeführt werden. Stellen Sie daher sicher, dass Sie Ihre Site nach jeder Korrektur gründlich testen.
So sehen Sie diesen Code in Aktion:
Prost!
Code-Snippet anzeigen
quelle
Geben Sie auf jedem Dropdown-Link data-toggle = "Collapse" und data-target = ". Nav-Collapse" ein, wobei Nav-Collapse der Name ist, den Sie der Dropdown-Liste geben.
Dies funktioniert perfekt auf Bildschirmen, die ein Dropdown-Menü wie mobile Bildschirme haben, aber auf Desktop und Tablet wird ein Flickr erstellt. Dies liegt daran, dass die Klasse .collapsing angewendet wird. Um das flickr zu entfernen, habe ich eine Medienabfrage erstellt und einen Überlauf eingefügt, der für die reduzierende Klasse verborgen ist.
quelle
Das Hinzufügen von data-toggle = "apse "data-target =". Navbar-collapse.in "zu dem Tag
<a>
hat bei mir funktioniert.quelle
So habe ich es gemacht. Wenn es einen reibungsloseren Weg gibt, sagen Sie es mir bitte.
In den
<a>
Tags, in denen sich die Links für das Menü befinden, habe ich diesen Code hinzugefügt:Die Folienanimation bleibt erhalten. Bei voller Nutzung würde es also so aussehen:
quelle
// HINWEIS Ich habe den "Touchstart" für Mobile Touch hinzugefügt. Touchstart / End hat keine Verzögerung
quelle
Dies ist die beste Lösung, die ich verwendet habe.
quelle
Für diejenigen, die bemerkt haben, dass Desktop-Navigationsleisten bei Verwendung dieser Lösung flackern:
Eine einfache Lösung für dieses Problem besteht darin, auf die ausgeblendete Navigationsleiste nur zu verweisen, indem überprüft wird, ob 'in' vorhanden ist:
Dadurch wird die Navigationsleiste beim Klicken reduziert, wenn sich die Navigationsleiste im mobilen Modus befindet, die Desktop-Version bleibt jedoch in Ruhe. Dies vermeidet das Flackern, das viele Menschen auf Desktop-Versionen gesehen haben.
Wenn Sie eine Navigationsleiste mit Dropdown-Menüs haben, können Sie diese nicht sehen, da die Navigationsleiste ausgeblendet wird, sobald Sie darauf klicken. Wenn Sie also Dropdown-Menüs haben (wie ich!), Verwenden Sie Folgendes:
Hierbei wird nach dem Vorhandensein der Dropdown-Klasse über dem im DOM angeklickten Link gesucht. Wenn dieser vorhanden ist, wollte der Link ein Dropdown-Menü starten, sodass das Menü nicht ausgeblendet wird. Wenn Sie im Dropdown-Menü auf einen Link klicken, wird die Navigationsleiste korrekt ausgeblendet.
quelle
quelle
100% arbeiten: -
In HTML hinzufügen
Javascript
quelle
Dies verbirgt den Zusammenbruch der Navigation, anstatt ihn zu animieren, aber das gleiche Konzept wie oben
JS:
HTML:
Ich bevorzuge dies auf Websites mit nur einer Seite, da ich localScroll.js verwende, das bereits animiert ist.
quelle
Mobile Ansicht: Ausblenden der Umschaltnavigation in Bootstrap + Dropdown + JQuery + Scrollto mit Navigationselementen, die auf Anker / IDs auf derselben Seite verweisen , eine Seitenvorlage
Das Problem, mit dem ich mit einer der oben genannten Lösungen experimentiert habe, war, dass nur die Untermenüelemente reduziert werden, während das Navigationsmenü nicht reduziert wird.
Also habe ich meine Gedanken gemacht ... und was können wir beobachten? Nun, jedes Mal, wenn wir / die Benutzer auf einen Scrollto-Link klicken, soll die Seite zu dieser Position scrollen und gleichzeitig das Menü reduzieren, um die Seitenansicht wiederherzustellen.
Nun ... warum diesen Job nicht den Scrollto-Funktionen zuweisen? Einfach :-)
Also in den beiden Codes
und
Ich habe gerade den gleichen Befehl in beiden Funktionen hinzugefügt
(ein großes Lob an einen der oben genannten Mitwirkenden)
so (das gleiche sollte zu beiden Schriftrollen hinzugefügt werden)
Wenn du es in Aktion sehen willst, schau es dir einfach bei recupero dati da NAS an
quelle
Bootstrap3-Benutzer versuchen den unten angegebenen Code. Es hat bei mir funktioniert.
quelle
Bootstrap legt eine
.in
Klasse für das Collapse-Element fest, um die Animation auszulösen und zu öffnen. Wenn Sie die.in
Klasse einfach entfernen , wird die Animation nicht ausgeführt, sondern das Element wird ausgeblendet - nicht genau das, was Sie möchten.Es ist wahrscheinlich schneller, eine
if
Anweisung auszuführen , um zu überprüfen, ob die Standard-Bootstrap-Klasse.in
für das Element festgelegt wurde.Dieser Code sagt also nur:
quelle
Fügen Sie dann jedem eine ID hinzu
quelle
Eine weitere schnelle Lösung für Bootstrap 3. * könnte sein:
quelle
Ich habe hier eine Lösung veröffentlicht, die mit Aurelia funktioniert: https://stackoverflow.com/a/41465905/6466378
Das Problem ist , man kann nicht einfach addieren
data-toggle="collapse"
unddata-target="#navbar"
zu Ihrem einem Elemente. Und jQuery funktioniert nicht, wenn es sich um eine Aurelia- oder Angular-Umgebung handelt.Die beste Lösung für mich war, ein benutzerdefiniertes Attribut zu erstellen, das die entsprechende Medienabfrage abhört und das
data-toggle="collapse"
Attribut bei Bedarf hinzufügt :<a href="#" ... collapse-toggle-if-less768 data-target="#navbar"> ...
Das benutzerdefinierte Attribut mit Aurelia sieht folgendermaßen aus:
quelle
Ich bin auf Bootstrap 4, verwende fullPage.js mit einem festen Navigationssystem und habe alles hier Aufgetestete mit gemischten Ergebnissen ausprobiert.
Versuchte den besten, sauberen Weg:
Das Menü würde zusammenbrechen, aber die href-Links würden nirgendwohin führen.
Versuchte die logischen anderen Wege:
Aufgrund des Touchstart-Ereignisses würde es ein seltsames Verhalten geben: Die angeklickten Schaltflächen würden nicht die sein, auf die ich tatsächlich geklickt habe, wodurch die Links unterbrochen würden. Außerdem würde es die .show-Klasse zu einigen anderen nicht verwandten Dropdowns in meinem Navi hinzufügen, was noch mehr seltsame Dinge verursachen würde.
Nichts würde funktionieren.
Stattdessen hatte ich die (bisher) wunderbare Idee, dies zu tun:
Ich hatte bereits Sachen in dieser Hashchange-Funktion, si ich musste nur diese Zeile hinzufügen.
Es macht genau das, was ich will: das Menü reduzieren, wenn sich der Hash ändert (dh ein Klick, der an eine andere Stelle führt, ist aufgetreten). Was gut ist, denn ich kann jetzt Links in meinem Menü haben, die es nicht reduzieren.
Wer weiß, vielleicht hilft das jemandem in meiner Situation!
Und danke an alle, die an diesem Thread teilgenommen haben, viele Informationen, die hier gelernt werden können.
quelle
In den meisten Fällen möchten Sie die Umschaltfunktion nur aufrufen, wenn die Umschalttaste sichtbar ist ...
quelle
Das eingecheckte Menü wird geöffnet, indem die Klasse 'in' eingecheckt und dann der Code ausgeführt wird.
funktioniert perfekt.
quelle