Модальный
Используйте модальный плагин Bootstrap JavaScript, чтобы добавить на свой сайт диалоги для лайтбоксов, пользовательских уведомлений или полностью настраиваемого контента.
Как это работает
Прежде чем приступить к работе с модальным компонентом Bootstrap, обязательно прочитайте следующее, так как параметры нашего меню недавно изменились.
- Модальные окна создаются с помощью HTML, CSS и JavaScript. Они располагаются поверх всего остального в документе и удаляют прокрутку,
<body>
чтобы вместо этого прокручивалось модальное содержимое. - Щелчок по модальному «фону» автоматически закроет модальное окно.
- Bootstrap поддерживает одновременно только одно модальное окно. Вложенные модальные окна не поддерживаются, так как мы считаем их неудобными для пользователей.
- Модальные окна используют
position: fixed
, что иногда может быть немного специфичным в отношении его рендеринга. По возможности размещайте свой модальный HTML на верхнем уровне, чтобы избежать возможных помех от других элементов. Скорее всего, вы столкнетесь с проблемами при вложении a.modal
в другой фиксированный элемент. - Еще раз, из-за
position: fixed
, есть некоторые предостережения относительно использования модальных окон на мобильных устройствах. Для получения подробной информации см. нашу документацию по поддержке браузера . - Из-за того, как HTML5 определяет свою семантику, атрибут
autofocus
HTML не влияет на модальные окна Bootstrap. Чтобы добиться того же эффекта, используйте собственный JavaScript:
Эффект анимации этого компонента зависит от prefers-reduced-motion
медиа-запроса. См. раздел с ограниченным движением в нашей документации по специальным возможностям .
Продолжайте читать для демонстраций и руководств по использованию.
Примеры
Модальные компоненты
Ниже приведен пример статического модального окна (имеется в виду, что его position
и display
были переопределены). Включены модальный заголовок, модальное тело (обязательно для padding
) и модальный нижний колонтитул (необязательно). Мы просим вас включать модальные заголовки с действиями закрытия, когда это возможно, или предоставлять другое явное действие закрытия.
Живая демонстрация
Переключите работающую модальную демонстрацию, нажав кнопку ниже. Он будет скользить вниз и исчезать в верхней части страницы.
Статический фон
Когда фон установлен на статический, модальное окно не будет закрываться при нажатии вне его. Нажмите кнопку ниже, чтобы попробовать.
Прокрутка длинного контента
Когда модальные окна становятся слишком длинными для области просмотра или устройства пользователя, они прокручиваются независимо от самой страницы. Попробуйте демо ниже, чтобы увидеть, что мы имеем в виду.
Вы также можете создать модальное окно с возможностью прокрутки, которое позволяет прокручивать тело модального окна, добавив .modal-dialog-scrollable
в .modal-dialog
.
Вертикально по центру
Добавьте .modal-dialog-centered
, чтобы .modal-dialog
центрировать модальное окно по вертикали.
Подсказки и всплывающие окна
Подсказки и всплывающие окна могут быть размещены в модальных окнах по мере необходимости. Когда модальные окна закрыты, любые всплывающие подсказки и всплывающие окна также автоматически закрываются.
Использование сетки
Используйте сетку Bootstrap в модальном окне, вложив ее в .container-fluid
файл .modal-body
. Затем используйте обычные классы системы сетки, как и везде.
Различное модальное содержимое
У вас есть куча кнопок, которые запускают одно и то же модальное окно с немного разным содержимым? Используйте атрибутыevent.relatedTarget
и HTMLdata-*
(возможно, через jQuery ), чтобы изменять содержимое модального окна в зависимости от того, какая кнопка была нажата.
Ниже приведена живая демонстрация, за которой следуют примеры HTML и JavaScript. Для получения дополнительной информации ознакомьтесь с документацией по модальным событиям для получения подробной информации о relatedTarget
.
Изменить анимацию
Переменная $modal-fade-transform
определяет состояние преобразования .modal-dialog
перед модальной анимацией постепенного появления, $modal-show-transform
переменная определяет преобразование .modal-dialog
в конце модальной анимации постепенного появления.
Если вы хотите, например, анимацию увеличения, вы можете установить $modal-fade-transform: scale(.8)
.
Удалить анимацию
Для модальных окон, которые просто появляются, а не исчезают при просмотре, удалите .fade
класс из модальной разметки.
Динамические высоты
Если высота модального окна изменяется, когда оно открыто, вы должны позвонить $('#myModal').modal('handleUpdate')
, чтобы изменить положение модального окна в случае появления полосы прокрутки.
Доступность
Обязательно добавьте aria-labelledby="..."
, ссылаясь на модальное название, в .modal
. Кроме того, вы можете дать описание своего модального диалога с помощью aria-describedby
on .modal
. Обратите внимание, что вам не нужно добавлять role="dialog"
, так как мы уже добавили его через JavaScript.
Встраивание видео с YouTube
Для встраивания видео с YouTube в модальные окна требуется дополнительный JavaScript, не входящий в Bootstrap, для автоматической остановки воспроизведения и т. д. См. этот полезный пост о переполнении стека для получения дополнительной информации.
Дополнительные размеры
Модальные окна имеют три необязательных размера, доступных через классы модификаторов для размещения в файле .modal-dialog
. Эти размеры срабатывают в определенных точках останова, чтобы избежать горизонтальных полос прокрутки на более узких окнах просмотра.
Размер | Учебный класс | Модальная максимальная ширина |
---|---|---|
Маленький | .modal-sm |
300px |
По умолчанию | Никто | 500px |
Большой | .modal-lg |
800px |
Очень большой | .modal-xl |
1140px |
Наше модальное окно по умолчанию без класса модификатора представляет собой модальное окно «среднего» размера.
Применение
Модальный плагин переключает ваш скрытый контент по запросу с помощью атрибутов данных или JavaScript. Он также добавляет .modal-open
к <body>
переопределению поведения прокрутки по умолчанию и создает .modal-backdrop
область щелчка для закрытия отображаемых модальных окон при нажатии вне модального окна.
Через атрибуты данных
Активируйте модальное окно без написания JavaScript. Установите data-toggle="modal"
элемент контроллера, например кнопку, вместе с data-target="#foo"
или href="#foo"
, чтобы настроить конкретное модальное окно для переключения.
Через JavaScript
Вызов модального окна с идентификатором myModal
с помощью одной строки JavaScript:
Опции
Параметры можно передавать через атрибуты данных или JavaScript. Для атрибутов данных добавьте имя опции к data-
, как в data-backdrop=""
.
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
фон | логическое значение или строка'static' |
истинный | Включает элемент модального фона. В качестве альтернативы укажите static фон, который не закрывает модальное окно при нажатии. |
клавиатура | логический | истинный | Закрывает модальное окно при нажатии клавиши escape |
фокус | логический | истинный | Ставит фокус на модальное окно при инициализации. |
показывать | логический | истинный | Показывает модальное окно при инициализации. |
Методы
Асинхронные методы и переходы
Все методы API являются асинхронными и запускают переход . Они возвращаются к вызывающей стороне сразу после начала перехода, но до его завершения . Кроме того, вызов метода переходного компонента будет игнорироваться .
Дополнительную информацию см. в нашей документации по JavaScript .
.modal(options)
Активирует ваш контент как модальный. Принимает необязательные параметры object
.
.modal('toggle')
Вручную переключает модальное окно. Возвращает вызывающему объекту до того, как модальное окно действительно было показано или скрыто (т. е. до того, как произошло событие shown.bs.modal
или ).hidden.bs.modal
.modal('show')
Вручную открывает модальное окно. Возвращает вызывающему объекту до того, как модальное окно действительно будет показано (т. е. до того , как shown.bs.modal
произойдет событие).
.modal('hide')
Вручную скрывает модальное окно. Возвращает вызывающему объекту до того, как модальное окно будет фактически скрыто (т. е. до того , как hidden.bs.modal
произойдет событие).
.modal('handleUpdate')
Вручную отрегулируйте положение модального окна, если высота модального окна изменяется, когда оно открыто (например, в случае появления полосы прокрутки).
.modal('dispose')
Уничтожает модальное окно элемента.
События
Модальный класс Bootstrap предоставляет несколько событий для подключения к модальным функциям. Все модальные события запускаются в самом модальном окне (т.е. в <div class="modal">
).
Тип события | Описание |
---|---|
показать.bs.modal | Это событие срабатывает сразу же при show вызове метода экземпляра. Если это вызвано щелчком, элемент, по которому щелкнули, доступен как relatedTarget свойство события. |
показанный.bs.modal | Это событие запускается, когда модальное окно становится видимым для пользователя (будет ждать завершения переходов CSS). Если это вызвано щелчком, элемент, по которому щелкнули, доступен как relatedTarget свойство события. |
скрыть.bs.modal | Это событие запускается сразу после hide вызова метода экземпляра. |
скрытый.bs.modal | Это событие запускается, когда модальное окно больше не скрыто от пользователя (будет ждать завершения переходов CSS). |
hidePrevented.bs.modal | Это событие запускается, когда отображается модальное окно, его фон static и щелчок за пределами модального окна или нажатие клавиши Escape выполняется с параметром клавиатуры или data-keyboard установлено значение false . |