Негизги мазмунга өтүү Документтердин навигациясына өтүү
Check
in English

Кеңештер

Анимациялар үчүн CSS3 жана жергиликтүү аталыштарды сактоо үчүн data-bs-атрибуттарын колдонуу менен CSS жана JavaScript менен ыңгайлаштырылган Bootstrap инструменттерин кошуу үчүн документтер жана мисалдар.

Обзор

Tooltip плагинин колдонууда билүү керек нерселер:

  • Куралдар кеңештери жайгаштыруу үчүн үчүнчү тараптын Поппер китепканасына таянат . Буга чейин popper.min.js кошушуңуз керек bootstrap.jsже bootstrap.bundle.min.jsPopper камтылганын колдонушуңуз керек.
  • Кеңештер майнаптуу себептерден улам кошулган, андыктан аларды өзүңүз башташыңыз керек .
  • Узундугу нөлгө барабар болгон кеңештер эч качан көрсөтүлбөйт.
  • container: 'body'Татаалыраак компоненттерде (мисалы, киргизүү топторубуз, баскыч топторубуз ж.б.) көйгөйлөрдү жаратпаш үчүн белгилеңиз .
  • Жашыруун элементтер боюнча кеңештерди иштетүү иштебейт.
  • Ороочу элементте .disabledже disabledэлементтер үчүн кеңештер иштетилиши керек.
  • Бир нече саптарды камтыган гипершилтемелерден иштетилгенде, кеңештер борборлоштурулат. Бул жүрүм-турумду болтурбоо үчүн white-space: nowrap;сиздин с боюнча колдонуңуз .<a>
  • Тиешелүү элементтери 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-titleHTMLде колдонуудан тартынбаңыз . Колдонулганда title, Поппер аны автоматтык түрдө 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>

Багыттар

Курал кеңештеринин төрт багытын көрүү үчүн ылдыйдагы баскычтардын үстүнө өтүңүз: жогорку, оң, ылдый жана сол. RTLде Bootstrap колдонууда багыттар чагылдырылат.

<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 кошулган

.tooltipBootstrap'тин өнүгүп жаткан CSS өзгөрмөлөрүнүн бир бөлүгү катары, инструменталдык кеңештер эми реалдуу убакыт режиминде жакшыртылган ыңгайлаштыруу үчүн жергиликтүү CSS өзгөрмөлөрүн колдонот . 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

Колдонуу

Tooltip плагини мазмунду жана суроо-талап боюнча белгилерди жаратат жана демейки шартта куралдар кеңештерин триггер элементинен кийин жайгаштырат.

JavaScript аркылуу инструментти иштетиңиз:

const exampleEl = document.getElementById('example')
const tooltip = new bootstrap.Tooltip(exampleEl, options)
Толуп кетүү autoжанаscroll

Аспаптын позициясы ата- энелик контейнерге ээ болгондо overflow: autoже overflow: scrollбиз жактырганда автоматтык түрдө өзгөртүүгө аракет кылат .table-responsive, бирок ошентсе да баштапкы жайгаштыруунун ордун сактап калат. Муну чечүү үчүн , демейки маанини жокко чыгаруу үчүн каалаган HTMLElement boundaryпараметрин (параметрди колдонуу менен флип өзгөрткүч үчүн ) коюңуз , мисалы :popperConfig'clippingParents'document.body

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

Белгилөө

