JavaScript
Превратите компоненты Bootstrap в жизнь с помощью более чем дюжины пользовательских плагинов jQuery. Легко включите их все или по одному.
Обзор
Индивидуальные или скомпилированные
Плагины могут быть включены по отдельности (используя отдельные файлы *.js Bootstrap) или все сразу (используя bootstrap.js или сжатый bootstrap.min.js).
Использование скомпилированного JavaScript
И bootstrap.js и bootstrap.min.js содержат все плагины в одном файле. Включите только один.
Зависимости плагинов
Некоторые плагины и компоненты CSS зависят от других плагинов. Если вы включаете плагины по отдельности, убедитесь, что проверили эти зависимости в документации. Также обратите внимание, что все плагины зависят от jQuery (это означает, что jQuery необходимо включить перед файлами плагинов). Обратитесь к нашей bower.json, чтобы узнать, какие версии jQuery поддерживаются.
Атрибуты данных
Вы можете использовать все плагины Bootstrap исключительно через API разметки без написания ни одной строки JavaScript. Это основной API Bootstrap и его следует использовать в первую очередь при работе с плагином.
Тем не менее, в некоторых ситуациях может быть желательно отключить эту функциональность. Поэтому мы также предоставляем возможность отключить API атрибутов данных, отвязав все события в документе с именованным пространством data-api. Это выглядит так:
$(document).off('.data-api') Или, чтобы нацелиться на конкретный плагин, просто добавьте имя плагина в качестве именованного пространства вместе с именованным пространством атрибута данных, как показано ниже:
$(document).off('.alert.data-api') Только один плагин на элемент через атрибуты данных
Не используйте атрибуты данных от нескольких плагинов на одном элементе. Например, кнопка не может одновременно иметь подсказку и переключать модальное окно. Для этого используйте элемент обертки.
Программный API
Мы также считаем, что вы должны иметь возможность использовать все плагины Bootstrap исключительно через API JavaScript. Все публичные API — это отдельные, цепные методы, которые возвращают коллекцию, к которой применялось действие.
$('.btn.danger').button('toggle').addClass('fat') Все методы должны принимать необязательный объект параметров, строку, которая нацелена на определенный метод, или ничего (что инициирует плагин с базовым поведением):
$('#myModal').modal() // initialized with defaults
$('#myModal').modal({ keyboard: false }) // initialized with no keyboard
$('#myModal').modal('show') // initializes and invokes show immediately Каждый плагин также раскрывает свой исходный конструктор в свойстве Constructor: $.fn.popover.Constructor. Если вам нужно получить конкретный экземпляр плагина, получите его напрямую из элемента: $('[rel="popover"]').data('popover').
Настройки по умолчанию
Вы можете изменить настройки по умолчанию для плагина, изменив объект Constructor.DEFAULTS плагина:
$.fn.modal.Constructor.DEFAULTS.keyboard = false // changes default for the modal plugin's `keyboard` option to false
Без конфликтов
Иногда необходимо использовать плагины Bootstrap с другими фреймворками пользовательского интерфейса. В таких случаях могут возникать конфликты имен. Если это произойдет, вы можете вызвать .noConflict для плагина, который вы хотите переопределить.
var bootstrapButton = $.fn.button.noConflict() // return $.fn.button to previously assigned value $.fn.bootstrapBtn = bootstrapButton // give $().bootstrapBtn the Bootstrap functionality
События
Bootstrap предоставляет пользовательские события для большинства уникальных действий плагинов. Обычно они бывают в инфинитивной и причастиальной формах – где инфинитив (например, show) срабатывает в начале события, а его причастие (например, shown) срабатывает по завершении действия.
Начиная с версии 3.0.0, все события Bootstrap имеют именованные пространства.
Все события в инфинитивной форме обеспечивают функциональность preventDefault. Это дает возможность остановить выполнение действия до его начала.
$('#myModal').on('show.bs.modal', function (e) {
if (!data) return e.preventDefault() // stops modal from being shown
}) Средство очистки
Инструменты подписи и всплывающие окна используют встроенное средство очистки для очистки параметров, которые принимают HTML.
Значение по умолчанию whiteList следующее:
var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i
var DefaultWhitelist = {
// Global attributes allowed on any supplied element below.
'*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],
a: ['target', 'href', 'title', 'rel'],
area: [],
b: [],
br: [],
col: [],
code: [],
div: [],
em: [],
hr: [],
h1: [],
h2: [],
h3: [],
h4: [],
h5: [],
h6: [],
i: [],
img: ['src', 'alt', 'title', 'width', 'height'],
li: [],
ol: [],
p: [],
pre: [],
s: [],
small: [],
span: [],
sub: [],
sup: [],
strong: [],
u: [],
ul: []
} Если вы хотите добавить новые значения к этому значению по умолчанию whiteList, вы можете сделать следующее:
var myDefaultWhiteList = $.fn.tooltip.Constructor.DEFAULTS.whiteList // To allow table elements myDefaultWhiteList.table = [] // To allow td elements and data-option attributes on td elements myDefaultWhiteList.td = ['data-option'] // You can push your custom regex to validate your attributes. // Be careful about your regular expressions being too lax var myCustomRegex = /^data-my-app-[\w-]+/ myDefaultWhiteList['*'].push(myCustomRegex)
Если вы хотите обойти наше средство очистки, потому что предпочитаете использовать специализированную библиотеку, например DOMPurify, вы должны сделать следующее:
$('#yourTooltip').tooltip({
sanitizeFn: function (content) {
return DOMPurify.sanitize(content)
}
}) Браузеры без document.implementation.createHTMLDocument
В случае браузеров, которые не поддерживают document.implementation.createHTMLDocument, например, Internet Explorer 8, встроенная функция очистки возвращает HTML как есть.
Если вы хотите выполнить очистку в этом случае, укажите sanitizeFn и используйте внешнюю библиотеку, например DOMPurify.
Номера версий
Версию каждого плагина jQuery Bootstrap можно получить через свойство VERSION конструктора плагина. Например, для плагина всплывающих подсказок:
$.fn.tooltip.Constructor.VERSION // => "3.4.1"
Отсутствие специальных решений при отключенном JavaScript
Плагины Bootstrap не обеспечивают особо плавную работу при отключенном JavaScript. Если вам важно пользовательское взаимодействие в этом случае, используйте <noscript>, чтобы объяснить ситуацию (и как снова включить JavaScript) вашим пользователям, и/или добавьте собственные решения.
Библиотеки сторонних разработчиков
Bootstrap официально не поддерживает библиотеки JavaScript сторонних разработчиков, такие как Prototype или jQuery UI. Несмотря на .noConflict и события с именованными пространствами, могут возникнуть проблемы совместимости, которые вам нужно будет исправить самостоятельно.
Переходы transition.js
О переходах
Для простых эффектов переходов включите transition.js один раз вместе с другими файлами JS. Если вы используете скомпилированные (или сжатые) bootstrap.js, нет необходимости включать его — он уже там.
Что внутри
Transition.js — это базовая утилита для событий transitionEnd и эмулятора переходов CSS. Плагины используют его для проверки поддержки переходов CSS и для обработки зависающих переходов.
Отключение переходов
Переходы можно глобально отключить с помощью следующего фрагмента JavaScript, который должен появиться после загрузки transition.js (или bootstrap.js или bootstrap.min.js, в зависимости от случая):
$.support.transition = false
Модальные окна modal.js
Модальные окна — это продуманные, но гибкие, диалоговые запросы с минимально необходимой функциональностью и разумными значениями по умолчанию.
Несколько открытых модальных окон не поддерживаются
Убедитесь, что вы не открываете модальное окно, пока другое еще видно. Для отображения более одного модального окна одновременно требуется пользовательский код.
Расположение разметки модального окна
Всегда старайтесь размещать HTML-код модального окна в верхнем уровне вашего документа, чтобы избежать влияния других компонентов на внешний вид и/или функциональность модального окна.
Особенности мобильных устройств
Есть некоторые особенности, связанные с использованием модальных окон на мобильных устройствах. См. нашу документацию по поддержке браузера для получения подробной информации.
Из-за того, как HTML5 определяет свои семантики, атрибут HTML autofocus не оказывает никакого влияния в модальных окнах Bootstrap. Чтобы добиться того же эффекта, используйте пользовательский JavaScript:
$('#myModal').on('shown.bs.modal', function () {
$('#myInput').focus()
}) Примеры
Статический пример
Отображаемое модальное окно с заголовком, телом и набором действий в нижней части.
<div class="modal fade" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title">Modal title</h4>
</div>
<div class="modal-body">
<p>One fine body…</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal --> Демо-версия
Переключите модальное окно с помощью JavaScript, нажав на кнопку ниже. Оно будет сдвигаться вниз и появляться с верха страницы.
<!-- Button trigger modal -->
<button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
Launch demo modal
</button>
<!-- Modal -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="myModalLabel">Modal title</h4>
</div>
<div class="modal-body">
...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div> Обеспечение доступности модальных окон
Убедитесь, что вы добавили role="dialog" и aria-labelledby="...", ссылаясь на заголовок модального окна, к .modal, и role="document" к самому .modal-dialog.
Кроме того, вы можете добавить описание вашего модального диалогового окна с помощью aria-describedby на .modal.
Встраивание видео YouTube
Встраивание видео YouTube в модальные окна требует дополнительного JavaScript, отсутствующего в Bootstrap, для автоматической остановки воспроизведения и т. д. См. этот полезный пост на Stack Overflow для получения дополнительной информации.
Дополнительные размеры
Модальные окна имеют два дополнительных размера, доступных через модификаторы классов, которые можно разместить на .modal-dialog.
<!-- Large modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target=".bs-example-modal-lg">Large modal</button>
<div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
...
</div>
</div>
</div>
<!-- Small modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target=".bs-example-modal-sm">Small modal</button>
<div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel">
<div class="modal-dialog modal-sm" role="document">
<div class="modal-content">
...
</div>
</div>
</div> Удалить анимацию
Для модальных окон, которые просто появляются, а не плавно входят в поле зрения, удалите класс .fade из разметки вашего модального окна.
<div class="modal" tabindex="-1" role="dialog" aria-labelledby="..."> ... </div>
Использование сетки
Чтобы воспользоваться сеткой Bootstrap внутри модального окна, просто вложите .row в .modal-body, а затем используйте обычные классы сетки.
<div class="modal fade" tabindex="-1" role="dialog" aria-labelledby="gridSystemModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="gridSystemModalLabel">Modal title</h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-4">.col-md-4</div>
<div class="col-md-4 col-md-offset-4">.col-md-4 .col-md-offset-4</div>
</div>
<div class="row">
<div class="col-md-3 col-md-offset-3">.col-md-3 .col-md-offset-3</div>
<div class="col-md-2 col-md-offset-4">.col-md-2 .col-md-offset-4</div>
</div>
<div class="row">
<div class="col-md-6 col-md-offset-3">.col-md-6 .col-md-offset-3</div>
</div>
<div class="row">
<div class="col-sm-9">
Level 1: .col-sm-9
<div class="row">
<div class="col-xs-8 col-sm-6">
Level 2: .col-xs-8 .col-sm-6
</div>
<div class="col-xs-4 col-sm-6">
Level 2: .col-xs-4 .col-sm-6
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal --> Изменение содержимого модального окна в зависимости от нажатой кнопки
У вас есть несколько кнопок, которые все открывают одно и то же модальное окно, но с немного другим содержимым? Используйте event.relatedTarget и атрибуты HTML data-* (возможно, через jQuery) для изменения содержимого модального окна в зависимости от того, какая кнопка была нажата. Подробности см. в документации по событиям модальных окон relatedTarget,
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@mdo">Open modal for @mdo</button>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@fat">Open modal for @fat</button>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@getbootstrap">Open modal for @getbootstrap</button>
...more buttons...
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title" id="exampleModalLabel">New message</h4>
</div>
<div class="modal-body">
<form>
<div class="form-group">
<label for="recipient-name" class="control-label">Recipient:</label>
<input type="text" class="form-control" id="recipient-name">
</div>
<div class="form-group">
<label for="message-text" class="control-label">Message:</label>
<textarea class="form-control" id="message-text"></textarea>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Send message</button>
</div>
</div>
</div>
</div> $('#exampleModal').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget) // Button that triggered the modal
var recipient = button.data('whatever') // Extract info from data-* attributes
// If necessary, you could initiate an AJAX request here (and then do the updating in a callback).
// Update the modal's content. We'll use jQuery here, but you could use a data binding library or other methods instead.
var modal = $(this)
modal.find('.modal-title').text('New message to ' + recipient)
modal.find('.modal-body input').val(recipient)
}) Использование
Плагин модальных окон по требованию переключает скрытое содержимое с помощью атрибутов данных или JavaScript. Он также добавляет .modal-open к <body> для переопределения стандартного поведения прокрутки и генерирует .modal-backdrop для предоставления области нажатия для закрытия отображаемых модальных окон при нажатии за пределами модального окна.
Через атрибуты данных
Активировать модальное окно без написания JavaScript. Установите data-toggle="modal" на элементе контроллера, таком как кнопка, вместе с data-target="#foo" или href="#foo" для определения конкретного модального окна для переключения.
<button type="button" data-toggle="modal" data-target="#myModal">Launch modal</button>
Через JavaScript
Вызовите модальное окно с идентификатором myModal одной строкой JavaScript:
$('#myModal').modal(options) Параметры
Параметры могут быть переданы через атрибуты данных или JavaScript. Для атрибутов данных добавьте имя параметра к data-, как в data-backdrop="".
| Имя | тип | по умолчанию | описание |
|---|---|---|---|
| backdrop | boolean или строка 'static'
| true | Включает элемент modal-backdrop. В качестве альтернативы укажите static для бэкрапа, который не закрывает модальное окно при нажатии. |
| keyboard | boolean | true | Закрывает модальное окно при нажатии клавиши Escape |
| show | boolean | true | Отображает модальное окно при инициализации. |
| remote | путь | false | Этот параметр устарел с версии v3.3.0 и удален в v4. Вместо этого рекомендуется использовать клиентскую шаблонизацию или фреймворк для привязки данных или вызывать jQuery.load самостоятельно. Если предоставлен URL удаленного ресурса, содержимое будет загружено один раз с помощью метода <a data-toggle="modal" href="remote.html" data-target="#modal">Click me</a> |
Методы
.modal(options)
Активирует контент в качестве модального окна. Принимает необязательные параметры object.
$('#myModal').modal({
keyboard: false
}) .modal('toggle')
Вручную переключает модальное окно. Возвращает значение вызывающей стороне до фактического отображения или скрытия модального окна (т.е. до возникновения события shown.bs.modal или hidden.bs.modal).
$('#myModal').modal('toggle') .modal('show')
Вручную открывает модальное окно. Возвращает значение вызывающей стороне до фактического отображения модального окна (т.е. до возникновения события shown.bs.modal).
$('#myModal').modal('show') .modal('hide')
Вручную скрывает модальное окно. Возвращает значение вызывающей стороне до фактического скрытия модального окна (т.е. до возникновения события hidden.bs.modal).
$('#myModal').modal('hide') .modal('handleUpdate')
Перенастраивает позиционирование модального окна для компенсации полосы прокрутки, если она появится, что может привести к смещению модального окна влево.
Необходимо только в том случае, если высота модального окна изменяется при его открытии.
$('#myModal').modal('handleUpdate') События
Класс модального окна Bootstrap предоставляет несколько событий для подключения к функциональности модального окна.
Все события модального окна генерируются самим модальным окном (т.е. в элементе <div class="modal">).
| Тип события | Описание |
|---|---|
| show.bs.modal | Это событие срабатывает немедленно при вызове метода экземпляра show. Если вызвано щелчком, щелкнутый элемент доступен как свойство relatedTarget события. |
| shown.bs.modal | Это событие срабатывает, когда модальное окно стало видимым для пользователя (будет ожидать завершения анимации CSS). Если вызвано щелчком, щелкнутый элемент доступен как свойство relatedTarget события. |
| hide.bs.modal | Это событие срабатывает немедленно при вызове метода экземпляра hide . |
| hidden.bs.modal | Это событие срабатывает, когда модальное окно завершило скрытие для пользователя (будет ожидать завершения анимации CSS). |
| loaded.bs.modal | Это событие срабатывает, когда модальное окно загрузило контент с помощью параметра remote . |
$('#myModal').on('hidden.bs.modal', function (e) {
// do something...
}) Выпадающие списки dropdown.js
Примеры
Добавьте выпадающие меню практически к любому элементу с помощью этого простого плагина, включая панель навигации, вкладки и элементы.
В панели навигации
Открыть пример на getbootstrap.com
В элементах
Открыть пример на getbootstrap.com
Использование
Плагин выпадающих списков переключает скрытое содержимое (выпадающие списки) путем переключения класса .open на родительском пункте списка.
На мобильных устройствах открытие выпадающего списка добавляет .dropdown-backdrop в качестве области нажатия для закрытия выпадающих списков при нажатии вне меню, что является требованием для правильной поддержки iOS. Это означает, что переход от открытого выпадающего списка к другому выпадающему списку требует дополнительного нажатия на мобильных устройствах.
Примечание: на атрибуте data-toggle="dropdown" полагаются для закрытия выпадающих списков на уровне приложения, поэтому рекомендуется всегда его использовать.
Через атрибуты данных
Добавьте data-toggle="dropdown" к ссылке или кнопке для переключения выпадающего списка.
<div class="dropdown">
<button id="dLabel" type="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
Dropdown trigger
<span class="caret"></span>
</button>
<ul class="dropdown-menu" aria-labelledby="dLabel">
...
</ul>
</div> Чтобы сохранить целостность URL-адресов с кнопками ссылок, используйте атрибут data-target вместо href="#".
<div class="dropdown">
<a id="dLabel" data-target="#" href="http://example.com/" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
Dropdown trigger
<span class="caret"></span>
</a>
<ul class="dropdown-menu" aria-labelledby="dLabel">
...
</ul>
</div> Через JavaScript
Вызовите выпадающие списки через JavaScript:
$('.dropdown-toggle').dropdown()
data-toggle="dropdown" все еще требуется
Независимо от того, вызываете ли вы свой выпадающий список через JavaScript или используете API данных, data-toggle="dropdown" всегда должен присутствовать на элементе-триггере выпадающего списка.
Параметры
Нет
Методы
$().dropdown('toggle')
Переключает выпадающее меню данной панели навигации или навигации с вкладками.
События
Все события выпадающего списка генерируются на родительском элементе .dropdown-menu.
Все события выпадающего списка имеют свойство relatedTarget, значение которого — элемент-якорь переключения.
| Тип события | Описание |
|---|---|
| show.bs.dropdown | Это событие срабатывает немедленно при вызове метода show. |
| shown.bs.dropdown | Это событие срабатывает, когда выпадающий список стал видимым для пользователя (будет ожидать завершения анимации CSS). |
| hide.bs.dropdown | Это событие срабатывает немедленно при вызове метода hide. |
| hidden.bs.dropdown | Это событие срабатывает, когда выпадающий список завершил скрытие для пользователя (будет ожидать завершения анимации CSS). |
$('#myDropdown').on('show.bs.dropdown', function () {
// do something…
}) ScrollSpy scrollspy.js
Пример в панели навигации
Плагин ScrollSpy предназначен для автоматического обновления целевых значений навигации на основе положения прокрутки. Прокрутите область ниже панели навигации и понаблюдайте за изменением активного класса. Элементы подменю выпадающего списка также будут выделены.
Открыть пример на getbootstrap.com
Использование
Требуются разрешаемые целевые ID
Ссылки в панели навигации должны иметь разрешаемые целевые ID. Например, <a href="#home">home</a> должен соответствовать чему-то в DOM, например, <div id="home"></div>.
Элементы целей, не являющиеся :visible, игнорируются
Целевые элементы, которые не являются :visible в соответствии с jQuery, будут проигнорированы, и соответствующие пункты навигации никогда не будут выделены.
Требуется относительное позиционирование
Независимо от метода реализации ScrollSpy требует использования position: relative; на элементе, по которому выполняется отслеживание. В большинстве случаев это <body>. При отслеживании прокрутки по элементам, отличным от <body>, убедитесь, что задан height и применен overflow-y: scroll;.
Через атрибуты данных
Чтобы легко добавить поведение scrollspy к вашей верхней панели навигации, добавьте data-spy="scroll" к элементу, по которому нужно отслеживать прокрутку (в большинстве случаев это <body>). Затем добавьте атрибут data-target с ID или классом родительского элемента любого компонента Bootstrap .nav.
body {
position: relative;
} <body data-spy="scroll" data-target="#navbar-example">
...
<div id="navbar-example">
<ul class="nav nav-tabs" role="tablist">
...
</ul>
</div>
...
</body> Через JavaScript
После добавления position: relative; в вашем CSS вызовите scrollspy через JavaScript:
$('body').scrollspy({ target: '#navbar-example' }) Методы
.scrollspy('refresh')
При использовании scrollspy в сочетании с добавлением или удалением элементов из DOM вам необходимо вызвать метод refresh следующим образом:
$('[data-spy="scroll"]').each(function () {
var $spy = $(this).scrollspy('refresh')
}) Параметры
Параметры могут быть переданы через атрибуты данных или JavaScript. Для атрибутов данных добавьте имя параметра к data-, как в data-offset="".
| Имя | тип | по умолчанию | описание |
|---|---|---|---|
| offset | число | 10 | Пиксели, отступ от верха при расчете положения прокрутки. |
События
| Тип события | Описание |
|---|---|
| activate.bs.scrollspy | Это событие срабатывает всякий раз, когда новый элемент активируется scrollspy. |
$('#myScrollspy').on('activate.bs.scrollspy', function () {
// do something…
}) Переключаемые вкладки tab.js
Примеры вкладок
Добавьте быструю динамическую функциональность вкладок для переключения между областями локального содержимого, даже через выпадающие меню. Вложенные вкладки не поддерживаются.
Открыть пример на getbootstrap.com
Расширяет навигацию по вкладкам
Этот плагин расширяет компонент навигации по вкладкам для добавления областей с вкладками.
Использование
Включить переключаемые вкладки через JavaScript (каждая вкладка должна быть активирована индивидуально):
$('#myTabs a').click(function (e) {
e.preventDefault()
$(this).tab('show')
}) Вы можете активировать отдельные вкладки несколькими способами:
$('#myTabs a[href="#profile"]').tab('show') // Select tab by name
$('#myTabs a:first').tab('show') // Select first tab
$('#myTabs a:last').tab('show') // Select last tab
$('#myTabs li:eq(2) a').tab('show') // Select third tab (0-indexed) Разметка
Вы можете активировать навигацию по вкладкам или кнопкам без написания JavaScript, просто указав data-toggle="tab" или data-toggle="pill" на элементе. Добавление классов nav и nav-tabs к вкладке ul применит стили Bootstrap для вкладок tab styling, а добавление классов nav и nav-pills применит стили pill styling.
<div>
<!-- Nav tabs -->
<ul class="nav nav-tabs" role="tablist">
<li role="presentation" class="active"><a href="#home" aria-controls="home" role="tab" data-toggle="tab">Home</a></li>
<li role="presentation"><a href="#profile" aria-controls="profile" role="tab" data-toggle="tab">Profile</a></li>
<li role="presentation"><a href="#messages" aria-controls="messages" role="tab" data-toggle="tab">Messages</a></li>
<li role="presentation"><a href="#settings" aria-controls="settings" role="tab" data-toggle="tab">Settings</a></li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="home">...</div>
<div role="tabpanel" class="tab-pane" id="profile">...</div>
<div role="tabpanel" class="tab-pane" id="messages">...</div>
<div role="tabpanel" class="tab-pane" id="settings">...</div>
</div>
</div> Эффект затухания
Чтобы сделать вкладки прозрачными, добавьте .fade к каждой .tab-pane. Первая вкладка должна также иметь .in для отображения начального содержимого.
<div class="tab-content"> <div role="tabpanel" class="tab-pane fade in active" id="home">...</div> <div role="tabpanel" class="tab-pane fade" id="profile">...</div> <div role="tabpanel" class="tab-pane fade" id="messages">...</div> <div role="tabpanel" class="tab-pane fade" id="settings">...</div> </div>
Методы
$().tab
Активирует элемент вкладки и контейнер содержимого. Вкладка должна иметь либо data-target, либо href, указывающие на узел-контейнер в DOM. В приведённых выше примерах вкладки представляют собой <a> с атрибутами data-toggle="tab".
.tab('show')
Выбирает заданную вкладку и отображает связанное с ней содержимое. Любая другая ранее выбранная вкладка становится невыбранной, а связанное с ней содержимое скрывается. Возвращает управление вызывающему коду до фактического отображения панели вкладки (т.е. до возникновения события shown.bs.tab).
$('#someTab').tab('show') События
При отображении новой вкладки события срабатывают в следующей последовательности:
-
hide.bs.tab(на текущей активной вкладке) -
show.bs.tab(на вкладке, которая будет отображаться) -
hidden.bs.tab(на предыдущей активной вкладке, той же, что и для событияhide.bs.tab) -
shown.bs.tab(на только что активированной, показанной вкладке, той же, что и для событияshow.bs.tab)
Если активной вкладки ещё не было, то события hide.bs.tab и hidden.bs.tab не будут сгенерированы.
| Тип события | Описание |
|---|---|
| show.bs.tab | Это событие срабатывает при отображении вкладки, но перед тем, как новая вкладка будет показана. Используйте event.target и event.relatedTarget для указания на активную вкладку и предыдущую активную вкладку (если они доступны) соответственно. |
| shown.bs.tab | Это событие срабатывает при отображении вкладки после того, как вкладка была показана. Используйте event.target и event.relatedTarget для указания на активную вкладку и предыдущую активную вкладку (если они доступны) соответственно. |
| hide.bs.tab | Это событие срабатывает, когда должна быть показана новая вкладка (а, следовательно, предыдущая активная вкладка должна быть скрыта). Используйте event.target и event.relatedTarget для указания на текущую активную вкладку и новую готовящуюся к активации вкладку соответственно. |
| hidden.bs.tab | Это событие срабатывает после отображения новой вкладки (и, следовательно, скрытия предыдущей активной вкладки). Используйте event.target и event.relatedTarget для указания на предыдущую активную вкладку и новую активную вкладку соответственно. |
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
e.target // newly activated tab
e.relatedTarget // previous active tab
}) Подсказки tooltip.js
На создание этого компонента повлиял отличный плагин jQuery.tipsy, написанный Джейсоном Фреймом; всплывающие подсказки — это обновлённая версия, которая не использует изображения, использует CSS3 для анимаций и атрибуты данных для локального хранения заголовков.
Подсказки с заголовками нулевой длины никогда не отображаются.
Примеры
Наведите указатель мыши на ссылки ниже, чтобы увидеть подсказки:
Открыть пример на getbootstrap.com
Статическая подсказка
Доступны четыре варианта выравнивания: верх, правое, нижнее и левое.
Открыть пример на getbootstrap.com
Четыре направления
<button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="left" title="Tooltip on left">Tooltip on left</button> <button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="top" title="Tooltip on top">Tooltip on top</button> <button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="bottom" title="Tooltip on bottom">Tooltip on bottom</button> <button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="right" title="Tooltip on right">Tooltip on right</button>
Функциональность с включением по запросу
По причинам производительности, всплывающие подсказки и подсказки с помощью атрибутов данных включаются по запросу, что означает, что вы должны инициализировать их самостоятельно.
Один из способов инициализации всех всплывающих подсказок на странице — выбрать их по их атрибуту data-toggle.
$(function () {
$('[data-toggle="tooltip"]').tooltip()
}) Использование
Плагин всплывающих подсказок генерирует содержимое и разметку по мере необходимости и по умолчанию размещает подсказки после элемента-триггера.
Запустите всплывающую подсказку с помощью JavaScript:
$('#example').tooltip(options) Разметка
Требуемая разметка для всплывающей подсказки — это только атрибут data и title на элементе HTML, для которого требуется всплывающая подсказка. Сгенерированная разметка всплывающей подсказки довольно проста, хотя она требует указания положения (по умолчанию, задаваемого плагином, как top).
<!-- HTML to write -->
<a href="#" data-toggle="tooltip" title="Some tooltip text!">Hover over me</a>
<!-- Generated markup by the plugin -->
<div class="tooltip top" role="tooltip">
<div class="tooltip-arrow"></div>
<div class="tooltip-inner">
Some tooltip text!
</div>
</div> Ссылки с несколькими строками
Иногда нужно добавить всплывающую подсказку к гиперссылке, которая занимает несколько строк. По умолчанию плагин всплывающих подсказок центрирует её по горизонтали и вертикали. Добавьте white-space: nowrap; к вашим якорям, чтобы избежать этого.
Всплывающие подсказки в группах кнопок, группах ввода и таблицах требуют специальных настроек
При использовании всплывающих подсказок на элементах внутри группы кнопок .btn-group или группы ввода .input-group, или на элементах, связанных с таблицами (<td>, <th>, <tr>, <thead>, <tbody>, <tfoot> ), вам нужно указать параметр container: 'body' (документирован ниже), чтобы избежать нежелательных побочных эффектов (таких как увеличение ширины элемента и/или потеря его скругленных углов при активации всплывающей подсказки).
Доступные всплывающие подсказки для пользователей клавиатуры и вспомогательных технологий
Для пользователей, которые перемещаются с помощью клавиатуры, и особенно для пользователей вспомогательных технологий, вы должны добавлять всплывающие подсказки только к элементам, на которые можно навести курсор клавиатурой, таким как ссылки, элементы управления формами или любые произвольные элементы с атрибутом tabindex="0".
Всплывающие подсказки на отключённых элементах требуют обертывающих элементов
Чтобы добавить всплывающую подсказку к отключённому disabled или .disabled элементу, поместите элемент внутри <div> и примените всплывающую подсказку к этому <div> элементу.
Параметры
Параметры можно передать через атрибуты данных или JavaScript. Для атрибутов данных добавьте имя параметра к data-, как в data-animation="".
Обратите внимание, что по соображениям безопасности параметры sanitize, sanitizeFn и whiteList не могут быть заданы с помощью атрибутов данных.
| Имя | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
| animation | boolean | true | Применить CSS-переход fade к всплывающей подсказке |
| container | string | false | false | Присоединяет всплывающую подсказку к определённому элементу. Пример: |
| delay | number | object | 0 | Задержка отображения и скрытия всплывающей подсказки (мс) — не применяется к типу триггера «ручное» Если указано число, задержка применяется к скрытию/отображению Структура объекта: |
| html | boolean | false | Вставить HTML-код во всплывающую подсказку. Если false, будет использоваться метод jQuery text для вставки содержимого в DOM. Используйте текст, если вы обеспокоены XSS-атаками. |
| placement | string | function | 'top' | Способы размещения всплывающей подсказки — top | bottom | left | right | auto. Если для определения размещения используется функция, она вызывается с узлом DOM всплывающей подсказки в качестве первого аргумента и узлом DOM триггерного элемента во втором. Контекст |
| selector | string | false | Если указан селектор, объекты всплывающих подсказок будут делегированы указанным целевым элементам. На практике это используется для применения всплывающих подсказок к динамически добавляемым элементам DOM (поддержка jQuery.on). См. эту и информативную пример. |
| template | string | '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' | Базовый HTML-код для использования при создании всплывающей подсказки.
Внешний оберточный элемент должен иметь класс |
| title | string | function | '' | Значение заголовка по умолчанию, если атрибут Если задана функция, она будет вызвана с ссылкой на |
| trigger | string | 'hover focus' | Как триггерится всплывающая подсказка — click | hover | focus | manual. Можно передавать несколько триггеров; разделяйте их пробелом. manual не может быть объединён с другими триггерами. |
| viewport | string | object | function | { selector: 'body', padding: 0 } | Удерживает всплывающую подсказку в пределах этого элемента. Пример: Если задана функция, она вызывается с узлом DOM триггерного элемента в качестве единственного аргумента. Контекст |
| sanitize | boolean | true | Включить или отключить очистку. Если активировано, 'template', 'content' и 'title' параметры будут очищены. |
| whiteList | object | Значение по умолчанию | Объект, содержащий разрешенные атрибуты и теги |
| sanitizeFn | null | function | null | Здесь вы можете предоставить собственную функцию очистки. Это может быть полезно, если вы предпочитаете использовать специальную библиотеку для выполнения очистки. |
Атрибуты данных для отдельных всплывающих подсказок
Параметры для отдельных всплывающих подсказок можно альтернативно указать с помощью атрибутов данных, как описано выше.
Методы
$().tooltip(options)
Прикрепляет обработчик всплывающей подсказки к набору элементов.
.tooltip('show')
Отображает всплывающую подсказку элемента. Возвращает вызывающему коду до фактического отображения всплывающей подсказки (т. е. до возникновения события shown.bs.tooltip). Это считается «ручным» триггером всплывающей подсказки. Всплывающие подсказки с заголовками нулевой длины никогда не отображаются.
$('#element').tooltip('show') .tooltip('hide')
Скрывает всплывающую подсказку элемента. Возвращает вызывающему коду до фактического скрытия всплывающей подсказки (т. е. до возникновения события hidden.bs.tooltip). Это считается «ручным» триггером всплывающей подсказки.
$('#element').tooltip('hide') .tooltip('toggle')
Переключает всплывающую подсказку элемента. Возвращает вызывающему коду до фактического отображения или скрытия всплывающей подсказки (т. е. до возникновения событий shown.bs.tooltip или hidden.bs.tooltip). Это считается «ручным» триггером всплывающей подсказки.
$('#element').tooltip('toggle') .tooltip('destroy')
Скрывает и уничтожает всплывающую подсказку элемента. Всплывающие подсказки, использующие делегирование (которые созданы с помощью параметра selector), не могут быть уничтожены индивидуально в дочерних триггерных элементах.
$('#element').tooltip('destroy') События
| Тип события | Описание |
|---|---|
| show.bs.tooltip | Это событие срабатывает немедленно при вызове метода show экземпляра. |
| shown.bs.tooltip | Это событие срабатывает, когда всплывающая подсказка становится видимой для пользователя (будет ожидать завершения CSS-переходов). |
| hide.bs.tooltip | Это событие срабатывает немедленно при вызове метода hide экземпляра. |
| hidden.bs.tooltip | Это событие срабатывает, когда всплывающая подсказка завершила скрытие от пользователя (будет ожидать завершения CSS-переходов). |
| inserted.bs.tooltip | Это событие срабатывает после события show.bs.tooltip при добавлении шаблона всплывающей подсказки в DOM. |
$('#myTooltip').on('hidden.bs.tooltip', function () {
// do something…
}) Всплывающие окна popover.js
Добавляет небольшие наложения содержимого, подобные тем, что на iPad, к любому элементу для размещения дополнительной информации.
Всплывающие окна, у которых заголовок и содержимое нулевой длины, никогда не отображаются.
Зависимость плагина
Всплывающие окна требуют включения плагина всплывающие подсказки в вашей версии Bootstrap.
Функциональность по умолчанию
По соображениям производительности, всплывающие подсказки и всплывающие окна — по умолчанию, что означает, что вам необходимо инициализировать их самостоятельно.
Один из способов инициализировать все всплывающие окна на странице — выбрать их по атрибуту data-toggle:
$(function () {
$('[data-toggle="popover"]').popover()
}) Всплывающие окна в группах кнопок, группах ввода и таблицах требуют специальных настроек
При использовании всплывающих окон на элементах внутри .btn-group или .input-group, или на связанных с таблицей элементах (<td>, <th>, <tr>, <thead>, <tbody>, <tfoot>), вам нужно указать параметр container: 'body' (документировано ниже), чтобы избежать нежелательных побочных эффектов (например, увеличения ширины элемента и/или потери его закругленных углов при запуске всплывающего окна).
Всплывающие окна на отключённых элементах требуют обертывающих элементов
Для добавления всплывающего окна к элементу disabled или .disabled, поместите элемент внутрь <div> и примените всплывающее окно к этому <div> вместо него.
Многострочные ссылки
Иногда вам нужно добавить всплывающее окно к гиперссылке, которая занимает несколько строк. По умолчанию плагин всплывающего окна центрирует его по горизонтали и вертикали. Добавьте white-space: nowrap; к вашим якорям, чтобы этого избежать.
Примеры
Статическое всплывающее окно
Доступны четыре варианта: верхнее, правое, нижнее и левое выравнивание.
Открыть пример на getbootstrap.com
Живой пример
<button type="button" class="btn btn-lg btn-danger" data-toggle="popover" title="Popover title" data-content="And here's some amazing content. It's very engaging. Right?">Click to toggle popover</button>
Четыре направления
<button type="button" class="btn btn-default" data-container="body" data-toggle="popover" data-placement="left" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus."> Popover on left </button> <button type="button" class="btn btn-default" data-container="body" data-toggle="popover" data-placement="top" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus."> Popover on top </button> <button type="button" class="btn btn-default" data-container="body" data-toggle="popover" data-placement="bottom" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus."> Popover on bottom </button> <button type="button" class="btn btn-default" data-container="body" data-toggle="popover" data-placement="right" data-content="Vivamus sagittis lacus vel augue laoreet rutrum faucibus."> Popover on right </button>
Закрытие при следующем клике
Используйте триггер focus для закрытия всплывающих окон при следующем клике пользователя.
Требуемая разметка для закрытия при следующем клике
Для правильного поведения в разных браузерах и операционных системах вы должны использовать тег <a>, а не тег <button>, а также включить атрибуты role="button" и tabindex.
<a tabindex="0" class="btn btn-lg btn-danger" role="button" data-toggle="popover" data-trigger="focus" title="Dismissible popover" data-content="And here's some amazing content. It's very engaging. Right?">Dismissible popover</a>
Использование
Включить всплывающие окна через JavaScript:
$('#example').popover(options) Параметры
Параметры можно передать через атрибуты данных или JavaScript. Для атрибутов данных добавьте имя параметра к data-, как в data-animation="".
Обратите внимание, что по соображениям безопасности параметры sanitize, sanitizeFn и whiteList не могут быть предоставлены с помощью атрибутов данных.
| Имя | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
| animation | boolean | true | Применить CSS-переход fade к всплывающей подсказке |
| container | string | false | false | Добавляет всплывающую подсказку к определенному элементу. Пример: |
| content | string | function | '' | Значение содержимого по умолчанию, если атрибут Если указана функция, она будет вызвана со ссылкой |
| delay | number | object | 0 | Задержка отображения и скрытия всплывающей подсказки (мс) — не применяется к типу триггера «manual» Если указано число, задержка применяется как к скрытию, так и к отображению. Структура объекта: |
| html | boolean | false | Вставить HTML во всплывающую подсказку. Если false, будет использоваться метод jQuery text для вставки содержимого в DOM. Используйте текст, если беспокоит проблема XSS-атак. |
| placement | string | function | 'right' | Способ размещения всплывающей подсказки — top | bottom | left | right | auto. Если для определения расположения используется функция, она вызывается с узлом DOM всплывающей подсказки в качестве первого аргумента и узлом DOM триггерного элемента — в качестве второго. Контекст |
| selector | string | false | Если указан селектор, объекты всплывающей подсказки будут делегированы указанным целевым элементам. На практике это используется для поддержки динамического HTML-содержимого с добавленными всплывающими подсказками. См. ссылку и информативный пример. |
| template | string | '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>' | Базовый HTML для использования при создании всплывающей подсказки.
Внешний элемент-обёртки должен иметь класс |
| title | string | function | '' | Значение заголовка по умолчанию, если атрибут Если указана функция, она будет вызвана со ссылкой |
| trigger | string | 'click' | Как вызывается всплывающая подсказка — click | hover | focus | manual. Можно передавать несколько триггеров; разделяйте их пробелом. manual нельзя комбинировать с другими триггерами. |
| viewport | string | object | function | { selector: 'body', padding: 0 } | Удерживает всплывающую подсказку в пределах этого элемента. Пример: Если указана функция, она вызывается с узлом DOM триггерного элемента в качестве единственного аргумента. Контекст |
| sanitize | boolean | true | Включить или отключить очистку. Если активировано 'template', параметры 'content' и 'title' будут очищены. |
| whiteList | object | Значение по умолчанию | Объект, содержащий разрешенные атрибуты и теги |
| sanitizeFn | null | function | null | Здесь вы можете предоставить собственную функцию очистки. Это может быть полезно, если вы предпочитаете использовать отдельную библиотеку для выполнения очистки. |
Атрибуты данных для отдельных всплывающих подсказок
Параметры отдельных всплывающих подсказок можно также указать с помощью атрибутов данных, как описано выше.
Методы
$().popover(options)
Инициализирует всплывающие подсказки для набора элементов.
.popover('show')
Отображает всплывающую подсказку элемента. Возвращает вызывающей стороне до фактического отображения всплывающей подсказки (т. е. до возникновения события shown.bs.popover). Это считается «ручным» вызовом всплывающей подсказки. Всплывающие подсказки, у которых заголовок и содержимое имеют нулевую длину, никогда не отображаются.
$('#element').popover('show') .popover('hide')
Скрывает всплывающую подсказку элемента. Возвращает вызывающей стороне до фактического скрытия всплывающей подсказки (т. е. до возникновения события hidden.bs.popover). Это считается «ручным» вызовом всплывающей подсказки.
$('#element').popover('hide') .popover('toggle')
Переключает всплывающую подсказку элемента. Возвращает вызывающей стороне до фактического отображения или скрытия всплывающей подсказки (т. е. до возникновения события shown.bs.popover или hidden.bs.popover). Это считается «ручным» вызовом всплывающей подсказки.
$('#element').popover('toggle') .popover('destroy')
Скрывает и уничтожает всплывающую подсказку элемента. Всплывающие подсказки, использующие делегирование (которые созданы с помощью параметра selector), не могут быть индивидуально уничтожены в дочерних элементах-триггерах.
$('#element').popover('destroy') События
| Тип события | Описание |
|---|---|
| show.bs.popover | Это событие срабатывает сразу после вызова метода show экземпляра. |
| shown.bs.popover | Это событие срабатывает, когда всплывающая подсказка становится видимой для пользователя (будет ожидать завершения CSS-переходов). |
| hide.bs.popover | Это событие срабатывает сразу после вызова метода hide экземпляра. |
| hidden.bs.popover | Это событие срабатывает, когда всплывающая подсказка завершила скрытие от пользователя (будет ожидать завершения CSS-переходов). |
| inserted.bs.popover | Это событие срабатывает после события show.bs.popover при добавлении шаблона всплывающей подсказки в DOM. |
$('#myPopover').on('hidden.bs.popover', function () {
// do something…
}) Сообщения об ошибках alert.js
Примеры сообщений об ошибках
Добавьте возможность закрытия всех сообщений об ошибках с помощью этого плагина.
При использовании кнопки .close, она должна быть первым дочерним элементом .alert-dismissible, и никакого текстового содержимого не должно быть перед ней в разметке.
Открыть пример на getbootstrap.com
Использование
Просто добавьте data-dismiss="alert" к вашей кнопке закрытия, чтобы автоматически добавить функцию закрытия сообщения об ошибке. Закрытие сообщения об ошибке удаляет его из DOM.
<button type="button" class="close" data-dismiss="alert" aria-label="Close"> <span aria-hidden="true">×</span> </button>
Чтобы ваши сообщения об ошибках использовали анимацию при закрытии, убедитесь, что к ним уже применены классы .fade и .in.
Методы
$().alert()
Привязывает сообщение об ошибке к кликам по дочерним элементам, имеющим атрибут data-dismiss="alert". (Не обязательно при использовании автоматической инициализации data-api.)
$().alert('close')
Закрывает сообщение об ошибке, удалив его из DOM. Если классы .fade и .in присутствуют в элементе, сообщение об ошибке будет исчезать с эффектом плавного вывода.
События
Плагин сообщений об ошибках Bootstrap предоставляет несколько событий для подключения к функциональности сообщений об ошибках.
| Тип события | Описание |
|---|---|
| close.bs.alert | Это событие срабатывает сразу после вызова метода close экземпляра. |
| closed.bs.alert | Это событие срабатывает, когда сообщение об ошибке было закрыто (будет ожидать завершения CSS-переходов). |
$('#myAlert').on('closed.bs.alert', function () {
// do something…
}) Кнопки button.js
Больше возможностей с кнопками. Управление состояниями кнопок или создание групп кнопок для таких компонентов, как панели инструментов.
Совместимость с различными браузерами
Firefox сохраняет состояния элементов формы (отключен/отобран) при перегрузке страницы. Обходным решением является использование autocomplete="off". См. Mozilla bug #654072.
Состояния
Добавьте data-loading-text="Loading..." для использования состояния загрузки на кнопке.
Эта функция устарела с версии v3.3.5 и удалена в v4.
Используйте любое нужное состояние!
Для демонстрации мы используем data-loading-text и $().button('loading'), но это не единственные состояния, которые вы можете использовать. См. больше информации об этом ниже в документации по $().button(string).
<button type="button" id="myButton" data-loading-text="Loading..." class="btn btn-primary">
Loading state
</button>
<script>
$('#myButton').on('click', function () {
var $btn = $(this).button('loading')
// business logic...
$btn.button('reset')
})
</script> Переключение одной кнопки
Добавьте data-toggle="button" для активации переключения одной кнопки.
Кнопки с предварительным переключением нуждаются в .active и aria-pressed="true"
Для кнопок с предварительным переключением необходимо добавить класс .active и атрибут aria-pressed="true" к button самостоятельно.
<button type="button" class="btn btn-primary" data-toggle="button" aria-pressed="false"> Single toggle </button>
Флажки/Радиокнопки
Добавьте data-toggle="buttons" к .btn-group содержащему флажки или радиокнопки для активации переключения в соответствующих стилях.
Предварительно выбранные элементы нуждаются в .active
Для предварительно выбранных элементов необходимо добавить класс .active к label самостоятельно.
Состояние визуального выбора обновляется только при нажатии
Если состояние выбора флажка обновляется без срабатывания события click на кнопке (например, через <input type="reset"> или через установку свойства checked элемента ввода), вам необходимо переключить класс .active на элементе label ввода самостоятельно.
<div class="btn-group" data-toggle="buttons">
<label class="btn btn-primary active">
<input type="checkbox" checked> Checkbox 1 (pre-checked)
</label>
<label class="btn btn-primary">
<input type="checkbox"> Checkbox 2
</label>
<label class="btn btn-primary">
<input type="checkbox"> Checkbox 3
</label>
</div> <div class="btn-group" data-toggle="buttons">
<label class="btn btn-primary active">
<input type="radio" name="options" id="option1" checked> Radio 1 (preselected)
</label>
<label class="btn btn-primary">
<input type="radio" name="options" id="option2"> Radio 2
</label>
<label class="btn btn-primary">
<input type="radio" name="options" id="option3"> Radio 3
</label>
</div> Методы
$().button('toggle')
Переключает состояние нажатия. Придает кнопке вид активированного элемента.
$().button('reset')
Сбрасывает состояние кнопки — заменяет текст на исходный. Этот метод асинхронный и возвращается, прежде чем сброс действительно завершится.
$().button(string)
Заменяет текст на любой определенный текстовый статус.
<button type="button" id="myStateButton" data-complete-text="finished!" class="btn btn-primary">
...
</button>
<script>
$('#myStateButton').on('click', function () {
$(this).button('complete') // button text will be "finished!"
})
</script> Сворачивание collapse.js
Гибкий плагин, использующий несколько классов для простого переключения.
Зависимость плагина
Для работы Collapse требуется включить плагин переходов в вашей версии Bootstrap.
Пример
Нажмите на кнопки ниже, чтобы показать и скрыть другой элемент путем изменения класса:
-
.collapseскрывает содержимое -
.collapsingприменяется во время переходов -
.collapse.inотображает содержимое
Вы можете использовать ссылку с атрибутом href, или кнопку с атрибутом data-target. В обоих случаях требуется атрибут data-toggle="collapse".
<a class="btn btn-primary" role="button" data-toggle="collapse" href="#collapseExample" aria-expanded="false" aria-controls="collapseExample">
Link with href
</a>
<button class="btn btn-primary" type="button" data-toggle="collapse" data-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample">
Button with data-target
</button>
<div class="collapse" id="collapseExample">
<div class="well">
...
</div>
</div> Пример аккордеона
Расширьте стандартное поведение сворачивания, чтобы создать аккордеон с компонентом панели.
<div class="panel-group" id="accordion" role="tablist" aria-multiselectable="true">
<div class="panel panel-default">
<div class="panel-heading" role="tab" id="headingOne">
<h4 class="panel-title">
<a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
Collapsible Group Item #1
</a>
</h4>
</div>
<div id="collapseOne" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingOne">
<div class="panel-body">
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading" role="tab" id="headingTwo">
<h4 class="panel-title">
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
Collapsible Group Item #2
</a>
</h4>
</div>
<div id="collapseTwo" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingTwo">
<div class="panel-body">
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
</div>
</div>
</div>
<div class="panel panel-default">
<div class="panel-heading" role="tab" id="headingThree">
<h4 class="panel-title">
<a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseThree" aria-expanded="false" aria-controls="collapseThree">
Collapsible Group Item #3
</a>
</h4>
</div>
<div id="collapseThree" class="panel-collapse collapse" role="tabpanel" aria-labelledby="headingThree">
<div class="panel-body">
Anim pariatur cliche reprehenderit, enim eiusmod high life accusamus terry richardson ad squid. 3 wolf moon officia aute, non cupidatat skateboard dolor brunch. Food truck quinoa nesciunt laborum eiusmod. Brunch 3 wolf moon tempor, sunt aliqua put a bird on it squid single-origin coffee nulla assumenda shoreditch et. Nihil anim keffiyeh helvetica, craft beer labore wes anderson cred nesciunt sapiente ea proident. Ad vegan excepteur butcher vice lomo. Leggings occaecat craft beer farm-to-table, raw denim aesthetic synth nesciunt you probably haven't heard of them accusamus labore sustainable VHS.
</div>
</div>
</div>
</div> Также можно заменить .panel-body на .list-group.
Обеспечение доступности элементов управления раскрытием/свертыванием
Убедитесь, что к элементу управления добавлен атрибут aria-expanded. Этот атрибут явно определяет текущее состояние элемента сворачивания для экранных читателей и аналогичных вспомогательных технологий. Если элемент сворачивания по умолчанию закрыт, значение должно быть aria-expanded="false". Если вы установили элемент сворачивания по умолчанию открытым, используя класс in, установите значение aria-expanded="true" для элемента управления. Плагин автоматически переключает этот атрибут в зависимости от того, был ли элемент сворачивания открыт или закрыт.
Кроме того, если ваш элемент управления направлен на единственный элемент сворачивания (т.е. атрибут data-target указывает на селектор id элемента), вы можете добавить дополнительный атрибут aria-controls к элементу управления, содержащий id элемента сворачивания. Современные экранные читатели и аналогичные вспомогательные технологии используют этот атрибут, чтобы предоставить пользователям дополнительные сочетания клавиш для прямого перехода к элементу сворачивания.
Использование
Плагин Collapse использует несколько классов для обработки основных задач:
-
.collapseскрывает содержимое -
.collapse.inотображает содержимое -
.collapsingдобавляется при запуске перехода и удаляется по его завершении
Эти классы можно найти в component-animations.less.
Через атрибуты данных
Просто добавьте атрибуты data-toggle="collapse" и data-target к элементу, чтобы автоматически назначить управление элементом сворачивания. Атрибут data-target принимает селектор CSS для применения сворачивания. Убедитесь, что к элементу сворачивания добавлен класс collapse. Если вы хотите, чтобы он открывался по умолчанию, добавьте дополнительный класс in.
Чтобы добавить управление группами в стиле аккордеона к элементу управления сворачиванием, добавьте атрибут данных data-parent="#selector". Обратитесь к демонстрации, чтобы увидеть это в действии.
Через JavaScript
Включить вручную:
$('.collapse').collapse() Параметры
Параметры могут быть переданы через атрибуты данных или JavaScript. Для атрибутов данных добавьте имя параметра к data-, как в data-parent="".
| Имя | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
| parent | селектор | false | Если указан селектор, все элементы сворачивания под указанным родителем будут закрыты при открытии этого элемента. (аналогично традиционному поведению аккордеона - зависит от класса panel) |
| toggle | булево | true | Переключает элемент сворачивания при вызове |
Методы
.collapse(options)
Активирует ваш контент как элемент сворачивания. Принимает необязательные параметры object.
$('#myCollapsible').collapse({
toggle: false
}) .collapse('toggle')
Переключает элемент сворачивания на отображение или скрытие. Возвращает вызывающему элементу до того, как элемент сворачивания фактически отобразится или скроется (т.е. до того, как произойдет событие shown.bs.collapse или hidden.bs.collapse).
.collapse('show')
Отображает элемент сворачивания. Возвращает вызывающему элементу до того, как элемент сворачивания фактически отобразится (т.е. до того, как произойдет событие shown.bs.collapse).
.collapse('hide')
Скрывает элемент сворачивания. Возвращает вызывающему элементу до того, как элемент сворачивания фактически скроется (т.е. до того, как произойдет событие hidden.bs.collapse).
События
Класс Collapse Bootstrap предоставляет несколько событий для подключения к функциональности сворачивания.
| Тип события | Описание |
|---|---|
| show.bs.collapse | Это событие срабатывает сразу после вызова метода show. |
| shown.bs.collapse | Это событие срабатывает, когда элемент сворачивания становится видимым для пользователя (будет ожидать завершения CSS-переходов). |
| hide.bs.collapse | Это событие срабатывает сразу после вызова метода hide . |
| hidden.bs.collapse | Это событие срабатывает, когда элемент сворачивания скрывается от пользователя (будет ожидать завершения CSS-переходов). |
$('#myCollapsible').on('hidden.bs.collapse', function () {
// do something…
}) Карусель carousel.js
Компонент слайдера для циклического перехода между элементами, как карусель. Вложенные карусели не поддерживаются.
Примеры
<div id="carousel-example-generic" class="carousel slide" data-ride="carousel">
<!-- Indicators -->
<ol class="carousel-indicators">
<li data-target="#carousel-example-generic" data-slide-to="0" class="active"></li>
<li data-target="#carousel-example-generic" data-slide-to="1"></li>
<li data-target="#carousel-example-generic" data-slide-to="2"></li>
</ol>
<!-- Wrapper for slides -->
<div class="carousel-inner" role="listbox">
<div class="item active">
<img src="..." alt="...">
<div class="carousel-caption">
...
</div>
</div>
<div class="item">
<img src="..." alt="...">
<div class="carousel-caption">
...
</div>
</div>
...
</div>
<!-- Controls -->
<a class="left carousel-control" href="#carousel-example-generic" role="button" data-slide="prev">
<span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="right carousel-control" href="#carousel-example-generic" role="button" data-slide="next">
<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div> Проблема с доступностью
Компонент карусели, как правило, не соответствует стандартам доступности. Если вам необходимо соответствовать стандартам, рассмотрите другие варианты представления вашего контента.
Анимации переходов не поддерживаются в Internet Explorer 8 и 9
Bootstrap исключительно использует CSS3 для своих анимаций, но Internet Explorer 8 и 9 не поддерживают необходимые свойства CSS. Таким образом, нет анимаций смены слайдов при использовании этих браузеров. Мы намеренно решили не включать обратные вызовы на основе jQuery для переходов.
Необходим начальный активный элемент
Класс .active должен быть добавлен к одному из слайдов. В противном случае карусель не будет отображаться.
Иконки Glyphicons не обязательны
Классы .glyphicon .glyphicon-chevron-left и .glyphicon .glyphicon-chevron-right не обязательно нужны для элементов управления. Bootstrap предоставляет .icon-prev и .icon-next в качестве простых альтернатив Юникода.
Необязательные подписи
Добавьте подписи к вашим слайдам с помощью элемента .carousel-caption внутри любого .item. Поместите там любой необязательный HTML, и он будет автоматически выровнен и отформатирован.
<div class="item">
<img src="..." alt="...">
<div class="carousel-caption">
<h3>...</h3>
<p>...</p>
</div>
</div> Использование
Несколько каруселей
Для правильной работы элементов управления каруселью карусели требуют использования id на внешнем контейнере (в .carousel). При добавлении нескольких каруселей или при изменении id карусели убедитесь, что обновлены соответствующие элементы управления.
Через атрибуты данных
Используйте атрибуты данных для легкого управления позицией карусели. data-slide принимает ключевые слова prev или next, которые изменяют положение слайда относительно его текущего положения. В качестве альтернативы используйте data-slide-to для передачи непосредственного индекса слайда в карусель data-slide-to="2", что смещает положение слайда в определенный индекс, начиная с 0.
Атрибут data-ride="carousel" используется для обозначения карусели, которая анимируется с момента загрузки страницы. Его нельзя использовать в сочетании с (избыточным и необоснованным) явным инициализацией JavaScript той же карусели.
Через JavaScript
Вызвать карусель вручную с помощью:
$('.carousel').carousel() Параметры
Параметры могут быть переданы через атрибуты данных или JavaScript. Для атрибутов данных добавьте имя параметра к data-, как в data-interval="".
| Имя | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
| interval | число | 5000 | Время задержки между автоматической сменой элемента. Если false, переключение не будет автоматическим. |
| pause | строка | null | "hover" | Если установлено в "hover", приостанавливает переключение карусели при mouseenter и возобновляет при mouseleave. Если установлено в null, наведение курсора на карусель не будет её приостанавливать. |
| wrap | булево | true | Определяет, должна ли карусель циклически переключаться или иметь жёсткие остановки. |
| keyboard | булево | true | Определяет, должна ли карусель реагировать на события клавиатуры. |
Методы
.carousel(options)
Инициализирует карусель с необязательными параметрами object и начинает циклическое переключение элементов.
$('.carousel').carousel({
interval: 2000
})
.carousel('cycle')
Переключается по элементам карусели слева направо.
.carousel('pause')
Останавливает циклическое переключение элементов карусели.
.carousel(number)
Переключает карусель на определённую рамку (индексируется с 0, аналогично массиву).
.carousel('prev')
Переключается на предыдущий элемент.
.carousel('next')
Переключается на следующий элемент.
События
Класс карусели Bootstrap предоставляет два события для реагирования на функциональность карусели.
Оба события имеют следующие дополнительные свойства:
-
direction: Направление сдвига карусели (либо"left"либо"right"). -
relatedTarget: Элемент DOM, который перемещается в активное положение.
Все события карусели генерируются самой каруселью (то есть на элементе <div class="carousel">).
| Тип события | Описание |
|---|---|
| slide.bs.carousel | Это событие срабатывает сразу же после вызова метода slide экземпляра. |
| slid.bs.carousel | Это событие срабатывает после завершения перехода сдвига карусели. |
$('#myCarousel').on('slide.bs.carousel', function () {
// do something…
})
Фиксация affix.js
Пример
Плагин affix включает и выключает position: fixed;, имитируя эффект, встречаемый в position: sticky;. Подменю справа является демонстрацией работы плагина affix.
Использование
Используйте плагин affix с помощью атрибутов данных или вручную с помощью собственного JavaScript. В обоих случаях необходимо предоставить CSS для позиционирования и ширины вашего фиксированного содержимого.
Примечание: не используйте плагин affix на элементе, содержащемся в элементе с относительным позиционированием, таком как столбец с выравниванием слева или справа, из-за ошибки рендеринга в Safari Safari rendering bug.
Позиционирование через CSS
Плагин affix переключается между тремя классами, каждый из которых представляет определённое состояние: .affix, .affix-top, и .affix-bottom. Вы должны предоставить стили, за исключением position: fixed; на .affix, самостоятельно (независимо от этого плагина), чтобы обработать фактические позиции.
Вот как работает плагин affix:
- Для начала плагин добавляет
.affix-topдля указания, что элемент находится в верхней позиции. В этот момент CSS позиционирование не требуется. - Прокрутка мимо элемента, который вы хотите зафиксировать, должна вызывать фактическое фиксирование. Здесь
.affixзаменяет.affix-topи устанавливаетposition: fixed;(предоставляемый CSS Bootstrap). - Если задан отступ снизу, прокрутка мимо него должна заменить
.affixна.affix-bottom. Поскольку отступы необязательны, их установка требует установки соответствующего CSS. В этом случае добавьтеposition: absolute;при необходимости. Плагин использует атрибут данных или опцию JavaScript, чтобы определить, откуда позиционировать элемент.
Следуйте приведенным выше шагам, чтобы задать свой CSS для любого из вариантов использования ниже.
С помощью атрибутов данных
Чтобы легко добавить поведение affix к любому элементу, просто добавьте data-spy="affix" к элементу, который вы хотите отслеживать. Используйте отступы для определения того, когда включать и выключать привязку элемента.
<div data-spy="affix" data-offset-top="60" data-offset-bottom="200"> ... </div>
С помощью JavaScript
Вызовите плагин affix через JavaScript:
$('#myAffix').affix({
offset: {
top: 100,
bottom: function () {
return (this.bottom = $('.footer').outerHeight(true))
}
}
})
Параметры
Параметры могут быть переданы через атрибуты данных или JavaScript. Для атрибутов данных добавьте имя параметра к data-, как в data-offset-top="200".
| Имя | Тип | Значение по умолчанию | Описание |
|---|---|---|---|
| offset | число | функция | объект | 10 | Пиксели для отступа от экрана при вычислении положения прокрутки. Если задано единственное число, отступ будет применён в верхней и нижней частях. Чтобы задать отдельные отступы сверху и снизу, укажите объект offset: { top: 10 } или offset: { top: 10, bottom: 5 }. Используйте функцию, когда вам нужно динамически вычислять отступ. |
| target | селектор | узел | элемент jQuery | объект window |
Указывает целевой элемент для фиксации. |
Методы
.affix(options)
Активирует ваше содержимое как фиксированное. Принимает необязательные параметры object.
$('#myAffix').affix({
offset: 15
})
.affix('checkPosition')
Пересчитывает состояние фиксации на основе размеров, положения и положения прокрутки соответствующих элементов. Классы .affix, .affix-top, и .affix-bottom добавляются или удаляются из фиксированного содержимого в соответствии с новым состоянием. Этот метод необходимо вызывать всякий раз, когда изменяются размеры фиксированного содержимого или целевого элемента, чтобы обеспечить правильное позиционирование фиксированного содержимого.
$('#myAffix').affix('checkPosition')
События
Плагин affix Bootstrap предоставляет несколько событий для взаимодействия с функциональностью фиксации.
| Тип события | Описание |
|---|---|
| affix.bs.affix | Это событие срабатывает сразу же перед тем, как элемент будет зафиксирован. |
| affixed.bs.affix | Это событие срабатывает после того, как элемент был зафиксирован. |
| affix-top.bs.affix | Это событие срабатывает сразу же перед тем, как элемент будет зафиксирован в верхней части. |
| affixed-top.bs.affix | Это событие срабатывает после того, как элемент был зафиксирован в верхней части. |
| affix-bottom.bs.affix | Это событие срабатывает сразу же перед тем, как элемент будет зафиксирован в нижней части. |
| affixed-bottom.bs.affix | Это событие срабатывает после того, как элемент был зафиксирован в нижней части. |
© 2011–2020 Twitter, Inc.
© 2011–2020 The Bootstrap Authors
Code licensed under the MIT License.
Documentation licensed under the Creative Commons Attribution License v3.0.
https://getbootstrap.com/docs/3.4/javascript/