in English

Попови

Документация и примери за добавяне на изскачащи елементи на Bootstrap, като тези в iOS, към всеки елемент на вашия сайт.

Преглед

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

  • Popovers разчитат на библиотеката на трета страна Popper за позициониране. Трябва да включите popper.min.js преди bootstrap.js или да използвате bootstrap.bundle.min.js/ bootstrap.bundle.js, който съдържа Popper, за да работят popovers!
  • Popovers изискват приставката за подсказки като зависимост.
  • Ако изграждате нашия JavaScript от изходния код, той изискваutil.js .
  • Popovers са включени поради причини, свързани с производителността, така че трябва да ги инициализирате сами .
  • Нулевата дължина titleи contentстойностите никога няма да показват изскачане.
  • Посочете container: 'body', за да избегнете проблеми с рендирането в по-сложни компоненти (като нашите входни групи, групи бутони и т.н.).
  • Задействането на изскачащи съобщения върху скрити елементи няма да работи.
  • Изскачащи съобщения за .disabledили disabledелементи трябва да се задействат върху обвиващ елемент.
  • Когато се задействат от анкери, които преминават през множество линии, изскачащите екрани ще бъдат центрирани между общата ширина на котвите. Използвайте .text-nowrapна вашия <a>s, за да избегнете това поведение.
  • Popovers трябва да бъдат скрити, преди съответните им елементи да бъдат премахнати от DOM.
  • Popovers могат да бъдат задействани благодарение на елемент в DOM в сянка.
По подразбиране този компонент използва вградения дезинфектант на съдържание, който премахва всички HTML елементи, които не са изрично разрешени. Вижте раздела за дезинфектанти в нашата JavaScript документация за повече подробности.
Анимационният ефект на този компонент зависи от prefers-reduced-motionмедийната заявка. Вижте раздела за намалено движение в нашата документация за достъпност .

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

Пример: Активиране на изскачащи прозорци навсякъде

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

$(function () {
  $('[data-toggle="popover"]').popover()
})

Пример: Използване на containerопцията

Когато имате някои стилове на родителски елемент, които пречат на изскачащ прозорец, ще искате да посочите персонализиран container, така че HTML на изскачащия елемент да се показва вместо това в този елемент.

$(function () {
  $('.example-popover').popover({
    container: 'body'
  })
})

Пример

<button type="button" class="btn btn-lg btn-danger" data-toggle="popover" title="Popover title" data-content="And here's some amazing content. It's very engaging. Right?">Click to toggle popover</button>

Четири посоки

Налични са четири опции: подравнени отгоре, отдясно, отдолу и отляво.

<button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="top" data-content="Top popover">
  Popover on top
</button>
<button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="right" data-content="Right popover">
  Popover on right
</button>
<button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="bottom" data-content="Bottom popover">
  Popover on bottom
</button>
<button type="button" class="btn btn-secondary" data-container="body" data-toggle="popover" data-placement="left" data-content="Left popover">
  Popover on left
</button>

Отхвърляне при следващо щракване

Използвайте focusспусъка, за да отхвърлите изскачащи съобщения при следващото щракване на потребителя върху елемент, различен от превключващия елемент.

Изисква се специфично маркиране за отхвърляне при следващо щракване

За правилното поведение между различни браузъри и различни платформи трябва да използвате <a>маркера, а не маркера <button>, и също трябва да включите tabindexатрибут.

<a tabindex="0" class="btn btn-lg btn-danger" role="button" data-toggle="popover" data-trigger="focus" title="Dismissible popover" data-content="And here's some amazing content. It's very engaging. Right?">Dismissible popover</a>
$('.popover-dismiss').popover({
  trigger: 'focus'
})

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

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

За забранени изскачащи тригери може също да предпочетете data-trigger="hover"изскачащия прозорец да се показва като незабавна визуална обратна връзка за вашите потребители, тъй като те може да не очакват да щракнат върху деактивиран елемент.

<span class="d-inline-block" data-toggle="popover" data-content="Disabled popover">
  <button class="btn btn-primary" style="pointer-events: none;" type="button" disabled>Disabled button</button>
</span>

Използване

Активиране на изскачащи прозорци чрез JavaScript:

$('#example').popover(options)
GPU ускорение

Изскачащите изображения понякога изглеждат замъглени на устройства с Windows 10 поради GPU ускорение и модифициран DPI на системата. Заобиколното решение за това във v4 е да деактивирате GPU ускорението, ако е необходимо, на вашите изскачащи съобщения.

