Обзор
Директиву v-b-toggle
можно использовать для интерактивных элементов, таких как кнопки, для переключения состояния видимости компонентов <b-collapse>
и <b-sidebar>
.
Помимо переключения видимости целевого компонента, директива автоматически обновляет атрибуты доступности ARIA для элемента, к которому она применяется, чтобы они отражали состояние видимости целевого компонента. Дополнительные сведения и предостережения смотрите в разделе ниже Специальные возможности.
Синтаксис и использование директив
Директива применяется к элементу или компоненту, который запускает видимость цели. Целевой компонент может быть указан (через его идентификатор) как модификатор(ы) директивы, аргумент директивы или как строка/массив, переданный в качестве значения директивы:
v-b-toggle.my-collapse
- модификатор директивы (допускается несколько целей, каждый модификатор является идентификатором цели) v-b-toggle:my-collapse
- аргумент директивы (поддерживается динамический аргумент Vue) v2.14.0+ v-b-toggle="'my-collapse'"
- значение директивы в виде строки идентификатора v-b-toggle="'my-collapse1 my-collapse2'"
- значение директивы в виде строки идентификаторов, разделенных пробелами v2.14.0+ v-b-toggle="['my-collapse1', 'my-collapse2']"
- значение директивы в виде массива идентификаторов строк v2.14.0+
Модификаторы, аргумент и значение можно использовать одновременно при нацеливании на несколько компонентов.
Пример использования:
<template>
<div>
<div class="mb-3">
<b-button v-b-toggle.my-collapse>Переключатель свернутого содержимого</b-button>
<b-button v-b-toggle.my-sidebar>Переключатель боковой навигации</b-button>
</div>
<b-collapse id="my-collapse">
<b-card title="Сворачиваемая карточка">
Привет мир!
</b-card>
</b-collapse>
<b-sidebar id="my-sidebar" title="Боковая панель" shadow>
<div class="px-3 py-2">
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis
in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
</div>
</b-sidebar>
</div>
</template>
Использование на ссылках
2.15.0+
При размещении директивы на ссылке (или компоненте, отображающем ссылку) целевой идентификатор можно также указать с помощью атрибута href
.
Обратите внимание, что URL-адрес браузера изменится, и страница может прокручивать цель в поле зрения. Чтобы предотвратить изменение URL-адреса и прокрутку страницы, добавьте к ссылке @click.prevent
.
Пример использования:
<template>
<div>
<div class="mb-3">
<a v-b-toggle href="#example-collapse" @click.prevent>Переключатель свернутого содержимого</a>
<b-button v-b-toggle href="#example-sidebar" @click.prevent>Переключатель боковой навигации</b-button>
</div>
<b-collapse id="example-collapse">
<b-card title="Сворачиваемая карточка">
Привет мир!
</b-card>
</b-collapse>
<b-sidebar id="example-sidebar" title="Боковая панель" shadow>
<div class="px-3 py-2">
Cras mattis consectetur purus sit amet fermentum. Cras justo odio, dapibus ac facilisis
in, egestas eget quam. Morbi leo risus, porta ac consectetur ac, vestibulum at eros.
</div>
</b-sidebar>
</div>
</template>
Скрытие и отображение содержимого в элементе триггера переключения
При использовании директивы v-b-toggle
класс collapsed
будет автоматически помещаться в элемент триггера, когда целевой компонент закрывается, и удаляется при открытии. Начиная с BootstrapVue 2.14.0
, класс not-collapsed
будет применяться, когда цель не закрыта.
Пример HTML-разметки:
<div>
<b-button v-b-toggle:my-collapse>
<span class="when-open">Закрыть</span><span class="when-closed">Открыть</span> Мое сворачиваемое содержимое
</b-button>
<b-collapse id="my-collapse">
</b-collapse>
</div>
Пример пользовательского CSS:
.collapsed > .when-open,
.not-collapsed > .when-closed {
display: none;
}
Предотвращение открытия или закрытия цели
Чтобы элемент триггера не переключал цель, установите свойство disabled
на <button>
, <b-button>
, или <b-link>
(или компоненты, основанные на <b-link>
) и событие переключения не будет отправлено в цель(и).
Доступность
Директива из соображений доступности должна быть размещена на интерактивном элементе, на который можно щелкнуть, таком как <button>
или <b-button>
, к которому могут легко получить доступ пользователи, использующие только клавиатуру, и пользователи программ чтения с экрана. К элементам, которые изначально не имеют роли доступности button
(или link
), будут применены атрибуты role="button"
и tabindex="0"
, и будет создан соответствующий обработчик кликов. Поэтому настоятельно рекомендуется не размещать директиву на элементах управления формы, кроме кнопок.
Директива применяет и динамически обновляет следующие атрибуты ARIA в элементе триггера:
aria-controls
- идентификаторы переключаемых компонентов сворачивания или боковой панели aria-expanded
- состояние видимости сворачивания или боковой панели (смотрите раздел предостережения ниже)
Предостережения с несколькими целями
Когда указано несколько целей, значение атрибута aria-expanded
может быть неправильным, если отдельные целевые компоненты могут управлять своим свернутым состоянием независимо (либо с помощью v-model
, либо других элементов управления с помощью директивы v-b-toggle
, или видимость CSS).
Смотрите также
<b-collapse>
Сворачиваемое содержимое с поддержкой аккордеона <b-sidebar>
Off-canvas боковая панель <b-navbar-toggle>
Кнопка переключения гамбургера на панели навигации (на основе директивы v-b-toggle
)