To nie jest rozwijane menu podrzędne, kategoria to klasa li jak na obrazku:
Wybierając kategorię z menu responsywnego (szablon to tylko jedna strona), chcę ukryć automatyczne zwijanie nawigacji po kliknięciu. Spaceruj również, aby używać go jako nawigacji, ponieważ szablon ma tylko jedną stronę. Szukam rozwiązania, które nie ma na to wpływu, oto kod HTML menu:
<!-- 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
źródło
źródło
Odpowiedzi:
Spróbuj tego:
źródło
Po prostu powielam 2 atrybuty
btn-navbar
(data-toggle="collapse" data-target=".nav-collapse.in"
) w każdym linku w ten sposób:W Bootstrap 4 pasku nawigacyjnym ,
in
zmienił sięshow
więc składnia byłoby:data-toggle="collapse" data-target=".navbar-collapse.show"
źródło
data-toggle
idata-target
do <li> jest czystszym rozwiązaniem. Dzięki..in
do celu danych:data-toggle="collapse" data-target=".nav-collapse.in"
źródło
.navbar-toggler
. W każdym razie super działający kod, dzięki!Lepiej używać domyślnie collapse.js metod ( V3 docs , V4 Docs ):
źródło
.nav a
selektor na ten:.nav a:not(.dropdown-toggle)
.nav a
musiałem użyć.navbar a
.navbar-collapse
i nie.nav-collapse
?.nav-collapse
został użyty w przykładzie kodu pytania.Jeszcze bardziej eleganckie bez odrobiny zduplikowanego kodu jest po prostu zastosowanie atrybutów
data-toggle="collapse"
idata-target=".nav-collapse"
do samej nawigacji:Super czysty, bez JavaScript. Działa świetnie, o ile twoje
nav a
elementy mają wystarczająco dużo wyściółki dla grubych palców i nie zapobiegasz bulgotaniu zdarzenia kliknięcia,e.stopPropagation()
gdy użytkownicy klikająnav a
przedmioty.źródło
data-target=".nav-collapse.in"
<div class="collapse navbar-collapse" data-toggle="collapse" data-target=".navbar-collapse">
Zaktualizuj swój
do
Ta prosta zmiana zadziałała dla mnie.
Ref: https://github.com/twbs/bootstrap/issues/9013
źródło
data-target=".navbar-collapse.in"
jak w nowym standardzie bootstrap..in
Klasa jest zapobieganie animację kiedy na pulpiciediv.navbar-collapse
elementu jakodata-target
parametru.Nawigacja powinna być zamykana za każdym razem, gdy użytkownik kliknie gdziekolwiek w treści - nie tylko elementy nawigacji. Menu Powiedz jest otwarte, ale użytkownik klika treść strony. Użytkownik oczekuje zamknięcia menu.
Musisz także upewnić się, że przycisk przełączania jest widoczny, w przeciwnym razie w menu będzie widoczny skok.
źródło
Testowane na Bootstrap 3.3.6 - działa!
źródło
Spróbuj tego> Bootstrap 3
Genialne, dokładnie to, czego szukałem, jednak miałem kilka kolizji z javascriptem i modalem bootstrap, to naprawiło.
Mam nadzieję że to pomoże.
źródło
To działało dobrze dla mnie. Jest taka sama jak zaakceptowana odpowiedź, ale rozwiązuje problem związany z widokiem komputera / tabletu
źródło
źródło
beforeShow
wydarzenia.Myślę, że lepiej jest użyć domyślnych Bootstrap 3 metod collapse.js używając
.navbar-collapse
jako elementu zwijanego, który chcesz ukryć, jak pokazano poniżej.Inne rozwiązania mogą powodować inne niepożądane problemy ze sposobem wyświetlania lub działania elementów na Twojej stronie internetowej. W związku z tym, chociaż niektóre rozwiązania mogą wydawać się naprawiać początkowy problem, mogą równie dobrze przedstawiać inne, więc po wprowadzeniu jakichkolwiek napraw należy przeprowadzić dokładne testy witryny.
Aby zobaczyć ten kod w akcji:
Twoje zdrowie!
Pokaż fragment kodu
źródło
W każdym linku rozwijanym umieść data-toggle = "collapse" i data-target = ". Nav-collapse", gdzie nav-collapse to nazwa, którą nadasz liście rozwijanej.
Działa to doskonale na ekranach, które mają menu rozwijane, takie jak ekrany mobilne, ale na komputerach stacjonarnych i tabletach tworzy flickr. Dzieje się tak, ponieważ zastosowano klasę .collapsing. Aby usunąć flickr, utworzyłem zapytanie o media i wstawiłem przepełnienie ukryte w klasie zwijającej.
źródło
Dodanie data-toggle = "collapse" data-target = ". Navbar-collapse.in" do tagu
<a>
zadziałało.źródło
Oto jak to zrobiłem. Proszę, powiedz mi, czy istnieje prostszy sposób.
Wewnątrz
<a>
tagów, w których znajdują się linki do menu, dodałem ten kod:Zachowuje animację slajdu. Tak więc w pełnym użyciu wyglądałoby to tak:
źródło
// UWAGA Dodałem „touchstart” dla mobile touch. touchstart / end nie ma opóźnienia
źródło
To najlepsze rozwiązanie, z jakiego korzystałem.
źródło
Dla tych, którzy zauważyli migotanie pasków nawigacyjnych na pulpicie podczas korzystania z tego rozwiązania:
Prostym rozwiązaniem tego problemu jest odwoływanie się do zwiniętego paska nawigacyjnego tylko przez sprawdzenie, czy występuje element „w”:
Spowoduje to zwinięcie paska nawigacyjnego po kliknięciu, gdy pasek nawigacyjny jest w trybie mobilnym, ale pozostawi wersję na komputery stacjonarne. Pozwala to uniknąć migotania, które wiele osób było świadkami w wersjach na komputery stacjonarne.
Dodatkowo, jeśli masz pasek nawigacyjny z menu rozwijanymi , nie będziesz w stanie ich zobaczyć, ponieważ pasek nawigacyjny zostanie ukryty zaraz po ich kliknięciu, więc jeśli masz menu rozwijane (tak jak ja!), Użyj następującego:
Wyszukuje obecność klasy rozwijanej powyżej klikniętego linku w DOM, jeśli istnieje, to link miał na celu uruchomienie rozwijanego menu, w związku z czym menu nie jest ukryte. Po kliknięciu łącza w menu rozwijanym pasek nawigacyjny zostanie poprawnie ukryty.
źródło
źródło
100% pracy: -
Dodaj w HTML
Javascript
źródło
To ukrywa zwijanie nawigacji zamiast animować ją, ale ta sama koncepcja, co powyższa odpowiedź
JS:
HTML:
Wolę to na stronach z jedną stroną, ponieważ używam localScroll.js, który już jest animowany.
źródło
Widok mobilny: jak ukryć przełączanie nawigacji w bootstrap + menu rozwijane + jQuery + scrollto z elementami nawigacji wskazującymi kotwice / identyfikatory na tej samej stronie , szablon jednej strony
Problem, który eksperymentowałem z którymkolwiek z powyższych rozwiązań polegał na tym, że zwijają one tylko elementy podmenu, a menu nawigacyjne się nie zwija.
Tak więc pomyślałem… i co możemy zaobserwować? Cóż, za każdym razem, gdy my / użytkownicy klikamy link przewijany do łącza, chcemy, aby strona przewijała się do tej pozycji i jednocześnie zwijała menu, aby przywrócić widok strony.
Cóż ... dlaczego nie przypisać tego zadania do funkcji scrollto? Łatwo :-)
Więc w dwóch kodach
i
Właśnie dodałem to samo polecenie w obu funkcjach
(pochwały dla jednego z powyższych współpracowników)
w ten sposób (to samo należy dodać do obu zwojów)
jeśli chcesz zobaczyć, jak to działa, po prostu sprawdź to recupero dati da NAS
źródło
Użytkownicy Bootstrap3 wypróbowują poniższy kod. U mnie zadziałało.
źródło
Bootstrap ustawia
.in
klasę w elemencie Collapse, aby wyzwolić animację - aby ją otworzyć. Jeśli po prostu usuniesz.in
klasę, animacja nie zostanie uruchomiona, ale ukryje element - nie jest to dokładnie to, czego chcesz.Prawdopodobnie szybciej uruchomisz
if
instrukcję, aby sprawdzić, czy domyślna klasa ładowania początkowego.in
została ustawiona w elemencie.Więc ten kod mówi tylko:
źródło
Następnie dodaj identyfikator do każdego
źródło
Innym szybkim rozwiązaniem dla Bootstrap 3. * może być:
źródło
Opublikowałem rozwiązanie, które działa z Aurelia tutaj: https://stackoverflow.com/a/41465905/6466378
Problem w tym, że nie możesz po prostu dodać
data-toggle="collapse"
idata-target="#navbar"
do swoich elementów a. Ponadto jQuery nie działa w środowisku Aurelia lub Angular.Najlepszym rozwiązaniem dla mnie było utworzenie atrybutu niestandardowego, który nasłuchuje odpowiedniego zapytania o media i dodaje
data-toggle="collapse"
atrybut w razie potrzeby:<a href="#" ... collapse-toggle-if-less768 data-target="#navbar"> ...
Atrybut niestandardowy z Aurelia wygląda następująco:
źródło
Jestem na Bootstrap 4, używam fullPage.js ze stałą górną nawigacją i wypróbowałem wszystko, co tutaj wymieniono, z różnymi rezultatami.
Wypróbowałem najlepszy, czysty sposób:
Menu by się zwaliło, ale linki href nie prowadziłyby do niczego.
Wypróbowałem logiczne inne sposoby:
Wystąpiłoby dziwne zachowanie z powodu zdarzenia touchstart: kliknięte przyciski nie byłyby tymi, które faktycznie kliknąłem, co powoduje zerwanie łączy. Dodatkowo dodałoby klasę .show do innych niepowiązanych menu rozwijanych w mojej nawigacji, powodując bardziej dziwne rzeczy.
Nic by nie działało.
Zamiast tego wpadłem na (jak dotąd) wspaniały pomysł zrobienia tego:
Miałem już rzeczy w tej funkcji hashchange, si, po prostu musiałem dodać tę linię.
W rzeczywistości robi dokładnie to, czego chcę: zwija menu, gdy zmienia się hash (tj. Nastąpiło kliknięcie prowadzące do innego miejsca). Co jest dobre, ponieważ mogę teraz mieć linki w moim menu, które go nie zwijają.
Kto wie, może to pomoże komuś w mojej sytuacji!
Dziękujemy wszystkim, którzy wzięli udział w tym wątku, wiele informacji do nauczenia się tutaj.
źródło
W większości przypadków będziesz chciał wywołać funkcję przełączania tylko wtedy, gdy przycisk przełączania jest widoczny ...
źródło
Menu zaewidencjonowane jest otwierane przez zaznaczenie klasy „w”, a następnie uruchomienie kodu.
działa świetnie.
źródło