Podpowiedzi
Dokumentacja i przykłady dodawania niestandardowych podpowiedzi Bootstrap z CSS i JavaScript przy użyciu CSS3 do animacji i atrybutów danych do lokalnego przechowywania tytułów.
Przegląd
Co należy wiedzieć podczas korzystania z wtyczki podpowiedzi:
- Podpowiedzi opierają się na zewnętrznej bibliotece Popper.js do pozycjonowania. Musisz dołączyć popper.min.js przed bootstrap.js lub użyć
bootstrap.bundle.min.js/bootstrap.bundle.jsktóry zawiera Popper.js, aby podpowiedzi działały! - Jeśli budujesz nasz JavaScript ze źródeł, wymaga
util.jsto . - Etykietki narzędzi są dostępne ze względu na wydajność, więc musisz je zainicjować samodzielnie .
- Etykietki narzędzi z tytułami o zerowej długości nigdy nie są wyświetlane.
- Określ
container: 'body', aby uniknąć problemów z renderowaniem w bardziej złożonych komponentach (takich jak nasze grupy wejściowe, grupy przycisków itp.). - Wyzwalanie podpowiedzi na ukrytych elementach nie będzie działać.
- Etykietki narzędzi dla elementów
.disabledlubdisabledmuszą być wyzwalane w elemencie opakowania. - Po uruchomieniu z hiperłączy, które obejmują wiele linii, podpowiedzi zostaną wyśrodkowane. Użyj
white-space: nowrap;na swoim<a>s, aby uniknąć tego zachowania. - Etykietki narzędzi muszą być ukryte, zanim odpowiadające im elementy zostaną usunięte z DOM.
- Podpowiedzi mogą być wyzwalane dzięki elementowi wewnątrz cienia DOM.
Efekt animacji tego komponentu zależy od prefers-reduced-motionzapytania o media. Zobacz zmniejszoną sekcję ruchu w naszej dokumentacji ułatwień dostępu .
Masz to wszystko? Świetnie, zobaczmy, jak działają na kilku przykładach.
Przykład: Włącz podpowiedzi wszędzie
Jednym ze sposobów na zainicjowanie wszystkich podpowiedzi na stronie byłoby wybranie ich według ich data-toggleatrybutów:
$(function () {
$('[data-toggle="tooltip"]').tooltip()
})
Przykłady
Najedź na poniższe linki, aby zobaczyć podpowiedzi:
Obcisłe spodnie następnego poziomu kefija prawdopodobnie o nich nie słyszałeś. Fotobudka broda surowy denim typografia wegańska torba listonoszka stumptown. 8-bitowa amerykańska odzież z komosy ryżowej firmy Mcsweeney firmy Mcsweeney w wersji fixie ma winylowy chambray frotte richardson. Beard Stumptown, swetry rozpinane banh mi lomo thundercats. Tofu biodiesel williamsburg marfa, cztery loko mcsweeney's oczyszczający wegański chambray. Naprawdę ironiczny rzemieślnik , niezależnie od tego , jaka jest kluczowa , scenarzysta od farmy do stołu banksy Austin twitter obsługuje freegan cred surowy denim, wirus kawy jednego pochodzenia.
Najedź kursorem na poniższe przyciski, aby zobaczyć cztery wskazówki podpowiedzi: góra, prawo, dół i lewo.
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="top" title="Tooltip on top">
Tooltip on top
</button>
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="right" title="Tooltip on right">
Tooltip on right
</button>
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom" title="Tooltip on bottom">
Tooltip on bottom
</button>
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="left" title="Tooltip on left">
Tooltip on left
</button>
A z dodanym niestandardowym kodem HTML:
<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-html="true" title="<em>Tooltip</em> <u>with</u> <b>HTML</b>">
Tooltip with HTML
</button>
Stosowanie
Wtyczka podpowiedzi generuje treść i znaczniki na żądanie i domyślnie umieszcza podpowiedzi po elemencie wyzwalacza.
Uruchom podpowiedź za pomocą JavaScript:
$('#example').tooltip(options)
Przepełnienie autoiscroll
Pozycja etykietki próbuje automatycznie zmienić się, gdy kontener nadrzędny ma overflow: autolub jest overflow: scrollpodobny do naszego .table-responsive, ale nadal zachowuje oryginalne położenie miejsca docelowego. Aby rozwiązać ten problem, ustaw boundaryopcję na wartość inną niż domyślna 'scrollParent', na przykład 'window':
$('#example').tooltip({ boundary: 'window' })
Narzut
Wymagane znaczniki podpowiedzi to tylko dataatrybut i titleelement HTML, który chcesz mieć podpowiedź. Wygenerowany znacznik podpowiedzi jest dość prosty, chociaż wymaga pozycji (domyślnie ustawionej topprzez wtyczkę).
Tworzenie podpowiedzi dla użytkowników klawiatury i technologii wspomagających
Etykietki narzędzi należy dodawać tylko do elementów HTML, które tradycyjnie można skoncentrować na klawiaturze i które są interaktywne (takie jak łącza lub kontrolki formularzy). Chociaż <span>można skupić się na dowolnych elementach HTML (takich jak s), dodając tabindex="0"atrybut, doda to potencjalnie denerwujące i mylące tabulatory na nieinteraktywnych elementach dla użytkowników klawiatury. Ponadto większość technologii wspomagających obecnie nie wyświetla podpowiedzi w tej sytuacji.
Ponadto nie należy polegać wyłącznie na hoverwyzwalaczu podpowiedzi, ponieważ uniemożliwi to wyzwolenie podpowiedzi dla użytkowników klawiatury.
<!-- HTML to write -->
<a href="#" data-toggle="tooltip" title="Some tooltip text!">Hover over me</a>
<!-- Generated markup by the plugin -->
<div class="tooltip bs-tooltip-top" role="tooltip">
<div class="arrow"></div>
<div class="tooltip-inner">
Some tooltip text!
</div>
</div>
Elementy niepełnosprawne
Elementy z disabledatrybutem nie są interaktywne, co oznacza, że użytkownicy nie mogą się na nich skoncentrować, najechać kursorem ani kliknąć ich, aby wywołać podpowiedź (lub popover). Jako obejście, będziesz chciał wyzwolić podpowiedź z otoki <div>lub <span>, najlepiej, aby można było skoncentrować się na klawiaturze za pomocą tabindex="0", i przesłonić pointer-eventswyłączony element.
<span class="d-inline-block" tabindex="0" data-toggle="tooltip" title="Disabled tooltip">
<button class="btn btn-primary" style="pointer-events: none;" type="button" disabled>Disabled button</button>
</span>
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-animation="".
Należy zauważyć, że ze względów bezpieczeństwa sanitizeopcji sanitizeFni whiteListnie można podać przy użyciu atrybutów danych.
| Nazwa | Rodzaj | Domyślna | Opis |
|---|---|---|---|
| animacja | logiczne | PRAWDA | Zastosuj zanikające przejście CSS do podpowiedzi |
| pojemnik | ciąg | element | fałszywy | fałszywy | Dołącza podpowiedź do określonego elementu. Przykład: |
| opóźnienie | numer | obiekt | 0 | Opóźnienie pokazywania i ukrywania podpowiedzi (ms) – nie dotyczy wyzwalania ręcznego Jeśli podano numer, opóźnienie jest stosowane zarówno do ukrywania, jak i pokazywania Struktura obiektu to: |
| html | logiczne | fałszywy | Zezwalaj na HTML w podpowiedzi. Jeśli prawda, znaczniki HTML w podpowiedzi Użyj tekstu, jeśli martwisz się atakami XSS. |
| umieszczenie | ciąg | funkcjonować | 'Top' | Jak ustawić podpowiedź - auto | góra | dół | lewo | prawo. Gdy funkcja jest używana do określenia położenia, jest wywoływana z węzłem DOM podpowiedzi jako pierwszym argumentem i węzłem DOM elementu wyzwalającego jako drugim. Kontekst |
| selektor | ciąg | fałszywy | fałszywy | Jeśli podano selektor, obiekty etykietek narzędzi zostaną delegowane do określonych celów. W praktyce służy to również do zastosowania podpowiedzi do dynamicznie dodawanych elementów DOM ( jQuery.onobsługa). Zobacz to i przykład informacyjny . |
| szablon | strunowy | '<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>' |
Podstawowy kod HTML do użycia podczas tworzenia podpowiedzi. Etykietka
Najbardziej zewnętrzny element opakowania powinien mieć |
| tytuł | ciąg | element | funkcjonować | '' | Domyślna wartość tytułu, jeśli Jeśli podana zostanie funkcja, zostanie wywołana z |
| cyngiel | strunowy | „skup się na najechaniu” | Jak uruchamia się podpowiedź - kliknij | najedź | skupić | podręcznik. Możesz przekazać wiele wyzwalaczy; oddziel je spacją.
|
| zrównoważyć | numer | ciąg | funkcjonować | 0 | Przesunięcie podpowiedzi względem celu. Gdy funkcja jest używana do określenia przesunięcia, jest wywoływana z obiektem zawierającym dane przesunięcia jako pierwszym argumentem. Funkcja musi zwrócić obiekt o tej samej strukturze. Węzeł DOM elementu wyzwalającego jest przekazywany jako drugi argument. Więcej informacji można znaleźć w dokumentacji offsetowej Popper.js . |
| powrótMiejsce docelowe | ciąg | szyk | 'trzepnięcie' | Zezwalaj na określenie, której pozycji Popper użyje w przypadku powrotu. Aby uzyskać więcej informacji, zapoznaj się z dokumentacją dotyczącą zachowania Popper.js |
| granica | ciąg | element | 'przewiń Rodzic' | Obwiednia przepełnienia etykiety narzędzi. Akceptuje wartości 'viewport', 'window', 'scrollParent'lub odwołania HTMLElement (tylko JavaScript). Aby uzyskać więcej informacji, zapoznaj się z dokumentacją PreventOverflow Popper.js . |
| odkazić | logiczne | PRAWDA | Włącz lub wyłącz sanityzację. Jeśli zostanie aktywowany 'template', 'title'opcje zostaną oczyszczone. |
| biała lista | obiekt | Domyślna wartość | Obiekt zawierający dozwolone atrybuty i tagi |
| odkażaćFn | zero | funkcjonować | zero | Tutaj możesz podać własną funkcję odkażania. Może to być przydatne, jeśli wolisz korzystać z dedykowanej biblioteki do przeprowadzania sanityzacji. |
Atrybuty danych dla poszczególnych podpowiedzi
Opcje dla poszczególnych podpowiedzi można alternatywnie określić za pomocą atrybutów danych, jak wyjaśniono powyżej.
Metody
Metody asynchroniczne i przejścia
Wszystkie metody API są asynchroniczne i rozpoczynają przejście . Wracają do rozmówcy zaraz po rozpoczęciu przejścia, ale przed jego zakończeniem . Ponadto wywołanie metody na składniku przechodzącym zostanie zignorowane .
Zobacz naszą dokumentację JavaScript, aby uzyskać więcej informacji .
$().tooltip(options)
Dołącza obsługę podpowiedzi do kolekcji elementów.
.tooltip('show')
Odsłania opis elementu. Wraca do wywołującego przed wyświetleniem podpowiedzi (tj. przed shown.bs.tooltipwystąpieniem zdarzenia). Jest to uważane za „ręczne” wyzwalanie podpowiedzi. Etykietki narzędzi z tytułami o zerowej długości nigdy nie są wyświetlane.
$('#element').tooltip('show')
.tooltip('hide')
Ukrywa podpowiedź elementu. Wraca do wywołującego, zanim podpowiedź została faktycznie ukryta (tj. przed hidden.bs.tooltipwystąpieniem zdarzenia). Jest to uważane za „ręczne” wyzwalanie podpowiedzi.
$('#element').tooltip('hide')
.tooltip('toggle')
Przełącza podpowiedź elementu. Powraca do wywołującego, zanim podpowiedź została faktycznie pokazana lub ukryta (tj. przed wystąpieniem zdarzenia shown.bs.tooltiplub ). hidden.bs.tooltipJest to uważane za „ręczne” wyzwalanie podpowiedzi.
$('#element').tooltip('toggle')
.tooltip('dispose')
Ukrywa i niszczy opis elementu. Etykietki narzędzi korzystające z delegowania (utworzone za pomocą opcji selector) nie mogą być indywidualnie niszczone w elementach podrzędnych wyzwalaczy.
$('#element').tooltip('dispose')
.tooltip('enable')
Daje opisowi elementu możliwość pokazania. Etykietki narzędzi są domyślnie włączone.
$('#element').tooltip('enable')
.tooltip('disable')
Usuwa możliwość wyświetlania podpowiedzi elementu. Etykietka będzie widoczna tylko wtedy, gdy zostanie ponownie włączona.
$('#element').tooltip('disable')
.tooltip('toggleEnabled')
Przełącza możliwość pokazywania lub ukrywania podpowiedzi elementu.
$('#element').tooltip('toggleEnabled')
.tooltip('update')
Aktualizuje pozycję podpowiedzi elementu.
$('#element').tooltip('update')
Wydarzenia
| Typ wydarzenia | Opis |
|---|---|
| pokaż.bs.podpowiedź | To zdarzenie jest wyzwalane natychmiast po showwywołaniu metody wystąpienia. |
| pokazana.bs.podpowiedź | To zdarzenie jest wywoływane, gdy etykietka narzędzi jest widoczna dla użytkownika (poczeka na zakończenie przejścia CSS). |
| ukryj.bs.podpowiedź | To zdarzenie jest wywoływane natychmiast po hidewywołaniu metody wystąpienia. |
| ukryta.bs.podpowiedź | To zdarzenie jest wywoływane po zakończeniu ukrywania podpowiedzi przed użytkownikiem (poczeka na zakończenie przejścia CSS). |
| wstawiono.bs.podpowiedź | To zdarzenie jest uruchamiane po show.bs.tooltipzdarzeniu, gdy szablon podpowiedzi został dodany do DOM. |
$('#myTooltip').on('hidden.bs.tooltip', function () {
// do something...
})