Перейти до основного вмісту Перейти до навігації документами
Check
in English

Навігація та вкладки

Документація та приклади використання навігаційних компонентів Bootstrap.

База нав

Навігація, доступна в Bootstrap, має загальну розмітку та стилі, від базового .navкласу до активного та вимкненого станів. Поміняйте місцями класи модифікаторів для перемикання між кожним стилем.

Базовий .navкомпонент створений за допомогою flexbox і забезпечує міцну основу для створення всіх типів компонентів навігації. Він містить деякі перевизначення стилів (для роботи зі списками), деякі доповнення посилань для більших областей звернення та базові відключені стилі.

Базовий .navкомпонент не містить жодного .activeстану. Наступні приклади включають клас, головним чином, щоб продемонструвати, що цей конкретний клас не запускає жодних спеціальних стилів.

Щоб передати активний стан допоміжним технологіям, використовуйте aria-currentатрибут — використовуючи pageзначення для поточної сторінки або trueдля поточного елемента в наборі.

html
<ul class="nav">
  <li class="nav-item">
    <a class="nav-link active" aria-current="page" href="#">Active</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link disabled">Disabled</a>
  </li>
</ul>

Класи використовуються всюди, тому ваша розмітка може бути надзвичайно гнучкою. Використовуйте <ul>s, як вище, <ol>якщо порядок ваших предметів важливий, або кидайте свій власний з <nav>елементом. Оскільки .navвикористовується display: flex, навігаційні посилання поводяться так само, як навігаційні елементи, але без додаткової розмітки.

html
<nav class="nav">
  <a class="nav-link active" aria-current="page" href="#">Active</a>
  <a class="nav-link" href="#">Link</a>
  <a class="nav-link" href="#">Link</a>
  <a class="nav-link disabled">Disabled</a>
</nav>

Доступні стилі

Змініть стиль .navкомпонента s за допомогою модифікаторів і утиліт. За потреби комбінуйте та створюйте власні.

Горизонтальне вирівнювання

Змініть горизонтальне вирівнювання вашої навігації за допомогою утиліт flexbox . За замовчуванням навігації вирівняно за лівим краєм, але ви можете легко змінити їх на центр або праворуч.

По центру з .justify-content-center:

html
<ul class="nav justify-content-center">
  <li class="nav-item">
    <a class="nav-link active" aria-current="page" href="#">Active</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link disabled">Disabled</a>
  </li>
</ul>

Вирівняно по правому краю .justify-content-end:

html
<ul class="nav justify-content-end">
  <li class="nav-item">
    <a class="nav-link active" aria-current="page" href="#">Active</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link disabled">Disabled</a>
  </li>
</ul>

Вертикальний

Упорядкуйте свою навігацію, змінивши напрямок гнучкого елемента за допомогою .flex-columnутиліти. Потрібно розташувати їх на одних вікнах перегляду, а не на інших? Використовуйте адаптивні версії (наприклад, .flex-sm-column).

html
<ul class="nav flex-column">
  <li class="nav-item">
    <a class="nav-link active" aria-current="page" href="#">Active</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link disabled">Disabled</a>
  </li>
</ul>

Як завжди, вертикальна навігація можлива і без <ul>s.

html
<nav class="nav flex-column">
  <a class="nav-link active" aria-current="page" href="#">Active</a>
  <a class="nav-link" href="#">Link</a>
  <a class="nav-link" href="#">Link</a>
  <a class="nav-link disabled">Disabled</a>
</nav>

Вкладки

Бере основну навігацію вище та додає .nav-tabsклас для створення інтерфейсу з вкладками. Використовуйте їх для створення областей із вкладками за допомогою нашого плагіна JavaScript вкладок .

html
<ul class="nav nav-tabs">
  <li class="nav-item">
    <a class="nav-link active" aria-current="page" href="#">Active</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link disabled">Disabled</a>
  </li>
</ul>

Таблетки