dataКурал кеңеши үчүн талап кылынган белги атрибут гана болуп саналат жана titleHTML элементинде сиз кеңешке ээ болгуңуз келет. Аспаптын генерацияланган белгилөөсү өтө жөнөкөй, бирок ал позицияны талап кылат (демейки боюнча, 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 версиясында, бардык компоненттер JSON сап катары жөнөкөй компонент конфигурациясын камтый турган эксперименталдык сакталган маалымат атрибутун колдойт. data-bs-configЭлементте 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опцияларын маалымат атрибуттары менен камсыздоо мүмкүн эмес экенин эске алыңыз.
аты Type Демейки Description
allowList объект Демейки маани Уруксат берилген атрибуттарды жана тегдерди камтыган объект.
animation логикалык true Куралдар үчүн CSS өчүп өтүүнү колдонуңуз.
boundary сап, элемент 'clippingParents' Аспаптын ашуусун чектөө чеги (Поппердин preventOverflow өзгөрткүчүнө гана тиешелүү). Демейки боюнча, ал 'clippingParents'HTMLElement шилтемесин кабыл алат жана (JavaScript аркылуу гана). Көбүрөөк маалымат алуу үчүн Поппердин detectOverflow документтерине кайрылыңыз .
container сап, элемент, жалган false Белгилүү бир элементке инструментти кошот. Мисал: container: 'body'. Бул параметр өзгөчө пайдалуу, анткени ал куралдын кеңешин документтин агымында триггердик элементтин жанында жайгаштырууга мүмкүндүк берет - бул терезенин өлчөмүн өзгөртүү учурунда инструменттин триггер элементинен алыстап кетишине жол бербейт.
customClass сап, функция '' Көрсөтүлгөндө, кеңешке класстарды кошуңуз. Бул класстар шаблондо көрсөтүлгөн класстарга кошумча кошулаарын эске алыңыз. Бир нече класстарды кошуу үчүн аларды боштуктар менен бөлүңүз: 'class-1 class-2'. Сиз ошондой эле кошумча класс атын камтыган бир сапты кайтара турган функцияны өткөрүп бере аласыз.
delay сан, объект 0 Курал кеңешин көрсөтүү жана жашыруу кечигүү (мс) — кол менен триггер түрүнө тиешелүү эмес. Эгерде номер берилсе, кечиктирүү эки жашыруу/көрсөтүү үчүн колдонулат. Объекттин структурасы: delay: { "show": 500, "hide": 100 }.
fallbackPlacements массив ['top', 'right', 'bottom', 'left'] Массивдеги жайгаштыруулардын тизмесин берүү менен кайра жайгаштырууларды аныктаңыз (артыкчылык иретинде). Көбүрөөк маалымат алуу үчүн Поппердин жүрүм-турум документтерине кайрылыңыз .
html логикалык false Инструментте HTMLге уруксат бериңиз. Эгер чын болсо, инструментарийдеги HTML тегдери инструментарийде titleкөрсөтүлөт. Эгер жалган болсо, innerTextмулк DOMга мазмун киргизүү үчүн колдонулат. XSS чабуулдарынан кооптонуп жатсаңыз, текстти колдонуңуз.
offset массив, сап, функция [0, 0] Курал тилкесинин максатына салыштырмалуу жылышы. Сиз маалымат атрибуттарында сапты үтүр менен ажыратылган маанилер менен өткөрө аласыз, мисалы: data-bs-offset="10,20". Функция жылышууну аныктоо үчүн колдонулганда, анын биринчи аргументи катары поппер жайгашуусун, шилтемени жана поппер түзмөгүн камтыган объект менен чакырылат. Иштетүүчү элемент DOM түйүнү экинчи аргумент катары өткөрүлөт. Функция эки сандан турган массивди кайтарышы керек: skidding , distance . Көбүрөөк маалымат алуу үчүн Поппердин офсеттик документтерине кайрылыңыз .
placement сап, функция 'top' Куралды кантип жайгаштыруу керек: авто, жогору, ылдый, сол, оң. Качан autoкөрсөтүлгөн болсо, ал инструменттин кеңешин динамикалык түрдө өзгөртөт. Функция жайгаштырууну аныктоо үчүн колдонулганда, ал биринчи аргумент катары шаймандык DOM түйүнү жана экинчиси катары триггер элементи DOM түйүнү менен чакырылат. Контекст thisинструменттин үлгүсүнө коюлган.
popperConfig нөл, объект, функция null Bootstrap демейки Popper конфигурациясын өзгөртүү үчүн Поппердин конфигурациясын караңыз . Функция Popper конфигурациясын түзүү үчүн колдонулганда, ал Bootstrap демейки Popper конфигурациясын камтыган объект менен чакырылат. Бул демейкиди өз конфигурацияңыз менен колдонууга жана бириктирүүгө жардам берет. Функция Поппер үчүн конфигурация объектин кайтарышы керек.
sanitize логикалык true Санитизацияны иштетүү же өчүрүү. Эгер жандырылса 'template', опциялар тазаланат 'content'.'title'
sanitizeFn null, функция 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 документтерибизди караңыз .

Метод Description
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кабыл алат , мында ар бир мулк ачкычы popover шаблонунун ичинде objectжарактуу селектор болуп саналат жана ар бир тиешелүү касиет-маани болушу мүмкүн | | | stringstringelementfunctionnull

Окуялар

Окуя Description
hide.bs.tooltip Бул окуя hideинстанция ыкмасы чакырылганда дароо өчүрүлөт.
hidden.bs.tooltip Бул окуя поповер колдонуучудан жашырылгандан кийин өчүрүлөт (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()