Преминете към основното съдържание Преминете към навигацията с документи
Check
in English

Подсказки

Документация и примери за добавяне на персонализирани подсказки за Bootstrap с CSS и JavaScript, използващи CSS3 за анимации и data-bs-атрибути за локално съхранение на заглавия.

Преглед

Неща, които трябва да знаете, когато използвате приставката за подсказки:

  • Подсказките разчитат на библиотеката на трета страна Popper за позициониране. Трябва да включите popper.min.js преди bootstrap.jsили да използвате такъв bootstrap.bundle.min.js, който съдържа Popper.
  • Подсказките се включват по причини, свързани с ефективността, така че трябва да ги инициализирате сами .
  • Подсказки със заглавия с нулева дължина никога не се показват.
  • Посочете container: 'body', за да избегнете проблеми с рендирането в по-сложни компоненти (като нашите входни групи, групи бутони и т.н.).
  • Задействането на подсказки за скрити елементи няма да работи.
  • Подсказките за .disabledили disabledелементи трябва да се задействат върху обвиващ елемент.
  • Когато се задействат от хипервръзки, които обхващат няколко реда, подсказките ще бъдат центрирани. Използвайте white-space: nowrap;на вашия <a>s, за да избегнете това поведение.
  • Подсказките трябва да бъдат скрити, преди съответните им елементи да бъдат премахнати от DOM.
  • Подсказките могат да бъдат задействани благодарение на елемент в DOM в сянка.

Разбра ли всичко това? Страхотно, нека видим как работят с някои примери.

По подразбиране този компонент използва вградения дезинфектант на съдържание, който премахва всички HTML елементи, които не са изрично разрешени. Вижте раздела за дезинфектанти в нашата JavaScript документация за повече подробности.
Анимационният ефект на този компонент зависи от prefers-reduced-motionмедийната заявка. Вижте раздела за намалено движение в нашата документация за достъпност .

Примери

Активиране на подсказки

Както бе споменато по-горе, трябва да инициализирате подсказки, преди да могат да бъдат използвани. Един от начините за инициализиране на всички подсказки на страница би бил да ги изберете по техния data-bs-toggleатрибут, така:

const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))

Задръжте курсора на мишката над връзките по-долу, за да видите подсказки:

Заместващ текст за демонстриране на някои вградени връзки с подсказки. Сега това е само пълнител, не убиец. Съдържание, поставено тук само за да имитира присъствието на истински текст . И всичко това само за да ви даде представа как биха изглеждали подсказките, когато се използват в ситуации от реалния свят. Надяваме се, че вече сте видели как тези подсказки за връзки могат да работят на практика, след като ги използвате на вашия собствен сайт или проект.

html
<p class="muted">Placeholder text to demonstrate some <a href="#" data-bs-toggle="tooltip" data-bs-title="Default tooltip">inline links</a> with tooltips. This is now just filler, no killer. Content placed here just to mimic the presence of <a href="#" data-bs-toggle="tooltip" data-bs-title="Another tooltip">real text</a>. And all that just to give you an idea of how tooltips would look when used in real-world situations. So hopefully you've now seen how <a href="#" data-bs-toggle="tooltip" data-bs-title="Another one here too">these tooltips on links</a> can work in practice, once you use them on <a href="#" data-bs-toggle="tooltip" data-bs-title="The last tip!">your own</a> site or project.
</p>
Чувствайте се свободни да използвате titleили data-bs-titleвъв вашия HTML. Когато titleсе използва, Popper ще го замени автоматично с data-bs-title, когато елементът се визуализира.

Персонализирани подсказки

Добавен във v5.2.0

Можете да персонализирате външния вид на подсказките с помощта на CSS променливи . Ние задаваме персонализиран клас, за data-bs-custom-class="custom-tooltip"да обхванем нашия персонализиран външен вид и да го използваме, за да заменим локална CSS променлива.