Візьміть той самий HTML, але використовуйте .nav-pillsзамість нього:

html
<ul class="nav nav-pills">
  <li class="nav-item">
    <a class="nav-link active" aria-current="page" href="#">Active</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link disabled">Disabled</a>
  </li>
</ul>

Заповніть і обґрунтуйте

Змусити ваш .navвміст розширити всю доступну ширину одного з двох класів модифікаторів. Щоб пропорційно заповнити весь доступний простір вашим .nav-items, використовуйте .nav-fill. Зауважте, що весь горизонтальний простір зайнято, але не кожен елемент навігації має однакову ширину.

html
<ul class="nav nav-pills nav-fill">
  <li class="nav-item">
    <a class="nav-link active" aria-current="page" href="#">Active</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Much longer nav link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link disabled">Disabled</a>
  </li>
</ul>

Використовуючи <nav>навігацію на основі -, ви можете сміливо опускати .nav-item, оскільки .nav-linkце потрібно лише для <a>елементів стилю.

html
<nav class="nav nav-pills nav-fill">
  <a class="nav-link active" aria-current="page" href="#">Active</a>
  <a class="nav-link" href="#">Much longer nav link</a>
  <a class="nav-link" href="#">Link</a>
  <a class="nav-link disabled">Disabled</a>
</nav>

Для елементів однакової ширини використовуйте .nav-justified. Весь горизонтальний простір буде зайнято навігаційними посиланнями, але на відміну від .nav-fillвищезазначеного, кожен елемент навігації матиме однакову ширину.

html
<ul class="nav nav-pills nav-justified">
  <li class="nav-item">
    <a class="nav-link active" aria-current="page" href="#">Active</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Much longer nav link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link disabled">Disabled</a>
  </li>
</ul>

Подібно до .nav-fillприкладу використання <nav>навігації на основі.

html
<nav class="nav nav-pills nav-justified">
  <a class="nav-link active" aria-current="page" href="#">Active</a>
  <a class="nav-link" href="#">Much longer nav link</a>
  <a class="nav-link" href="#">Link</a>
  <a class="nav-link disabled">Disabled</a>
</nav>

Робота з утилітами flex

Якщо вам потрібні адаптивні варіанти навігації, подумайте про використання серії утиліт flexbox . Незважаючи на те, що ці утиліти більш докладні, вони пропонують більше налаштувань для адаптивних точок зупину. У наведеному нижче прикладі наша навігація буде розміщена на найнижчій точці розриву, а потім адаптована до горизонтального макета, який заповнює доступну ширину, починаючи з малої точки розриву.

html
<nav class="nav nav-pills flex-column flex-sm-row">
  <a class="flex-sm-fill text-sm-center nav-link active" aria-current="page" href="#">Active</a>
  <a class="flex-sm-fill text-sm-center nav-link" href="#">Longer nav link</a>
  <a class="flex-sm-fill text-sm-center nav-link" href="#">Link</a>
  <a class="flex-sm-fill text-sm-center nav-link disabled">Disabled</a>
</nav>

Щодо доступності

Якщо ви використовуєте navs для забезпечення навігаційної панелі, обов’язково додайте role="navigation"до найбільш логічного батьківського контейнера <ul>, або оберніть <nav>елемент навколо всієї навігації. Не додавайте роль до <ul>себе, оскільки це запобіжить оголошенню її як справжнього списку допоміжними технологіями.

Зауважте, що панелі навігації, навіть якщо візуально оформлено як вкладки з .nav-tabsкласом, не слід надавати атрибути або . Вони підходять лише для динамічних інтерфейсів із вкладками, як описано в шаблоні вкладок Посібника з практики розробки ARIA . Для прикладу перегляньте поведінку JavaScript для динамічних інтерфейсів із вкладками в цьому розділі. Атрибут не є обов’язковим для інтерфейсів із динамічними вкладками, оскільки наш JavaScript обробляє вибраний стан шляхом додавання на активну вкладку.role="tablist"role="tab"role="tabpanel"aria-currentaria-selected="true"

