OK, więc to, czego potrzebuję, jest dość proste.
Skonfigurowałem pasek nawigacyjny z kilkoma rozwijanymi menu (za pomocą class="dropdown-toggle" data-toggle="dropdown"
) i działa dobrze.
Chodzi o to, że działa „ onClick
”, a ja wolałbym, gdyby działało „ onHover
”.
Czy jest jakiś wbudowany sposób to zrobić?
javascript
jquery
html
css
twitter-bootstrap
Dr.Kameleon
źródło
źródło
Odpowiedzi:
Najłatwiejszym rozwiązaniem byłoby CSS. Dodaj coś takiego ...
Working Fiddle
źródło
data-toggle
atrybut, aby element nadrzędny był klikalny ... Po prostu uważaj na uszkodzenia na ekranach urządzeń mobilnych.Najlepszym sposobem na to jest po prostu wywołanie zdarzenia kliknięcia bootstraps za pomocą najechania kursorem. W ten sposób powinien pozostać przyjazny dla urządzenia dotykowego
źródło
Możesz użyć funkcji aktywowania jQuery.
Musisz tylko dodać klasę,
open
gdy mysz wchodzi i usunąć klasę, gdy mysz opuszcza menu rozwijane.Oto mój kod:
źródło
show
zamiastopen
, a także dołączyćdropdown-menu
:$('.dropdown').hover(function() { $(this).addClass('show'); $(this).find('.dropdown-menu').addClass('show');}, function() {$(this).removeClass('show'); $(this).find('.dropdown-menu').removeClass('show');});
(Przepraszam za formatowanie.)Łatwy sposób, przy użyciu jQuery, jest następujący:
źródło
.first()
-$(this).find('.dropdown-menu').first().stop(true, true).delay(200).fadeIn(200);
...W przypadku CSS wariuje, gdy również go klikniesz. To jest kod, którego używam, nie zmienia też niczego w widoku mobilnym.
źródło
Na Twitterze Bootstrap nie jest zaimplementowany, ale możesz użyć tej wtyczki
Aktualizacja 1:
Pytanie Sames tutaj
źródło
Najedź kursorem na elementy nawigacji, aby zobaczyć, że aktywują się po najechaniu myszą. http://cameronspear.com/demos/twitter-bootstrap-hover-dropdown/#
źródło
Więc masz ten kod:
Zwykle działa na zdarzenie kliknięcia i chcesz, aby działało na zdarzeniu najechania kursorem. Jest to bardzo proste, wystarczy użyć tego kodu javascript / jquery:
Działa to bardzo dobrze i oto wyjaśnienie: mamy przycisk i menu. Po najechaniu myszką na przycisk wyświetlamy menu, a po najechaniu myszką na przycisk ukrywamy menu po 100 ms. Jeśli zastanawiasz się, dlaczego go używam, to dlatego, że potrzebujesz czasu, aby przeciągnąć kursor z przycisku nad menu. Po przejściu do menu czas jest resetowany i możesz tam pozostać tyle czasu, ile chcesz. Po wyjściu z menu natychmiast ukryjemy menu, bez żadnego limitu czasu.
Użyłem tego kodu w wielu projektach, jeśli napotkasz jakiś problem z jego użyciem, możesz zadawać mi pytania.
źródło
To jest to, czego używam, aby zrobić to rozwijane po najechaniu kursorem za pomocą jQuery
źródło
Wypróbuj tę funkcję za pomocą funkcji aktywowania z animacjami zanikania i zanikania
źródło
Pomoże ci to stworzyć własną klasę aktywacji dla bootstrap:
CSS:
Marginesy są ustawione w celu uniknięcia niechcianego zamykania i są opcjonalne.
HTML:
Nie zapomnij usunąć atrybutu przycisku data-toggle = "menu rozwijane", jeśli chcesz usunąć kliknięcie po otwarciu, a to zadziała również, gdy dane wejściowe zostaną dołączone do menu rozwijanego.
źródło
To powoduje najechanie na pasek nawigacyjny tylko wtedy, gdy nie jesteś na urządzeniu mobilnym, ponieważ uważam, że najechanie na nawigację nie działa dobrze na urządzeniach mobilnych:
źródło
Wypróbowuję inne rozwiązania, używam bootstrap 3, ale menu rozwijane zamyka się zbyt szybko, aby przejść nad nim
Przypuszczalnie dodałeś do li class = "dropdown", dodałem limit czasu
źródło
Zaktualizowano z odpowiednią wtyczką
Opublikowałem odpowiednią wtyczkę dla funkcji rozwijanego menu, w której możesz nawet zdefiniować, co dzieje się po kliknięciu
dropdown-toggle
elementu:https://github.com/istvan-ujjmeszaros/bootstrap-dropdown-hover
Dlaczego to zrobiłem, skoro jest już wiele rozwiązań?
Miałem problemy ze wszystkimi poprzednimi rozwiązaniami. Proste CSS nie używają tej
.open
klasy na.dropdown
, więc nie będzie żadnych informacji zwrotnych na temat elementu rozwijanego, gdy menu rozwijane jest widoczne.Js przeszkadzają w kliknięciu
.dropdown-toggle
, więc menu pojawia się po najechaniu myszką, a następnie ukrywa je po kliknięciu otwartego menu, a poruszenie myszą spowoduje, że menu pojawi się ponownie. Niektóre rozwiązania js hamują kompatybilność z iOS, niektóre wtyczki nie działają w nowoczesnych przeglądarkach komputerowych, które obsługują zdarzenia dotykowe.Dlatego stworzyłem wtyczkę Bootstrap Dropdown Hover, która zapobiega wszystkim tym problemom, używając tylko standardowego interfejsu API javascript Bootstrap, bez żadnego włamania.
źródło
źródło
Wyzwalanie
click
zdarzenia zahover
pomocą małego błędu. Jeślimouse-in
i wtedy aclick
tworzy efekt odwrotnie. Toopens
kiedymouse-out
iclose
kiedymouse-in
. Lepsze rozwiązanie:źródło
HTML
jquery
codepen
źródło
Rozwiązanie, które proponuję, wykrywa, czy nie jest to urządzenie dotykowe i czy
navbar-toggle
(menu hamburgera) nie jest widoczne, i powoduje, że element menu nadrzędnego ujawnia podmenu po najechaniu myszką i podąża za linkiem po kliknięciu .Ustawia także 0 na marginesie, ponieważ przerwa między paskiem nawigacyjnym a menu w niektórych przeglądarkach nie pozwala na najechanie na podelementy
źródło
Lista rozwijana Bootstrap Pracuj po najechaniu kursorem i pozostań blisko kliknięcia, dodając właściwość display: block; w css i usunięcie tych atrybutów data-toggle = "dropdown" role = "button" ze znacznika button
źródło