Предложена корекция:

Popper.Defaults.modifiers.computeStyle.gpuAcceleration = !(window.devicePixelRatio < 1.5 && /Win/.test(navigator.platform))

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

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

Въпреки че можете да вмъкнете богат, структуриран HTML в изскачащи съобщения с htmlопцията, силно препоръчваме да избягвате добавянето на прекомерно количество съдържание. Начинът, по който изскачащите елементи работят в момента, е, че след като се покажат, тяхното съдържание е свързано с тригерния елемент с aria-describedbyатрибута. В резултат на това цялото съдържание на popover ще бъде обявено на потребителите на помощни технологии като един дълъг, непрекъснат поток.

Освен това, въпреки че е възможно да включите интерактивни контроли (като елементи на формуляр или връзки) във вашия изскачащ прозорец (чрез добавяне на тези елементи към whiteListили разрешените атрибути и тагове), имайте предвид, че в момента изскачащият прозорец не управлява реда на фокусиране на клавиатурата. Когато потребител на клавиатура отвори изскачащ прозорец, фокусът остава върху задействащия елемент и тъй като изскачащият елемент обикновено не следва незабавно задействането в структурата на документа, няма гаранция, че придвижването напред/натисканетоTABще премести потребител на клавиатура в самия изскачащ прозорец. Накратко, простото добавяне на интерактивни контроли към изскачащ прозорец вероятно ще направи тези контроли недостъпни/неизползваеми за потребители на клавиатури и потребители на помощни технологии или най-малкото ще направи нелогичен цялостен ред на фокусиране. В тези случаи обмислете използването на модален диалог вместо това.

Настроики

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

Обърнете внимание, че от съображения за сигурност опциите sanitize, sanitizeFnи не могат да бъдат предоставени с помощта на атрибути на данни.whiteList
Име Тип По подразбиране Описание
анимация булево вярно Приложете CSS избледняващ преход към изскачащия прозорец
контейнер низ | елемент | невярно невярно

Добавя изскачащия прозорец към конкретен елемент. Пример: container: 'body'. Тази опция е особено полезна, тъй като ви позволява да позиционирате изскачащия прозорец в потока на документа близо до задействащия елемент - което ще попречи на изскачащия прозорец да се отдалечи от задействащия елемент по време на преоразмеряване на прозореца.

съдържание низ | елемент | функция ''

Стойност на съдържанието по подразбиране, ако data-contentатрибутът не присъства.

Ако е дадена функция, тя ще бъде извикана с нейната thisпрепратка, зададена към елемента, към който е прикрепено изскачащото изображение.

забавяне номер | обект 0

Забавяне на показването и скриването на изскачащия прозорец (ms) - не се отнася за тип ръчно задействане

Ако е предоставен номер, забавянето се прилага и за скриване/показване

Структурата на обекта е:delay: { "show": 500, "hide": 100 }

html булево невярно Вмъкнете HTML в изскачащия прозорец. Ако е невярно, textметодът на jQuery ще се използва за вмъкване на съдържание в DOM. Използвайте текст, ако се притеснявате от XSS атаки.
поставяне низ | функция "точно"

Как да позиционирате изскачащия прозорец - автоматично | отгоре | дъно | наляво | точно.
Когато autoе посочено, то динамично ще преориентира изскачащия прозорец.

Когато функция се използва за определяне на разположението, тя се извиква с изскачащия DOM възел като първи аргумент и задействащия елемент DOM възел като втори. Контекстът thisе зададен на изскачащия екземпляр.

селектор низ | невярно невярно Ако е предоставен селектор, изскачащите обекти ще бъдат делегирани на посочените цели. На практика това се използва, за да се даде възможност за добавяне на изскачащи съобщения към динамично HTML съдържание. Вижте това и един информативен пример .
шаблон низ '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'

Основен HTML за използване при създаване на изскачащ прозорец.

Popover's titleще бъдат инжектирани в .popover-header.

Popover's contentще бъдат инжектирани в .popover-body.

.arrowще се превърне в стрелата на popover.

Най-външният обвиващ елемент трябва да има .popoverкласа.

заглавие низ | елемент | функция ''

Стойност на заглавието по подразбиране, ако titleатрибутът не присъства.

Ако е дадена функция, тя ще бъде извикана с нейната thisпрепратка, зададена към елемента, към който е прикрепено изскачащото изображение.