Використання спадних меню

Додайте спадні меню з додатковим кодом HTML і плагіном JavaScript для спадних меню .

Вкладки з розкривними меню

html
<ul class="nav nav-tabs">
  <li class="nav-item">
    <a class="nav-link active" aria-current="page" href="#">Active</a>
  </li>
  <li class="nav-item dropdown">
    <a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" role="button" aria-expanded="false">Dropdown</a>
    <ul class="dropdown-menu">
      <li><a class="dropdown-item" href="#">Action</a></li>
      <li><a class="dropdown-item" href="#">Another action</a></li>
      <li><a class="dropdown-item" href="#">Something else here</a></li>
      <li><hr class="dropdown-divider"></li>
      <li><a class="dropdown-item" href="#">Separated link</a></li>
    </ul>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link disabled">Disabled</a>
  </li>
</ul>

Таблетки з випадаючими

html
<ul class="nav nav-pills">
  <li class="nav-item">
    <a class="nav-link active" aria-current="page" href="#">Active</a>
  </li>
  <li class="nav-item dropdown">
    <a class="nav-link dropdown-toggle" data-bs-toggle="dropdown" href="#" role="button" aria-expanded="false">Dropdown</a>
    <ul class="dropdown-menu">
      <li><a class="dropdown-item" href="#">Action</a></li>
      <li><a class="dropdown-item" href="#">Another action</a></li>
      <li><a class="dropdown-item" href="#">Something else here</a></li>
      <li><hr class="dropdown-divider"></li>
      <li><a class="dropdown-item" href="#">Separated link</a></li>
    </ul>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Link</a>
  </li>
  <li class="nav-item">
    <a class="nav-link disabled">Disabled</a>
  </li>
</ul>

CSS

Змінні

Додано у v5.2.0

У рамках розвитку підходу Bootstrap до змінних CSS навігації тепер використовують локальні змінні CSS на .nav, .nav-tabsі .nav-pillsдля покращеного налаштування в реальному часі. Значення для змінних CSS встановлюються через Sass, тому налаштування Sass все ще підтримується.

