Навигация и вкладки
Документация и примеры использования навигационных компонентов Bootstrap.
Основы
Навигация, доступная в Bootstrap, имеет общую разметку и стили, от базового класса .nav до активного и отключенного состояний. Поменяйте местами классы модификаторов, чтобы переключаться между каждым стилем.
Базовый компонент .nav построен на основе flexbox и обеспечивает прочную основу для создания всех типов компонентов навигации. Он включает в себя некоторые переопределения стиля (для работы со списками), некоторые отступы для ссылок для больших областей попадания и базовый отключенный стиль.
Базовый компонент .nav не включает никакого состояния .active. Следующие примеры включают класс, главным образом, чтобы продемонстрировать, что этот конкретный класс не запускает никакого специального стиля.
Чтобы передать активное состояние вспомогательным технологиям, используйте атрибут aria-current - используя значение page для текущей страницы или true для текущего элемента в наборе.
<ulclass="nav"><liclass="nav-item"><aclass="nav-link active"aria-current="page"href="#">Активная</a></li><liclass="nav-item"><aclass="nav-link"href="#">Ссылка</a></li><liclass="nav-item"><aclass="nav-link"href="#">Ссылка</a></li><liclass="nav-item"><aclass="nav-link disabled">Отключенная</a></li></ul>Классы используются повсюду, поэтому Ваша разметка может быть очень гибкой. Используйте <ul>, как указано выше, <ol>, если порядок Ваших элементов важен, или сверните свой собственный с элементом <nav>. Поскольку в файле .nav используется display: flex, навигационные ссылки ведут себя так же, как элементы навигации, но без дополнительной разметки.
<navclass="nav"><aclass="nav-link active"aria-current="page"href="#">Активная</a><aclass="nav-link"href="#">Ссылка</a><aclass="nav-link"href="#">Ссылка</a><aclass="nav-link disabled">Отключенная</a></nav>Доступные стили
Изменяйте стиль компонентов .nav классами-модификаторами и обычными классами. Смешивайте их и настраивайте как надо, или создайте свои.
Горизонтальное выравнивание
Измените горизонтальное выравнивание Вашей навигации с помощью утилит flexbox. По умолчанию элементы навигации выравниваются по левому краю, но Вы можете легко изменить их на выравнивание по центру или по правому краю.
Выравнивание по центру с помощью .justify-content-center:
<ulclass="nav justify-content-center"><liclass="nav-item"><aclass="nav-link active"aria-current="page"href="#">Активная</a></li><liclass="nav-item"><aclass="nav-link"href="#">Ссылка</a></li><liclass="nav-item"><aclass="nav-link"href="#">Ссылка</a></li><liclass="nav-item"><aclass="nav-link disabled">Отключенная</a></li></ul>Выравнивание по правому краю с помощью .justify-content-end:
<ulclass="nav justify-content-end"><liclass="nav-item"><aclass="nav-link active"aria-current="page"href="#">Активная</a></li><liclass="nav-item"><aclass="nav-link"href="#">Ссылка</a></li><liclass="nav-item"><aclass="nav-link"href="#">Ссылка</a></li><liclass="nav-item"><aclass="nav-link disabled">Отключенная</a></li></ul>Вертикально
Сгруппируйте Вашу навигацию, изменив направление гибкого элемента с помощью утилиты .flex-column. Нужно наложить их на одни окна просмотра, но не на другие? Используйте адаптивные версии (например, .flex-sm-column).
<ulclass="nav flex-column"><liclass="nav-item"><aclass="nav-link active"aria-current="page"href="#">Активная</a></li><liclass="nav-item"><aclass="nav-link"href="#">Ссылка</a></li><liclass="nav-item"><aclass="nav-link"href="#">Ссылка</a></li><liclass="nav-item"><aclass="nav-link disabled">Отключенная</a></li></ul>Как всегда, вертикальная навигация возможна и без <ul>.
<navclass="nav flex-column"><aclass="nav-link active"aria-current="page"href="#">Активная</a><aclass="nav-link"href="#">Ссылка</a><aclass="nav-link"href="#">Ссылка</a><aclass="nav-link disabled">Отключенная</a></nav>Вкладки (Tabs)
Берет базовую навигацию сверху и добавляет класс .nav-tabs для создания интерфейса с вкладками. Используйте их для создания областей с вкладками с помощью нашего подключаемого модуля JavaScript.
<ulclass="nav nav-tabs"><liclass="nav-item"><aclass="nav-link active"aria-current="page"href="#">Активная</a></li><liclass="nav-item"><aclass="nav-link"href="#">Ссылка</a></li><liclass="nav-item"><aclass="nav-link"href="#">Ссылка</a></li><liclass="nav-item"><aclass="nav-link disabled">Отключенная</a></li></ul>Подушки (Pills)
Возьмите тот же HTML, но используйте вместо него .nav-pills:
<ulclass="nav nav-pills"><liclass="nav-item"><aclass="nav-link active"aria-current="page"href="#">Активная</a></li><liclass="nav-item"><aclass="nav-link"href="#">Ссылка</a></li><liclass="nav-item"><aclass="nav-link"href="#">Ссылка</a></li><liclass="nav-item"><aclass="nav-link disabled">Отключенная</a></li></ul>Подчеркивание
Возьмите тот же HTML, но вместо этого используйте .nav-underline:
<ulclass="nav nav-underline"><liclass="nav-item"><aclass="nav-link active"aria-current="page"href="#">Активная</a></li><liclass="nav-item"><aclass="nav-link"href="#">Ссылка</a></li><liclass="nav-item"><aclass="nav-link"href="#">Ссылка</a></li><liclass="nav-item"><aclass="nav-link disabled">Отключенная</a></li></ul>Заполнение и выравнивание
Заставьте содержимое Вашего .nav расширить всю доступную ширину одним из двух классов модификаторов. Чтобы пропорционально заполнить все доступное пространство Вашим .nav-item, используйте .nav-fill. Обратите внимание, что все горизонтальное пространство занято, но не все элементы навигации имеют одинаковую ширину.
<ulclass="nav nav-pills nav-fill"><liclass="nav-item"><aclass="nav-link active"aria-current="page"href="#">Активная</a></li><liclass="nav-item"><aclass="nav-link"href="#">На много длиннее ссылка</a></li><liclass="nav-item"><aclass="nav-link"href="#">Ссылка</a></li><liclass="nav-item"><aclass="nav-link disabled">Отключенная</a></li></ul>При использовании навигации на основе <nav> Вы можете смело опускать .nav-item, поскольку для стилизации элементов <a> требуется только .nav-link.
<navclass="nav nav-pills nav-fill"><aclass="nav-link active"aria-current="page"href="#">Активная</a><aclass="nav-link"href="#">На много длиннее ссылка</a><aclass="nav-link"href="#">Ссылка</a><aclass="nav-link disabled">Отключенная</a></nav>Для элементов одинаковой ширины используйте .nav-justified. Все горизонтальное пространство будет занято навигационными ссылками, но в отличие от .nav-fill выше, каждый элемент навигации будет одинаковой ширины.
<ulclass="nav nav-pills nav-justified"><liclass="nav-item"><aclass="nav-link active"aria-current="page"href="#">Активная</a></li><liclass="nav-item"><aclass="nav-link"href="#">На много длиннее ссылка</a></li><liclass="nav-item"><aclass="nav-link"href="#">Ссылка</a></li><liclass="nav-item"><aclass="nav-link disabled">Отключенная</a></li></ul>Подобно примеру .nav-fill с использованием навигации на основе <nav>.
<navclass="nav nav-pills nav-justified"><aclass="nav-link active"aria-current="page"href="#">Активная</a><aclass="nav-link"href="#">На много длиннее ссылка</a><aclass="nav-link"href="#">Ссылка</a><aclass="nav-link disabled">Отключенная</a></nav>Работа с гибкими классами (flex)
Если вам нужна «отзывчивая» навигационная панель, рассмотрите использование классов флексбокса. Более подробные в спецификации, они предлагают более широкую настройку по отзывчивым брейкпойнтам. В примере ниже наша навигационная панель будет расположена по вертикали на самом маленьком брейкпойнте, затем обретет горизонтальную разметку, которая, начиная с большего брейкпойнта, займет всю доступную ширину.
<navclass="nav nav-pills flex-column flex-sm-row"><aclass="flex-sm-fill text-sm-center nav-link active"aria-current="page"href="#">Активная</a><aclass="flex-sm-fill text-sm-center nav-link"href="#">Длинная ссылка навигации</a><aclass="flex-sm-fill text-sm-center nav-link"href="#">Ссылка</a><aclass="flex-sm-fill text-sm-center nav-link disabled">Отключенная</a></nav>Доступность
Если вы пользуетесь навигационными элементами для создания навигационной панели, добавьте role="navigation" в наиболее подходящий для этого родительский контейнер <ul>, или оберните элементом <nav> всю навигацию. Не добавляйте атрибут role в сам <ul>, т.к. это может помешать вспомогательным технологиям распознать этот элемент как список.
Заметьте, что навигационные панели, даже если они стилизованы как вкладки классами .nav-tabs, не должны содержать role="tablist", role="tab" или role="tabpanel". Это атрибуты подходят лишь для динамических интерфейсов вкладок, как описано в WAIARIA Authoring Practices. Смотрите, например, про поведение JavaScript c динамическими интерфейсами вкладок в этой секции. Атрибут aria-current не требуется в интерфейсах с динамическими вкладками, поскольку наш JavaScript обрабатывает выбранное состояние, добавляя aria-selected="true" на активной вкладке.
Выпадающие элементы
Добавьте раскрывающиеся меню с небольшим дополнительным HTML и подключаемый модуль раскрывающегося списка JavaScript.
Вкладки с выпадающими элементами
<ulclass="nav nav-tabs"><liclass="nav-item"><aclass="nav-link active"aria-current="page"href="#">Активная</a></li><liclass="nav-item dropdown"><aclass="nav-link dropdown-toggle"data-bs-toggle="dropdown"href="#"role="button"aria-expanded="false">Выпадающий список</a><ulclass="dropdown-menu"><li><aclass="dropdown-item"href="#">Действие</a></li><li><aclass="dropdown-item"href="#">Другое действие</a></li><li><aclass="dropdown-item"href="#">Что-то еще здесь</a></li><li><hrclass="dropdown-divider"></li><li><aclass="dropdown-item"href="#">Отделенная ссылка</a></li></ul></li><liclass="nav-item"><aclass="nav-link"href="#">Ссылка</a></li><liclass="nav-item"><aclass="nav-link disabled">Отключенная</a></li></ul>Подушки с выпадающими элементами
<ulclass="nav nav-pills"><liclass="nav-item"><aclass="nav-link active"aria-current="page"href="#">Активная</a></li><liclass="nav-item dropdown"><aclass="nav-link dropdown-toggle"data-bs-toggle="dropdown"href="#"role="button"aria-expanded="false">Выпадающий список</a><ulclass="dropdown-menu"><li><aclass="dropdown-item"href="#">Действие</a></li><li><aclass="dropdown-item"href="#">Другое действие</a></li><li><aclass="dropdown-item"href="#">Что-то еще здесь</a></li><li><hrclass="dropdown-divider"></li><li><aclass="dropdown-item"href="#">Отделенная ссылка</a></li></ul></li><liclass="nav-item"><aclass="nav-link"href="#">Ссылка</a></li><liclass="nav-item"><aclass="nav-link disabled">Отключенная</a></li></ul>CSS
Переменные
Добавлено в версии 5.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};В классе модификатора .nav-underline:
--#{$prefix}nav-underline-gap:#{$nav-underline-gap};--#{$prefix}nav-underline-border-width:#{$nav-underline-border-width};--#{$prefix}nav-underline-link-active-color:#{$nav-underline-link-active-color};Переменные 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.15sease-in-out,background-color.15sease-in-out,border-color.15sease-in-out;$nav-link-disabled-color:var(--#{$prefix}secondary-color);$nav-link-focus-box-shadow:$focus-ring-box-shadow;$nav-tabs-border-color:var(--#{$prefix}border-color);$nav-tabs-border-width:var(--#{$prefix}border-width);$nav-tabs-border-radius:var(--#{$prefix}border-radius);$nav-tabs-link-hover-border-color:var(--#{$prefix}secondary-bg)var(--#{$prefix}secondary-bg)$nav-tabs-border-color;$nav-tabs-link-active-color:var(--#{$prefix}emphasis-color);$nav-tabs-link-active-bg:var(--#{$prefix}body-bg);$nav-tabs-link-active-border-color:var(--#{$prefix}border-color)var(--#{$prefix}border-color)$nav-tabs-link-active-bg;$nav-pills-border-radius:var(--#{$prefix}border-radius);$nav-pills-link-active-color:$component-active-color;$nav-pills-link-active-bg:$component-active-bg;$nav-underline-gap:1rem;$nav-underline-border-width:.125rem;$nav-underline-link-active-color:var(--#{$prefix}emphasis-color);Поведение JavaScript
Используйте плагин JavaScript вкладок - включите его индивидуально или через скомпилированный файл bootstrap.js - чтобы расширить наши навигационные вкладки и таблетки для создания вкладок локального контента.
Это замещающий контент, связанный с содержимым вкладки Главная. Нажатие на другую вкладку изменит видимость этой вкладки на следующую. Вкладка JavaScript меняет классы для управления видимостью и стилем содержимого. Вы можете использовать его с вкладками, табличками и любой другой навигацией на основе .nav.
Это замещающий контент, связанный с содержимым вкладки Профиль. Нажатие на другую вкладку изменит видимость этой вкладки на следующую. Вкладка JavaScript меняет классы для управления видимостью и стилем содержимого. Вы можете использовать его с вкладками, табличками и любой другой навигацией на основе .nav.
Это замещающий контент, связанный с содержимым вкладки Контакт. Нажатие на другую вкладку изменит видимость этой вкладки на следующую. Вкладка JavaScript меняет классы для управления видимостью и стилем содержимого. Вы можете использовать его с вкладками, табличками и любой другой навигацией на основе .nav.
Это замещающий контент, связанный с содержимым Отключенной вкладки.
<ulclass="nav nav-tabs"id="myTab"role="tablist"><liclass="nav-item"role="presentation"><buttonclass="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">Главная</button></li><liclass="nav-item"role="presentation"><buttonclass="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">Профиль</button></li><liclass="nav-item"role="presentation"><buttonclass="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">Контакт</button></li><liclass="nav-item"role="presentation"><buttonclass="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>Отключен</button></li></ul><divclass="tab-content"id="myTabContent"><divclass="tab-pane fade show active"id="home-tab-pane"role="tabpanel"aria-labelledby="home-tab"tabindex="0">...</div><divclass="tab-pane fade"id="profile-tab-pane"role="tabpanel"aria-labelledby="profile-tab"tabindex="0">...</div><divclass="tab-pane fade"id="contact-tab-pane"role="tabpanel"aria-labelledby="contact-tab"tabindex="0">...</div><divclass="tab-pane fade"id="disabled-tab-pane"role="tabpanel"aria-labelledby="disabled-tab"tabindex="0">...</div></div>Чтобы помочь Вам удовлетворить Ваши потребности, это работает с разметкой на основе <ul>, как показано выше, или с любой произвольной разметкой “сверните свою”. Обратите внимание, что если Вы используете <nav>, Вам не следует добавлять role="tablist" непосредственно к нему, так как это переопределит собственную роль элемента как ориентира навигации. Вместо этого переключитесь на альтернативный элемент (в примере ниже простой <div>) и оберните его в <nav>.
<nav><divclass="nav nav-tabs"id="nav-tab"role="tablist"><buttonclass="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">Главная</button><buttonclass="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">Профиль</button><buttonclass="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">Контакт</button><buttonclass="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>Отключен</button></div></nav><divclass="tab-content"id="nav-tabContent"><divclass="tab-pane fade show active"id="nav-home"role="tabpanel"aria-labelledby="nav-home-tab"tabindex="0">...</div><divclass="tab-pane fade"id="nav-profile"role="tabpanel"aria-labelledby="nav-profile-tab"tabindex="0">...</div><divclass="tab-pane fade"id="nav-contact"role="tabpanel"aria-labelledby="nav-contact-tab"tabindex="0">...</div><divclass="tab-pane fade"id="nav-disabled"role="tabpanel"aria-labelledby="nav-disabled-tab"tabindex="0">...</div></div>Плагин вкладок также работает с таблетками.
Это замещающий контент, связанный с содержимым вкладки Главная. Нажатие на другую вкладку изменит видимость этой вкладки на следующую. Вкладка JavaScript меняет классы для управления видимостью и стилем содержимого. Вы можете использовать его с вкладками, табличками и любой другой навигацией на основе .nav.
Это замещающий контент, связанный с содержимым вкладки Профиль. Нажатие на другую вкладку изменит видимость этой вкладки на следующую. Вкладка JavaScript меняет классы для управления видимостью и стилем содержимого. Вы можете использовать его с вкладками, табличками и любой другой навигацией на основе .nav.
Это замещающий контент, связанный с содержимым вкладки Контакт. Нажатие на другую вкладку изменит видимость этой вкладки на следующую. Вкладка JavaScript меняет классы для управления видимостью и стилем содержимого. Вы можете использовать его с вкладками, табличками и любой другой навигацией на основе .nav.
Это замещающий контент, связанный с содержимым Отключенной вкладки.
<ulclass="nav nav-pills mb-3"id="pills-tab"role="tablist"><liclass="nav-item"role="presentation"><buttonclass="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">Главная</button></li><liclass="nav-item"role="presentation"><buttonclass="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">Профиль</button></li><liclass="nav-item"role="presentation"><buttonclass="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">Контакт</button></li><liclass="nav-item"role="presentation"><buttonclass="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>Отключен</button></li></ul><divclass="tab-content"id="pills-tabContent"><divclass="tab-pane fade show active"id="pills-home"role="tabpanel"aria-labelledby="pills-home-tab"tabindex="0">...</div><divclass="tab-pane fade"id="pills-profile"role="tabpanel"aria-labelledby="pills-profile-tab"tabindex="0">...</div><divclass="tab-pane fade"id="pills-contact"role="tabpanel"aria-labelledby="pills-contact-tab"tabindex="0">...</div><divclass="tab-pane fade"id="pills-disabled"role="tabpanel"aria-labelledby="pills-disabled-tab"tabindex="0">...</div></div>И с вертикальными таблетками. В идеале для вертикальных вкладок вы также должны добавить aria-orientation="vertical" в контейнер списка вкладок.
Это замещающий контент, связанный с содержимым вкладки Главная. Нажатие на другую вкладку изменит видимость этой вкладки на следующую. Вкладка JavaScript меняет классы для управления видимостью и стилем содержимого. Вы можете использовать его с вкладками, табличками и любой другой навигацией на основе .nav.
Это замещающий контент, связанный с содержимым вкладки Профиль. Нажатие на другую вкладку изменит видимость этой вкладки на следующую. Вкладка JavaScript меняет классы для управления видимостью и стилем содержимого. Вы можете использовать его с вкладками, табличками и любой другой навигацией на основе .nav.
Это замещающий контент, связанный с содержимым Отключенной вкладки.
Это замещающий контент, связанный с содержимым вкладки Сообщения. Нажатие на другую вкладку изменит видимость этой вкладки на следующую. Вкладка JavaScript меняет классы для управления видимостью и стилем содержимого. Вы можете использовать его с вкладками, табличками и любой другой навигацией на основе .nav.
Это замещающий контент, связанный с содержимым вкладки Настройки. Нажатие на другую вкладку изменит видимость этой вкладки на следующую. Вкладка JavaScript меняет классы для управления видимостью и стилем содержимого. Вы можете использовать его с вкладками, табличками и любой другой навигацией на основе .nav.
<divclass="d-flex align-items-start"><divclass="nav flex-column nav-pills me-3"id="v-pills-tab"role="tablist"aria-orientation="vertical"><buttonclass="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">Главная</button><buttonclass="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">Профиль</button><buttonclass="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>Отключен</button><buttonclass="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">Сообщения</button><buttonclass="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">Настройки</button></div><divclass="tab-content"id="v-pills-tabContent"><divclass="tab-pane fade show active"id="v-pills-home"role="tabpanel"aria-labelledby="v-pills-home-tab"tabindex="0">...</div><divclass="tab-pane fade"id="v-pills-profile"role="tabpanel"aria-labelledby="v-pills-profile-tab"tabindex="0">...</div><divclass="tab-pane fade"id="v-pills-disabled"role="tabpanel"aria-labelledby="v-pills-disabled-tab"tabindex="0">...</div><divclass="tab-pane fade"id="v-pills-messages"role="tabpanel"aria-labelledby="v-pills-messages-tab"tabindex="0">...</div><divclass="tab-pane fade"id="v-pills-settings"role="tabpanel"aria-labelledby="v-pills-settings-tab"tabindex="0">...</div></div></div>Доступность
Динамические интерфейсы с вкладками, как описано в Шаблон вкладок ARIA Authoring Practices Guide, требуют role="tablist", role="tab", role="tabpanel" и дополнительные aria- атрибуты, чтобы передать их структуру, функциональность и текущее состояние пользователям вспомогательных технологий (таких как программы чтения с экрана). Мы рекомендуем использовать элементы <button> для вкладок, так как это элементы управления, которые запускают динамическое изменение, а не ссылки, ведущие на новую страницу или место.
В соответствии с шаблоном ARIA Авторская практика, только текущая активная вкладка получает фокус клавиатуры. Когда подключаемый модуль JavaScript инициализируется, он устанавливает tabindex="-1" для всех неактивных элементов управления вкладками. Как только текущая активная вкладка получает фокус, клавиши курсора активируют предыдущую/следующую вкладку, а плагин меняет roving tabindex соответственно. Однако обратите внимание, что подключаемый модуль JavaScript не делает различий между горизонтальными и вертикальными списками вкладок, когда дело доходит до взаимодействия с клавишами курсора: независимо от ориентации списка вкладок, оба курсора, направленные вверх и влево, переходят на предыдущую вкладку, а курсор вниз и правый курсор перейти на следующую вкладку.
tabindex="0" в вашу разметку.
Использование атрибутов данных
Вы можете активировать навигацию по вкладкам или таблеткам без написания кода JavaScript, просто указав для элемента data-bs-toggle="tab" или data-bs-toggle="pill". Используйте эти атрибуты данных в .nav-tabs или .nav-pills.
<!-- Nav tabs --><ulclass="nav nav-tabs"id="myTab"role="tablist"><liclass="nav-item"role="presentation"><buttonclass="nav-link active"id="home-tab"data-bs-toggle="tab"data-bs-target="#home"type="button"role="tab"aria-controls="home"aria-selected="true">Главная</button></li><liclass="nav-item"role="presentation"><buttonclass="nav-link"id="profile-tab"data-bs-toggle="tab"data-bs-target="#profile"type="button"role="tab"aria-controls="profile"aria-selected="false">Профиль</button></li><liclass="nav-item"role="presentation"><buttonclass="nav-link"id="messages-tab"data-bs-toggle="tab"data-bs-target="#messages"type="button"role="tab"aria-controls="messages"aria-selected="false">Сообщения</button></li><liclass="nav-item"role="presentation"><buttonclass="nav-link"id="settings-tab"data-bs-toggle="tab"data-bs-target="#settings"type="button"role="tab"aria-controls="settings"aria-selected="false">Настройки</button></li></ul><!-- Tab panes --><divclass="tab-content"><divclass="tab-pane active"id="home"role="tabpanel"aria-labelledby="home-tab"tabindex="0">...</div><divclass="tab-pane"id="profile"role="tabpanel"aria-labelledby="profile-tab"tabindex="0">...</div><divclass="tab-pane"id="messages"role="tabpanel"aria-labelledby="messages-tab"tabindex="0">...</div><divclass="tab-pane"id="settings"role="tabpanel"aria-labelledby="settings-tab"tabindex="0">...</div></div>Через JavaScript
Включите вкладки с вкладками через JavaScript (каждую вкладку нужно активировать отдельно):
consttriggerTabList=document.querySelectorAll('#myTab button')triggerTabList.forEach(triggerEl=>{consttabTrigger=newbootstrap.Tab(triggerEl)triggerEl.addEventListener('click',event=>{event.preventDefault()tabTrigger.show()})})Вы можете активировать отдельные вкладки несколькими способами:
consttriggerEl=document.querySelector('#myTab button[data-bs-target="#profile"]')bootstrap.Tab.getInstance(triggerEl).show()// Select tab by name
consttriggerFirstTabEl=document.querySelector('#myTab li:first-child button')bootstrap.Tab.getInstance(triggerFirstTabEl).show()// Select first tab
Эффект затухания
Чтобы вкладки постепенно появлялись, добавьте .fade к каждому .tab-pane. На первой панели вкладок также должен быть .show, чтобы исходное содержимое было видимым.
<divclass="tab-content"><divclass="tab-pane fade show active"id="home"role="tabpanel"aria-labelledby="home-tab"tabindex="0">...</div><divclass="tab-pane fade"id="profile"role="tabpanel"aria-labelledby="profile-tab"tabindex="0">...</div><divclass="tab-pane fade"id="messages"role="tabpanel"aria-labelledby="messages-tab"tabindex="0">...</div><divclass="tab-pane fade"id="settings"role="tabpanel"aria-labelledby="settings-tab"tabindex="0">...</div></div>Методы
Активирует ваш контент как элемент вкладки.
Вы можете создать экземпляр вкладки с помощью конструктора, например:
constbsTab=newbootstrap.Tab('#myTab')| Метод | Описание |
|---|---|
dispose | Уничтожает вкладку элемента. |
getInstance | Статический метод, который позволяет вам получить экземпляр вкладки, связанный с элементом DOM, вы можете использовать его следующим образом: bootstrap.Tab.getInstance(element). |
getOrCreateInstance | Статический метод, который возвращает экземпляр вкладки, связанный с элементом DOM, или создает новый, если он не был инициализирован. Вы можете использовать его так: bootstrap.Tab.getOrCreateInstance(element). |
show | Выбирает данную вкладку и показывает связанную с ней панель. Любая другая ранее выбранная вкладка становится невыбранной, а связанная с ней панель скрывается. Возвращается к вызывающей стороне до фактического отображения панели вкладок (т. е. до возникновения события shown.bs.tab). |
События
При отображении новой вкладки события запускаются в следующем порядке:
hide.bs.tab(на текущей активной вкладке)show.bs.tab(на вкладке для показа)hidden.bs.tab(на предыдущей активной вкладке такая же, как для событияhide.bs.tab)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, чтобы настроить таргетинг на активную вкладку и предыдущую активную вкладку (если она доступна) соответственно. |
consttabEl=document.querySelector('button[data-bs-toggle="tab"]')tabEl.addEventListener('shown.bs.tab',event=>{event.target// newly activated tab
event.relatedTarget// previous active tab
})