спусък низ 'клик' Как се задейства popover - щракнете върху | кръжи | фокус | ръководство. Можете да подадете няколко тригера; отделете ги с интервал. manualне може да се комбинира с друг тригер.
изместване номер | низ 0 Отместване на изскачащия прозорец спрямо неговата цел. За повече информация вижте офсетните документи на Popper .
резервно поставяне низ | масив "обръщане" Позволете да укажете коя позиция ще използва Popper при резервно връщане. За повече информация вижте документите за поведение на Popper
customClass низ | функция ''

Добавете класове към изскачащия прозорец, когато се покаже. Имайте предвид, че тези класове ще бъдат добавени в допълнение към всички класове, посочени в шаблона. За да добавите няколко класа, разделете ги с интервали: 'a b'.

Можете също така да подадете функция, която трябва да върне единичен низ, съдържащ допълнителни имена на класове.

граница низ | елемент 'scrollParent' Граница на ограничението за препълване на изскачащия прозорец. Приема стойностите на 'viewport', 'window', 'scrollParent'или препратка към HTMLElement (само за JavaScript). За повече информация вижте документите на PrevenOverflow на Popper .
хигиенизирам булево вярно Активирайте или деактивирайте санирането. Ако е активирано 'template', 'content'и 'title'опциите ще бъдат дезинфекцирани. Вижте раздела за дезинфектанти в нашата JavaScript документация .
бял списък обект Стойност по подразбиране Обект, който съдържа разрешени атрибути и тагове
sanitizeFn нула | функция нула Тук можете да предоставите своя собствена функция за дезинфекция. Това може да бъде полезно, ако предпочитате да използвате специална библиотека за извършване на дезинфекция.
popperConfig нула | обект нула За да промените конфигурацията на Popper по подразбиране на Bootstrap, вижте конфигурацията на Popper

Атрибути на данни за отделни изскачащи съобщения

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

Методи

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

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

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

$().popover(options)

Инициализира изскачащи прозорци за колекция от елементи.

.popover('show')

Разкрива изскачане на елемент. Връща се към повикващия, преди изскачащият прозорец действително да е бил показан (т.е. преди да shown.bs.popoverнастъпи събитието). Това се счита за „ръчно“ задействане на popover. Изскачащи съобщения, чието заглавие и съдържание са с нулева дължина, никога не се показват.

$('#element').popover('show')

.popover('hide')

Скрива изскачащия прозорец на елемент. Връща се към повикващия, преди изскачащото съобщение да е действително скрито (т.е. преди да hidden.bs.popoverсе случи събитието). Това се счита за „ръчно“ задействане на popover.

$('#element').popover('hide')

.popover('toggle')

Превключва изскачащия прозорец на елемент. Връща се към повикващия, преди изскачащият прозорец действително да е бил показан или скрит (т.е. преди събитието shown.bs.popoverили да hidden.bs.popoverсе появи). Това се счита за „ръчно“ задействане на popover.

$('#element').popover('toggle')

.popover('dispose')

Скрива и унищожава popover на елемент. Popovers, които използват делегиране (които се създават с помощта на selectorопцията ), не могат да бъдат унищожени поотделно на елементи на задействане на потомък.

$('#element').popover('dispose')

.popover('enable')

Дава възможност за показване на popover на елемент. Изскачащите екрани са активирани по подразбиране.

$('#element').popover('enable')

.popover('disable')

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

$('#element').popover('disable')

.popover('toggleEnabled')

Превключва възможността изскачащият прозорец на елемент да бъде показан или скрит.

$('#element').popover('toggleEnabled')

.popover('update')

Актуализира позицията на изскачащия прозорец на елемент.

$('#element').popover('update')

събития

Тип събитие Описание
show.bs.popover Това събитие се задейства веднага, когато showсе извика методът на екземпляра.
показано.bs.popover Това събитие се задейства, когато изскачащият прозорец е направен видим за потребителя (ще изчака CSS преходите да завършат).
hide.bs.popover Това събитие се задейства незабавно, когато hideметодът на екземпляра е извикан.
скрити.bs.popover Това събитие се задейства, когато popover приключи да бъде скрит от потребителя (ще изчака CSS преходите да завършат).
вмъкнато.bs.popover Това събитие се задейства след show.bs.popoverсъбитието, когато изскачащият шаблон е добавен към DOM.
$('#myPopover').on('hidden.bs.popover', function () {
  // do something...
})