На .navбазовому класі:

  --#{$prefix}nav-link-padding-x: #{$nav-link-padding-x};
  --#{$prefix}nav-link-padding-y: #{$nav-link-padding-y};
  @include rfs($nav-link-font-size, --#{$prefix}nav-link-font-size);
  --#{$prefix}nav-link-font-weight: #{$nav-link-font-weight};
  --#{$prefix}nav-link-color: #{$nav-link-color};
  --#{$prefix}nav-link-hover-color: #{$nav-link-hover-color};
  --#{$prefix}nav-link-disabled-color: #{$nav-link-disabled-color};
  

У .nav-tabsкласі модифікатора:

  --#{$prefix}nav-tabs-border-width: #{$nav-tabs-border-width};
  --#{$prefix}nav-tabs-border-color: #{$nav-tabs-border-color};
  --#{$prefix}nav-tabs-border-radius: #{$nav-tabs-border-radius};
  --#{$prefix}nav-tabs-link-hover-border-color: #{$nav-tabs-link-hover-border-color};
  --#{$prefix}nav-tabs-link-active-color: #{$nav-tabs-link-active-color};
  --#{$prefix}nav-tabs-link-active-bg: #{$nav-tabs-link-active-bg};
  --#{$prefix}nav-tabs-link-active-border-color: #{$nav-tabs-link-active-border-color};
  

У .nav-pillsкласі модифікатора:

  --#{$prefix}nav-pills-border-radius: #{$nav-pills-border-radius};
  --#{$prefix}nav-pills-link-active-color: #{$nav-pills-link-active-color};
  --#{$prefix}nav-pills-link-active-bg: #{$nav-pills-link-active-bg};
  

Змінні Sass

$nav-link-padding-y:                .5rem;
$nav-link-padding-x:                1rem;
$nav-link-font-size:                null;
$nav-link-font-weight:              null;
$nav-link-color:                    var(--#{$prefix}link-color);
$nav-link-hover-color:              var(--#{$prefix}link-hover-color);
$nav-link-transition:               color .15s ease-in-out, background-color .15s ease-in-out, border-color .15s ease-in-out;
$nav-link-disabled-color:           $gray-600;

$nav-tabs-border-color:             $gray-300;
$nav-tabs-border-width:             $border-width;
$nav-tabs-border-radius:            $border-radius;
$nav-tabs-link-hover-border-color:  $gray-200 $gray-200 $nav-tabs-border-color;
$nav-tabs-link-active-color:        $gray-700;
$nav-tabs-link-active-bg:           $body-bg;
$nav-tabs-link-active-border-color: $gray-300 $gray-300 $nav-tabs-link-active-bg;

$nav-pills-border-radius:           $border-radius;
$nav-pills-link-active-color:       $component-active-color;
$nav-pills-link-active-bg:          $component-active-bg;

Поведінка JavaScript

Використовуйте плагін JavaScript для вкладок — включіть його окремо або через скомпільований bootstrap.jsфайл — щоб розширити наші навігаційні вкладки та таблетки для створення панелей із вкладками локального вмісту.

Це деякий вміст заповнювача , пов’язаний із вмістом вкладки «Домашня сторінка» . Натискання іншої вкладки перемикає видимість цієї для наступної. Вкладка JavaScript змінює класи для керування видимістю вмісту та стилем. Ви можете використовувати його з вкладками, таблетками та будь-якою іншою .navнавігацією.

Це деякий вміст заповнювача , пов’язаний із вмістом вкладки «Профіль» . Натискання іншої вкладки перемикає видимість цієї для наступної. Вкладка JavaScript змінює класи для керування видимістю вмісту та стилем. Ви можете використовувати його з вкладками, таблетками та будь-якою іншою .navнавігацією.

This is some placeholder content the Contact tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav-powered navigation.

This is some placeholder content the Disabled tab's associated content.

<ul class="nav nav-tabs" id="myTab" role="tablist">
  <li class="nav-item" role="presentation">
    <button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#home-tab-pane" type="button" role="tab" aria-controls="home-tab-pane" aria-selected="true">Home</button>
  </li>
  <li class="nav-item" role="presentation">
    <button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#profile-tab-pane" type="button" role="tab" aria-controls="profile-tab-pane" aria-selected="false">Profile</button>
  </li>
  <li class="nav-item" role="presentation">
    <button class="nav-link" id="contact-tab" data-bs-toggle="tab" data-bs-target="#contact-tab-pane" type="button" role="tab" aria-controls="contact-tab-pane" aria-selected="false">Contact</button>
  </li>
  <li class="nav-item" role="presentation">
    <button class="nav-link" id="disabled-tab" data-bs-toggle="tab" data-bs-target="#disabled-tab-pane" type="button" role="tab" aria-controls="disabled-tab-pane" aria-selected="false" disabled>Disabled</button>
  </li>
</ul>
<div class="tab-content" id="myTabContent">
  <div class="tab-pane fade show active" id="home-tab-pane" role="tabpanel" aria-labelledby="home-tab" tabindex="0">...</div>
  <div class="tab-pane fade" id="profile-tab-pane" role="tabpanel" aria-labelledby="profile-tab" tabindex="0">...</div>
  <div class="tab-pane fade" id="contact-tab-pane" role="tabpanel" aria-labelledby="contact-tab" tabindex="0">...</div>
  <div class="tab-pane fade" id="disabled-tab-pane" role="tabpanel" aria-labelledby="disabled-tab" tabindex="0">...</div>
</div>

Щоб задовольнити ваші потреби, це працює з <ul>розміткою на основі розмітки, як показано вище, або з будь-якою довільною розміткою «розгорнути власну». Зауважте, що якщо ви використовуєте <nav>, вам не слід додавати role="tablist"безпосередньо до нього, оскільки це перевизначить рідну роль елемента як орієнтира навігації. Замість цього перейдіть на альтернативний елемент (у прикладі нижче простий <div>) і оберніть <nav>навколо нього.

<nav>
  <div class="nav nav-tabs" id="nav-tab" role="tablist">
    <button class="nav-link active" id="nav-home-tab" data-bs-toggle="tab" data-bs-target="#nav-home" type="button" role="tab" aria-controls="nav-home" aria-selected="true">Home</button>
    <button class="nav-link" id="nav-profile-tab" data-bs-toggle="tab" data-bs-target="#nav-profile" type="button" role="tab" aria-controls="nav-profile" aria-selected="false">Profile</button>
    <button class="nav-link" id="nav-contact-tab" data-bs-toggle="tab" data-bs-target="#nav-contact" type="button" role="tab" aria-controls="nav-contact" aria-selected="false">Contact</button>
    <button class="nav-link" id="nav-disabled-tab" data-bs-toggle="tab" data-bs-target="#nav-disabled" type="button" role="tab" aria-controls="nav-disabled" aria-selected="false" disabled>Disabled</button>
  </div>
</nav>
<div class="tab-content" id="nav-tabContent">
  <div class="tab-pane fade show active" id="nav-home" role="tabpanel" aria-labelledby="nav-home-tab" tabindex="0">...</div>
  <div class="tab-pane fade" id="nav-profile" role="tabpanel" aria-labelledby="nav-profile-tab" tabindex="0">...</div>
  <div class="tab-pane fade" id="nav-contact" role="tabpanel" aria-labelledby="nav-contact-tab" tabindex="0">...</div>
  <div class="tab-pane fade" id="nav-disabled" role="tabpanel" aria-labelledby="nav-disabled-tab" tabindex="0">...</div>
</div>

Плагін вкладок також працює з таблетками.

Це деякий вміст заповнювача , пов’язаний із вмістом вкладки «Домашня сторінка» . Натискання іншої вкладки перемикає видимість цієї для наступної. Вкладка JavaScript змінює класи для керування видимістю вмісту та стилем. Ви можете використовувати його з вкладками, таблетками та будь-якою іншою .navнавігацією.

This is some placeholder content the Profile tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav-powered navigation.

This is some placeholder content the Contact tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav-powered navigation.

This is some placeholder content the Disabled tab's associated content.

<ul class="nav nav-pills mb-3" id="pills-tab" role="tablist">
  <li class="nav-item" role="presentation">
    <button class="nav-link active" id="pills-home-tab" data-bs-toggle="pill" data-bs-target="#pills-home" type="button" role="tab" aria-controls="pills-home" aria-selected="true">Home</button>
  </li>
  <li class="nav-item" role="presentation">
    <button class="nav-link" id="pills-profile-tab" data-bs-toggle="pill" data-bs-target="#pills-profile" type="button" role="tab" aria-controls="pills-profile" aria-selected="false">Profile</button>
  </li>
  <li class="nav-item" role="presentation">
    <button class="nav-link" id="pills-contact-tab" data-bs-toggle="pill" data-bs-target="#pills-contact" type="button" role="tab" aria-controls="pills-contact" aria-selected="false">Contact</button>
  </li>
  <li class="nav-item" role="presentation">
    <button class="nav-link" id="pills-disabled-tab" data-bs-toggle="pill" data-bs-target="#pills-disabled" type="button" role="tab" aria-controls="pills-disabled" aria-selected="false" disabled>Disabled</button>
  </li>
</ul>
<div class="tab-content" id="pills-tabContent">
  <div class="tab-pane fade show active" id="pills-home" role="tabpanel" aria-labelledby="pills-home-tab" tabindex="0">...</div>
  <div class="tab-pane fade" id="pills-profile" role="tabpanel" aria-labelledby="pills-profile-tab" tabindex="0">...</div>
  <div class="tab-pane fade" id="pills-contact" role="tabpanel" aria-labelledby="pills-contact-tab" tabindex="0">...</div>
  <div class="tab-pane fade" id="pills-disabled" role="tabpanel" aria-labelledby="pills-disabled-tab" tabindex="0">...</div>
</div>

І з вертикальними таблетками. В ідеалі для вертикальних вкладок також слід додати aria-orientation="vertical"до контейнера списку вкладок.

Це деякий вміст заповнювача , пов’язаний із вмістом вкладки «Домашня сторінка» . Натискання іншої вкладки перемикає видимість цієї для наступної. Вкладка JavaScript змінює класи для керування видимістю вмісту та стилем. Ви можете використовувати його з вкладками, таблетками та будь-якою іншою .navнавігацією.

This is some placeholder content the Profile tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav-powered navigation.

This is some placeholder content the Disabled tab's associated content.

This is some placeholder content the Messages tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav-powered navigation.

This is some placeholder content the Settings tab's associated content. Clicking another tab will toggle the visibility of this one for the next. The tab JavaScript swaps classes to control the content visibility and styling. You can use it with tabs, pills, and any other .nav-powered navigation.

<div class="d-flex align-items-start">
  <div class="nav flex-column nav-pills me-3" id="v-pills-tab" role="tablist" aria-orientation="vertical">
    <button class="nav-link active" id="v-pills-home-tab" data-bs-toggle="pill" data-bs-target="#v-pills-home" type="button" role="tab" aria-controls="v-pills-home" aria-selected="true">Home</button>
    <button class="nav-link" id="v-pills-profile-tab" data-bs-toggle="pill" data-bs-target="#v-pills-profile" type="button" role="tab" aria-controls="v-pills-profile" aria-selected="false">Profile</button>
    <button class="nav-link" id="v-pills-disabled-tab" data-bs-toggle="pill" data-bs-target="#v-pills-disabled" type="button" role="tab" aria-controls="v-pills-disabled" aria-selected="false" disabled>Disabled</button>
    <button class="nav-link" id="v-pills-messages-tab" data-bs-toggle="pill" data-bs-target="#v-pills-messages" type="button" role="tab" aria-controls="v-pills-messages" aria-selected="false">Messages</button>
    <button class="nav-link" id="v-pills-settings-tab" data-bs-toggle="pill" data-bs-target="#v-pills-settings" type="button" role="tab" aria-controls="v-pills-settings" aria-selected="false">Settings</button>
  </div>
  <div class="tab-content" id="v-pills-tabContent">
    <div class="tab-pane fade show active" id="v-pills-home" role="tabpanel" aria-labelledby="v-pills-home-tab" tabindex="0">...</div>
    <div class="tab-pane fade" id="v-pills-profile" role="tabpanel" aria-labelledby="v-pills-profile-tab" tabindex="0">...</div>
    <div class="tab-pane fade" id="v-pills-disabled" role="tabpanel" aria-labelledby="v-pills-disabled-tab" tabindex="0">...</div>
    <div class="tab-pane fade" id="v-pills-messages" role="tabpanel" aria-labelledby="v-pills-messages-tab" tabindex="0">...</div>
    <div class="tab-pane fade" id="v-pills-settings" role="tabpanel" aria-labelledby="v-pills-settings-tab" tabindex="0">...</div>
  </div>
</div>

Доступність

Динамічні інтерфейси з вкладками, як описано в ARIA Authoring Practices Guide tabs pattern , вимагають role="tablist", role="tab", role="tabpanel"і додаткових aria-атрибутів, щоб передавати свою структуру, функціональність і поточний стан користувачам допоміжних технологій (таких як програми зчитування з екрана). Як найкращу практику ми рекомендуємо використовувати <button>елементи для вкладок, оскільки це елементи керування, які запускають динамічні зміни, а не посилання, які переходять на нову сторінку чи місце.

Відповідно до шаблону ARIA Authoring Practices, лише поточна активна вкладка отримує фокус клавіатури. Коли плагін JavaScript ініціалізовано, він буде встановлений tabindex="-1"на всіх неактивних елементах керування вкладками. Коли поточна активна вкладка отримує фокус, клавіші керування курсором активують попередню/наступну вкладку, а плагін відповідно змінює переміщенняtabindex . Однак зауважте, що плагін JavaScript не розрізняє горизонтальні та вертикальні списки вкладок, коли йдеться про взаємодію з клавішами курсору: незалежно від орієнтації списку вкладок, курсори вгору та ліворуч переходять до попередньої вкладки, а курсори вниз і праворуч – до наступну вкладку.

Загалом, щоб полегшити навігацію за допомогою клавіатури, рекомендується також зробити самі панелі вкладок доступними для фокусування, якщо тільки перший елемент, що містить значущий вміст усередині панелі вкладок, уже не можна фокусувати. Плагін JavaScript не намагається впоратися з цим аспектом — у відповідних випадках вам потрібно буде явно зробити панелі вкладок доступними для фокусування, додавши tabindex="0"розмітку.
Плагін JavaScript для вкладок не підтримує інтерфейси з вкладками, які містять спадні меню, оскільки це спричиняє проблеми з зручністю використання та доступністю. З точки зору зручності використання, той факт, що активний елемент поточної вкладки не видно відразу (оскільки він знаходиться в закритому спадному меню), може викликати плутанину. З точки зору доступності, наразі немає розумного способу зіставлення такого роду конструкції зі стандартним шаблоном WAI ARIA, тобто її неможливо зробити зрозумілою для користувачів допоміжних технологій.

Використання атрибутів даних

Ви можете активувати вкладку або навігацію без написання будь-якого JavaScript, просто вказавши data-bs-toggle="tab"або data-bs-toggle="pill"на елементі. Використовуйте ці атрибути даних на .nav-tabsабо .nav-pills.

<!-- Nav tabs -->
<ul class="nav nav-tabs" id="myTab" role="tablist">
  <li class="nav-item" role="presentation">
    <button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#home" type="button" role="tab" aria-controls="home" aria-selected="true">Home</button>
  </li>
  <li class="nav-item" role="presentation">
    <button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#profile" type="button" role="tab" aria-controls="profile" aria-selected="false">Profile</button>
  </li>
  <li class="nav-item" role="presentation">
    <button class="nav-link" id="messages-tab" data-bs-toggle="tab" data-bs-target="#messages" type="button" role="tab" aria-controls="messages" aria-selected="false">Messages</button>
  </li>
  <li class="nav-item" role="presentation">
    <button class="nav-link" id="settings-tab" data-bs-toggle="tab" data-bs-target="#settings" type="button" role="tab" aria-controls="settings" aria-selected="false">Settings</button>
  </li>
</ul>

<!-- Tab panes -->
<div class="tab-content">
  <div class="tab-pane active" id="home" role="tabpanel" aria-labelledby="home-tab" tabindex="0">...</div>
  <div class="tab-pane" id="profile" role="tabpanel" aria-labelledby="profile-tab" tabindex="0">...</div>
  <div class="tab-pane" id="messages" role="tabpanel" aria-labelledby="messages-tab" tabindex="0">...</div>
  <div class="tab-pane" id="settings" role="tabpanel" aria-labelledby="settings-tab" tabindex="0">...</div>
</div>

Через JavaScript

Увімкнути вкладки з можливістю вкладок через JavaScript (кожну вкладку потрібно активувати окремо):

const triggerTabList = document.querySelectorAll('#myTab button')
triggerTabList.forEach(triggerEl => {
  const tabTrigger = new bootstrap.Tab(triggerEl)

  triggerEl.addEventListener('click', event => {
    event.preventDefault()
    tabTrigger.show()
  })
})

Ви можете активувати окремі вкладки кількома способами:

const triggerEl = document.querySelector('#myTab button[data-bs-target="#profile"]')
bootstrap.Tab.getInstance(triggerEl).show() // Select tab by name

const triggerFirstTabEl = document.querySelector('#myTab li:first-child button')
bootstrap.Tab.getInstance(triggerFirstTabEl).show() // Select first tab

Ефект вицвітання

Щоб вкладки зникали, додайте .fadeдо кожної .tab-pane. Перша панель вкладок також має .showзробити початковий вміст видимим.

<div class="tab-content">
  <div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab" tabindex="0">...</div>
  <div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab" tabindex="0">...</div>
  <div class="tab-pane fade" id="messages" role="tabpanel" aria-labelledby="messages-tab" tabindex="0">...</div>
  <div class="tab-pane fade" id="settings" role="tabpanel" aria-labelledby="settings-tab" tabindex="0">...</div>
</div>

методи

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

Усі методи API є асинхронними та починають перехід . Вони повертаються до абонента, щойно перехід починається, але до його завершення . Крім того, виклик методу компонента, що переходить, ігноруватиметься .

Дивіться нашу документацію JavaScript для отримання додаткової інформації .

Активує ваш вміст як елемент вкладки.

Ви можете створити екземпляр вкладки за допомогою конструктора, наприклад:

const bsTab = new bootstrap.Tab('#myTab')
метод опис
dispose Знищує вкладку елемента.
getInstance Статичний метод, який дозволяє вам отримати екземпляр вкладки, пов’язаний з елементом DOM, ви можете використовувати його так: bootstrap.Tab.getInstance(element).
getOrCreateInstance Статичний метод, який повертає екземпляр вкладки, пов’язаний з елементом DOM, або створює новий, якщо він не був ініціалізований. Ви можете використовувати його так: bootstrap.Tab.getOrCreateInstance(element).
show Вибирає вказану вкладку та показує пов’язану з нею панель. Будь-яка інша раніше вибрана вкладка стає невибраною, а відповідна панель прихована. Повертається до абонента до того, як буде фактично показано панель вкладок (тобто до того , як відбудеться shown.bs.tabподія).

Події

Під час показу нової вкладки події запускаються в такому порядку:

  1. hide.bs.tab(на поточній активній вкладці)
  2. show.bs.tab(на вкладці для показу)
  3. hidden.bs.tab(на попередній активній вкладці, така ж, як і для hide.bs.tabподії)
  4. shown.bs.tab(на щойно показаній щойно активній вкладці, тій самій, що й для show.bs.tabподії)

Якщо жодна вкладка ще не була активною, події hide.bs.tabта hidden.bs.tabне запускатимуться.

Тип події опис
hide.bs.tab Ця подія запускається, коли потрібно показати нову вкладку (і, отже, попередню активну вкладку потрібно приховати). Використовуйте event.targetта event.relatedTargetдля націлювання на поточну активну вкладку та нову вкладку, яка незабаром стане активною відповідно.
hidden.bs.tab Ця подія запускається після показу нової вкладки (тому попередня активна вкладка прихована). Використовуйте event.targetта event.relatedTargetдля націлювання на попередню активну вкладку та нову активну вкладку відповідно.
show.bs.tab Ця подія запускається під час показу вкладок, але до того, як буде показано нову вкладку. Використовуйте event.targetта event.relatedTargetдля націлювання на активну вкладку та попередню активну вкладку (якщо доступна) відповідно.
shown.bs.tab Ця подія запускається під час показу вкладок після показу вкладки. Використовуйте event.targetта event.relatedTargetдля націлювання на активну вкладку та попередню активну вкладку (якщо доступна) відповідно.
const tabEl = document.querySelector('button[data-bs-toggle="tab"]')
tabEl.addEventListener('shown.bs.tab', event => {
  event.target // newly activated tab
  event.relatedTarget // previous active tab
})