Przełącz nakładki kontekstowe do wyświetlania list linków i nie tylko za pomocą rozwijanej wtyczki Bootstrap.
Przegląd
Listy rozwijane to przełączalne, kontekstowe nakładki do wyświetlania list linków i nie tylko. Są interaktywne dzięki dołączonej wtyczce JavaScript rozwijanej Bootstrap. Są przełączane przez kliknięcie, a nie przez najechanie; jest to celowa decyzja projektowa.
Menu rozwijane są oparte na bibliotece innej firmy, Popper.js , która zapewnia dynamiczne pozycjonowanie i wykrywanie widocznego obszaru. Pamiętaj, aby dołączyć popper.min.js przed JavaScriptem Bootstrap lub użyć bootstrap.bundle.min.js/ bootstrap.bundle.jsktóry zawiera Popper.js. Popper.js nie jest używany do pozycjonowania list rozwijanych w paskach nawigacyjnych, ponieważ dynamiczne pozycjonowanie nie jest wymagane.
Jeśli budujesz nasz JavaScript ze źródeł, wymagautil.js to .
Dostępność
Standard WAI ARIA definiuje rzeczywisty role="menu"widżet , ale jest to specyficzne dla menu aplikacji, które uruchamiają akcje lub funkcje. Menu ARIA mogą zawierać tylko pozycje menu, pozycje menu pól wyboru, pozycje menu przycisków opcji, grupy przycisków opcji i podmenu.
Z drugiej strony listy rozwijane Bootstrap są zaprojektowane tak, aby były ogólne i miały zastosowanie do różnych sytuacji i struktur znaczników. Na przykład można tworzyć listy rozwijane zawierające dodatkowe dane wejściowe i kontrolki formularzy, takie jak pola wyszukiwania lub formularze logowania. Z tego powodu Bootstrap nie oczekuje (ani automatycznie nie dodaje) żadnego z atrybutów rolei aria-wymaganych dla prawdziwych menu ARIA . Autorzy będą musieli sami uwzględnić te bardziej szczegółowe atrybuty.
Jednak Bootstrap dodaje wbudowaną obsługę większości standardowych interakcji menu klawiatury, takich jak możliwość poruszania się po poszczególnych .dropdown-itemelementach za pomocą klawiszy kursora i zamykania menu za pomocą ESCklawisza.
Przykłady
Zawiń przełącznik listy rozwijanej (przycisk lub link) i menu rozwijane w obrębie .dropdown, lub innego elementu, który deklaruje position: relative;. Listy rozwijane mogą być uruchamiane z elementów <a>lub <button>elementów, aby lepiej pasowały do Twoich potencjalnych potrzeb.
Pojedynczy przycisk
Każdy singiel .btnmożna zmienić w rozwijany przełącznik z pewnymi zmianami znaczników. Oto, jak możesz zmusić je do pracy z dowolnymi <button>elementami:
Podobnie, utwórz listy rozwijane z dzielonymi przyciskami z praktycznie tym samym znacznikiem, co listy rozwijane z jednym przyciskiem, ale z dodatkiem .dropdown-toggle-splitodpowiedniego odstępu wokół karetki rozwijanej.
Używamy tej dodatkowej klasy, aby zmniejszyć poziom paddingpo obu stronach karetki o 25% i usunąć margin-lefttę dodaną do zwykłych rozwijanych przycisków. Te dodatkowe zmiany utrzymują kursor na środku przycisku podziału i zapewniają bardziej odpowiedni rozmiar obszaru trafienia obok głównego przycisku.
Historycznie zawartość menu rozwijanego musiała być linkami, ale tak już nie jest w przypadku v4. Teraz możesz opcjonalnie używać <button>elementów w listach rozwijanych zamiast samych <a>s.
Możesz także tworzyć nieinteraktywne pozycje rozwijane za pomocą .dropdown-item-text. Zapraszam do dalszego stylu dzięki niestandardowym narzędziom CSS lub tekstowym.
Domyślnie menu rozwijane jest automatycznie umieszczane w 100% od góry i wzdłuż lewej strony swojego rodzica. Dodaj .dropdown-menu-rightdo .dropdown-menuprawej wyrównaj menu rozwijane.
Heads-up! Listy rozwijane są pozycjonowane dzięki Popper.js (z wyjątkiem sytuacji, gdy są zawarte w pasku nawigacyjnym).
Zawartość menu
Nagłówki
Dodaj nagłówek, aby oznaczyć sekcje działań w dowolnym menu rozwijanym.
Umieść dowolny tekst w dowolnym formacie w rozwijanym menu z tekstem i użyj narzędzi do ustawiania odstępów . Pamiętaj, że prawdopodobnie będziesz potrzebować dodatkowych stylów zmiany rozmiaru, aby ograniczyć szerokość menu.
Przykładowy tekst, który jest swobodny w menu rozwijanym.
A to jest bardziej przykładowy tekst.
Formularze
Umieść formularz w rozwijanym menu lub przekształć go w rozwijane menu i użyj narzędzi do marginesów lub dopełniania , aby nadać mu wymaganą ujemną przestrzeń.
Poprzez atrybuty danych lub JavaScript, rozwijana wtyczka przełącza ukrytą zawartość (menu rozwijane), przełączając .showklasę w elemencie listy nadrzędnej. Atrybut jest data-toggle="dropdown"wykorzystywany do zamykania menu rozwijanych na poziomie aplikacji, więc dobrze jest go zawsze używać.
Na urządzeniach z obsługą dotykową otwarcie listy rozwijanej dodaje puste ( $.noop) mouseoverprocedury obsługi do bezpośrednich elementów <body>podrzędnych elementu. Ten wprawdzie brzydki hack jest niezbędny, aby obejść dziwactwo w delegowaniu zdarzeń systemu iOS , które w przeciwnym razie uniemożliwiłoby stuknięcie w dowolnym miejscu poza menu rozwijanym przed uruchomieniem kodu, który zamyka menu. Po zamknięciu listy rozwijanej te dodatkowe puste mouseovermoduły obsługi są usuwane.
Poprzez atrybuty danych
Dodaj data-toggle="dropdown"do linku lub przycisku, aby przełączyć listę rozwijaną.
Przez JavaScript
Wywołaj listy rozwijane za pomocą JavaScript:
data-toggle="dropdown"nadal wymagane
Niezależnie od tego, czy wywołasz listę rozwijaną za pomocą JavaScript, czy zamiast tego użyjesz interfejsu API danych, data-toggle="dropdown"zawsze musi być obecny w elemencie wyzwalacza listy rozwijanej.
Opcje
Opcje można przekazywać za pomocą atrybutów danych lub kodu JavaScript. W przypadku atrybutów danych dołącz nazwę opcji do data-, jak w data-offset="".
Nazwa
Rodzaj
Domyślna
Opis
zrównoważyć
numer | ciąg | funkcjonować
0
Przesunięcie listy rozwijanej względem jej celu. Więcej informacji można znaleźć w dokumentacji offsetowej Popper.js .
trzepnięcie
logiczne
PRAWDA
Zezwól na odwrócenie listy rozwijanej w przypadku nakładania się elementu odniesienia. Więcej informacji można znaleźć w dokumentacji flip Popper.js .
granica
ciąg | element
'przewiń Rodzic'
Granica ograniczenia przepełnienia menu rozwijanego. Akceptuje wartości 'viewport', 'window', 'scrollParent'lub odwołania HTMLElement (tylko JavaScript). Aby uzyskać więcej informacji, zapoznaj się z dokumentacją PreventOverflow Popper.js .
odniesienie
ciąg | element
'przełącznik'
Element referencyjny menu rozwijanego. Akceptuje wartości 'toggle', 'parent'lub odwołania HTMLElement. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją referenceObject Popper.js .
wyświetlacz
strunowy
'dynamiczny'
Domyślnie używamy Popper.js do dynamicznego pozycjonowania. Wyłącz to za pomocą static.
Zwróć uwagę, że gdy boundaryjest ustawiona na dowolną wartość inną niż 'scrollParent', styl position: staticjest stosowany do .dropdownkontenera.
Metody
metoda
Opis
$().dropdown('toggle')
Przełącza menu rozwijane danego paska nawigacyjnego lub nawigacji na kartach.
$().dropdown('update')
Aktualizuje pozycję listy rozwijanej elementu.
$().dropdown('dispose')
Niszczy listę rozwijaną elementu.
Wydarzenia
Wszystkie zdarzenia rozwijane są uruchamiane w .dropdown-menuelemencie nadrzędnym i mają relatedTargetwłaściwość, której wartością jest przełączający element zakotwiczenia. hide.bs.dropdowna hidden.bs.dropdownzdarzenia mają clickEventwłaściwość (tylko wtedy, gdy pierwotny typ zdarzenia to click), która zawiera obiekt zdarzenia dla zdarzenia kliknięcia.
Wydarzenie
Opis
show.bs.dropdown
To zdarzenie jest wyzwalane natychmiast po wywołaniu metody wystąpienia show.
shown.bs.dropdown
To zdarzenie jest wywoływane, gdy lista rozwijana jest widoczna dla użytkownika (poczeka na przejście CSS, aby zakończyć).
hide.bs.dropdown
To zdarzenie jest wywoływane natychmiast po wywołaniu metody hide wystąpienia.
hidden.bs.dropdown
To zdarzenie jest wywoływane, gdy menu rozwijane jest ukrywane przed użytkownikiem (poczeka na przejście CSS, aby zakończyć).