.custom-tooltip {
  --bs-tooltip-bg: var(--bs-primary);
}
html
<button type="button" class="btn btn-secondary"
        data-bs-toggle="tooltip" data-bs-placement="top"
        data-bs-custom-class="custom-tooltip"
        data-bs-title="This top tooltip is themed via CSS variables.">
  Custom tooltip
</button>

Упътвания

Задръжте курсора на мишката над бутоните по-долу, за да видите четирите посоки на подсказките: отгоре, отдясно, отдолу и отляво. Упътванията се отразяват, когато използвате Bootstrap в RTL.

<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="top" data-bs-title="Tooltip on top">
  Tooltip on top
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="right" data-bs-title="Tooltip on right">
  Tooltip on right
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-title="Tooltip on bottom">
  Tooltip on bottom
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="left" data-bs-title="Tooltip on left">
  Tooltip on left
</button>

И с добавен персонализиран HTML:

<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-html="true" data-bs-title="<em>Tooltip</em> <u>with</u> <b>HTML</b>">
  Tooltip with HTML
</button>

С SVG:

CSS

Променливи

Добавен във v5.2.0

Като част от развиващия се подход на Bootstrap към CSS променливите, подсказките вече използват локални CSS променливи .tooltipза подобрено персонализиране в реално време. Стойностите за CSS променливите се задават чрез Sass, така че персонализирането на Sass все още се поддържа.

  --#{$prefix}tooltip-zindex: #{$zindex-tooltip};
  --#{$prefix}tooltip-max-width: #{$tooltip-max-width};
  --#{$prefix}tooltip-padding-x: #{$tooltip-padding-x};
  --#{$prefix}tooltip-padding-y: #{$tooltip-padding-y};
  --#{$prefix}tooltip-margin: #{$tooltip-margin};
  @include rfs($tooltip-font-size, --#{$prefix}tooltip-font-size);
  --#{$prefix}tooltip-color: #{$tooltip-color};
  --#{$prefix}tooltip-bg: #{$tooltip-bg};
  --#{$prefix}tooltip-border-radius: #{$tooltip-border-radius};
  --#{$prefix}tooltip-opacity: #{$tooltip-opacity};
  --#{$prefix}tooltip-arrow-width: #{$tooltip-arrow-width};
  --#{$prefix}tooltip-arrow-height: #{$tooltip-arrow-height};
  

Sass променливи

$tooltip-font-size:                 $font-size-sm;
$tooltip-max-width:                 200px;
$tooltip-color:                     $white;
$tooltip-bg:                        $black;
$tooltip-border-radius:             $border-radius;
$tooltip-opacity:                   .9;
$tooltip-padding-y:                 $spacer * .25;
$tooltip-padding-x:                 $spacer * .5;
$tooltip-margin:                    null; // TODO: remove this in v6

$tooltip-arrow-width:               .8rem;
$tooltip-arrow-height:              .4rem;
// fusv-disable
$tooltip-arrow-color:               null; // Deprecated in Bootstrap 5.2.0 for CSS variables
// fusv-enable

Използване

Плъгинът за подсказки генерира съдържание и маркиране при поискване и по подразбиране поставя подсказки след техния задействащ елемент.

Задействайте подсказката чрез JavaScript:

const exampleEl = document.getElementById('example')
const tooltip = new bootstrap.Tooltip(exampleEl, options)
Преливане autoиscroll

Позицията на подсказката се опитва да се промени автоматично, когато родителският контейнер има overflow: autoили overflow: scrollкато нашия .table-responsive, но все пак запазва позицията на оригиналното разположение. За да разрешите това, задайте boundaryопцията (за модификатора на обръщане, използващ popperConfigопцията) на всеки HTMLElement, за да замените стойността по подразбиране 'clippingParents', като например document.body:

const tooltip = new bootstrap.Tooltip('#example', {
  boundary: document.body // or document.querySelector('#boundary')
})

Маркиране

Изискваното маркиране за подсказка е само dataатрибут и titleв HTML елемента, който искате да имате подсказка. Генерираното маркиране на подсказка е доста просто, въпреки че изисква позиция (по подразбиране, зададена topот плъгина).

Направете подсказките да работят за потребители на клавиатури и помощни технологии

Трябва да добавяте подсказки само към HTML елементи, които традиционно са фокусирани от клавиатурата и са интерактивни (като връзки или контроли на формуляр). Въпреки че произволни HTML елементи (като <span>s) могат да бъдат фокусирани чрез добавяне на tabindex="0"атрибута, това ще добави потенциално досадни и объркващи табулатори върху неинтерактивни елементи за потребителите на клавиатурата и повечето помощни технологии в момента не обявяват подсказката в тази ситуация. Освен това, не разчитайте само на hoverтова като на тригер за вашата подсказка, тъй като това ще направи вашите подсказки невъзможни за задействане за потребители на клавиатура.

<!-- HTML to write -->
<a href="#" data-bs-toggle="tooltip" data-bs-title="Some tooltip text!">Hover over me</a>

<!-- Generated markup by the plugin -->
<div class="tooltip bs-tooltip-top" role="tooltip">
  <div class="tooltip-arrow"></div>
  <div class="tooltip-inner">
    Some tooltip text!
  </div>
</div>

Деактивирани елементи

Елементите с disabledатрибута не са интерактивни, което означава, че потребителите не могат да фокусират, задържат или щракват върху тях, за да задействат подсказка (или изскачащ прозорец). Като заобиколно решение ще искате да задействате подсказката от обвивка <div>или <span>, в идеалния случай направена с възможност за фокусиране от клавиатурата, като използвате tabindex="0".

html
<span class="d-inline-block" tabindex="0" data-bs-toggle="tooltip" data-bs-title="Disabled tooltip">
  <button class="btn btn-primary" type="button" disabled>Disabled button</button>
</span>

Настроики

Тъй като опциите могат да се предават чрез атрибути на данни или JavaScript, можете да добавите име на опция към data-bs-, както в data-bs-animation="{value}". Уверете се, че сте променили типа регистър на името на опцията от „ camelCase ” на „ kebab-case ”, когато предавате опциите чрез атрибути на данни. Например използвайте data-bs-custom-class="beautifier"вместо data-bs-customClass="beautifier".

От Bootstrap 5.2.0 всички компоненти поддържат експериментален резервиран атрибут на данни, data-bs-configкойто може да съдържа проста конфигурация на компонент като JSON низ. Когато даден елемент има атрибути data-bs-config='{"delay":0, "title":123}'и data-bs-title="456", крайната titleстойност ще бъде 456и отделните атрибути на данни ще заменят стойностите, дадени на data-bs-config. В допълнение, съществуващите атрибути на данни могат да съдържат JSON стойности като data-bs-delay='{"show":0,"hide":150}'.

Обърнете внимание, че от съображения за сигурност опциите sanitize, sanitizeFn, и allowListне могат да бъдат предоставени с помощта на атрибути на данни.
Име Тип По подразбиране Описание
allowList обект Стойност по подразбиране Обект, който съдържа разрешени атрибути и тагове.
animation булево true Приложете CSS избледняващ преход към подсказката.
boundary низ, елемент 'clippingParents' Граница на ограничението за препълване на подсказката (отнася се само за модификатора на PrevenOverflow на Popper). По подразбиране той е 'clippingParents'и може да приеме препратка към HTMLElement (само чрез JavaScript). За повече информация вижте документите на Popper's detectOverflow .
container низ, елемент, невярно false Добавя подсказката към конкретен елемент. Пример: container: 'body'. Тази опция е особено полезна, тъй като ви позволява да позиционирате подсказката в потока на документа близо до задействащия елемент - което ще попречи на подсказката да изплува от задействащия елемент по време на преоразмеряване на прозореца.
customClass низ, функция '' Добавете класове към подсказката, когато се покаже. Имайте предвид, че тези класове ще бъдат добавени в допълнение към всички класове, посочени в шаблона. За да добавите няколко класа, разделете ги с интервали: 'class-1 class-2'. Можете също така да подадете функция, която трябва да върне единичен низ, съдържащ допълнителни имена на класове.
delay номер, обект 0 Забавяне на показването и скриването на подсказката (ms)—не се отнася за тип ръчно задействане. Ако е предоставен номер, забавянето се прилага и за скриване/показване. Структурата на обекта е: delay: { "show": 500, "hide": 100 }.
fallbackPlacements масив ['top', 'right', 'bottom', 'left'] Дефинирайте резервни разположения, като предоставите списък с разположения в масив (по ред на предпочитанията). За повече информация вижте документите за поведение на Popper .
html булево false Разрешете HTML в подсказката. Ако е вярно, HTML таговете в подсказката titleще бъдат изобразени в подсказката. Ако е невярно, innerTextсвойството ще се използва за вмъкване на съдържание в DOM. Използвайте текст, ако се притеснявате от XSS атаки.
offset масив, низ, функция [0, 0] Отместване на подсказката спрямо нейната цел. Можете да подадете низ в атрибути на данни със стойности, разделени със запетая, като: data-bs-offset="10,20". Когато функция се използва за определяне на отместването, тя се извиква с обект, съдържащ разположението на popper, препратката и popper rects като първи аргумент. Задействащият елемент DOM възел се предава като втори аргумент. Функцията трябва да върне масив с две числа: приплъзване , разстояние . За повече информация вижте офсетните документи на Popper .
placement низ, функция 'top' Как да позиционирате подсказката: автоматично, отгоре, отдолу, отляво, отдясно. Когато autoе посочено, то динамично ще преориентира подсказката. Когато функция се използва за определяне на разположението, тя се извиква с подсказката DOM възел като първи аргумент и задействащия елемент DOM възел като втори. Контекстът thisе зададен на екземпляра на подсказката.
popperConfig нула, обект, функция null За да промените конфигурацията на Popper по подразбиране на Bootstrap, вижте конфигурацията на Popper . Когато се използва функция за създаване на конфигурацията на Popper, тя се извиква с обект, който съдържа конфигурацията на Popper по подразбиране на Bootstrap. Помага ви да използвате и обедините настройките по подразбиране с вашата собствена конфигурация. Функцията трябва да върне конфигурационен обект за Popper.
sanitize булево true Активирайте или деактивирайте санирането. Ако е активирано 'template', 'content'и 'title'опциите ще бъдат дезинфекцирани.
sanitizeFn нула, функция null Тук можете да предоставите своя собствена функция за дезинфекция. Това може да бъде полезно, ако предпочитате да използвате специална библиотека за извършване на дезинфекция.
selector низ, невярно false Ако е предоставен селектор, обектите с подсказки ще бъдат делегирани на посочените цели. На практика това се използва и за прилагане на подсказки към динамично добавени DOM елементи ( jQuery.onподдръжка). Вижте този брой и информативен пример .
template низ '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' Основен HTML, който да се използва при създаване на подсказка. Подсказките titleще бъдат инжектирани в .tooltip-inner. .tooltip-arrowще се превърне в стрелка на подсказката. Най-външният обвиващ елемент трябва да има .tooltipклас и role="tooltip".
title низ, елемент, функция '' Стойност на заглавието по подразбиране, ако titleатрибутът не присъства. Ако е дадена функция, тя ще бъде извикана с нейната thisпрепратка, зададена към елемента, към който е прикрепено изскачащото изображение.
trigger низ 'hover focus' Как се задейства подсказка: щракване, задържане на мишката, фокус, ръчно. Можете да подадете няколко тригера; отделете ги с интервал. 'manual'показва, че подсказката ще бъде задействана програмно чрез методите и .tooltip('show'); тази стойност не може да се комбинира с друг тригер. сам по себе си ще доведе до подсказки, които не могат да бъдат задействани чрез клавиатурата, и трябва да се използва само ако има алтернативни методи за предаване на същата информация за потребителите на клавиатурата..tooltip('hide').tooltip('toggle')'hover'

Атрибути на данни за отделни подсказки

Опциите за отделни подсказки могат алтернативно да бъдат зададени чрез използването на атрибути на данни, както е обяснено по-горе.

Използване на функция сpopperConfig

const tooltip = new bootstrap.Tooltip(element, {
  popperConfig(defaultBsPopperConfig) {
    // const newPopperConfig = {...}
    // use defaultBsPopperConfig if needed...
    // return newPopperConfig
  }
})

Методи

Асинхронни методи и преходи

Всички API методи са асинхронни и стартират преход . Те се връщат при повикващия веднага щом преходът започне, но преди да приключи . В допълнение, извикване на метод на преходен компонент ще бъде игнорирано .

Вижте нашата JavaScript документация за повече информация .

Метод Описание
disable Премахва възможността за показване на подсказка на елемент. Подсказката ще може да се показва само ако бъде повторно активирана.
dispose Скрива и унищожава подсказката на елемент (Премахва съхранените данни в DOM елемента). Подсказки, които използват делегиране (които се създават с помощта на selectorопцията ), не могат да бъдат унищожени поотделно на елементи на задействане на наследник.
enable Дава възможност за показване на подсказка на елемент. Подсказките са активирани по подразбиране.
getInstance Статичен метод, който ви позволява да получите екземпляра на подсказката, свързан с DOM елемент, или да създадете нов, в случай че не е инициализиран.
getOrCreateInstance Статичен метод, който ви позволява да получите екземпляра на подсказката, свързан с DOM елемент, или да създадете нов, в случай че не е инициализиран.
hide Скрива подсказка на елемент. Връща се към повикващия, преди подсказката действително да бъде скрита (т.е. преди да hidden.bs.tooltipсе случи събитието). Това се счита за „ръчно“ задействане на подсказката.
setContent Дава начин за промяна на съдържанието на подсказката след нейното инициализиране.
show Разкрива подсказка на елемент. Връща се към повикващия, преди действително да се покаже подсказката (т.е. преди да shown.bs.tooltipсе случи събитието). Това се счита за „ръчно“ задействане на подсказката. Подсказки със заглавия с нулева дължина никога не се показват.
toggle Превключва подсказката на елемент. Връща се към повикващия, преди подсказката действително да бъде показана или скрита (т.е. преди събитието shown.bs.tooltipили да hidden.bs.tooltipсе появи). Това се счита за „ръчно“ задействане на подсказката.
toggleEnabled Превключва възможността подсказката на даден елемент да бъде показана или скрита.
update Актуализира позицията на подсказката на елемент.
const tooltip = bootstrap.Tooltip.getInstance('#example') // Returns a Bootstrap tooltip instance

// setContent example
tooltip.setContent({ '.tooltip-inner': 'another title' })
Методът setContentприема objectаргумент, където всеки ключ за свойство е валиден stringселектор в изскачащия шаблон и всяка свързана стойност на свойство може да бъде string| element| function| null

събития

Събитие Описание
hide.bs.tooltip Това събитие се задейства незабавно, когато hideметодът на екземпляра е извикан.
hidden.bs.tooltip Това събитие се задейства, когато popover приключи да бъде скрит от потребителя (ще изчака CSS преходите да завършат).
inserted.bs.tooltip Това събитие се задейства след show.bs.tooltipсъбитието, когато шаблонът за подсказка е добавен към DOM.
show.bs.tooltip Това събитие се задейства веднага, когато showсе извика методът на екземпляра.
shown.bs.tooltip Това събитие се задейства, когато изскачащият прозорец е направен видим за потребителя (ще изчака CSS преходите да завършат).
const myTooltipEl = document.getElementById('myTooltip')
const tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl)

myTooltipEl.addEventListener('hidden.bs.tooltip', () => {
  // do something...
})

tooltip.hide()