JavaScript
Оживите компоненты Bootstrap с помощью более десятка пользовательских jQuery-плагинов. Легко подключайте их все или по одному.
Оживите компоненты Bootstrap с помощью более десятка пользовательских jQuery-плагинов. Легко подключайте их все или по одному.
Плагины могут быть включены индивидуально (используя Bootstrap's отдельные *.js
файлы), или все сразу (используя bootstrap.js
или сжатый bootstrap.min.js
).
Оба bootstrap.js
и bootstrap.min.js
содержат все плагины в одном файле. Включите только один.
Некоторые плагины и компоненты CSS зависят от других плагинов. Если вы включаете плагины индивидуально, убедитесь, что проверяете эти зависимости в документации. Также отметим, что все плагины зависят от jQuery (это означает, что jQuery должен быть включен перед файлами плагинов). См. наш bower.json
для просмотра версий jQuery, поддерживаемых.
Вы можете использовать все плагины Bootstrap исключительно через API разметки без написания даже одной строки JavaScript. Это первый класс API Bootstrap и должен быть вашим первым соображением при использовании плагина.
Тем не менее, в некоторых ситуациях может быть желательно отключить эту функциональность. Поэтому мы также предоставляем возможность отключить API атрибутов данных, отвязав все события на документе, имеющие пространство имен data-api
. Это выглядит так:
$(document).off('.data-api')
Альтернативно, чтобы выбрать конкретный плагин, просто включите имя плагина в пространство имен вместе с пространством имен data-api, как это:
$(document).off('.alert.data-api')
Не используйте атрибуты данных из нескольких плагинов на одном элементе. Например, кнопка не может одновременно иметь подсказку и переключать модальное окно. Чтобы этого достичь, используйте обертывающий элемент.
Мы также считаем, что вы должны иметь возможность использовать все плагины Bootstrap исключительно через API JavaScript. Все публичные API являются одиночными, цепочечными методами, и возвращают коллекцию, над которой действовал.
$('.btn.danger').button('toggle').addClass('fat')
Все методы должны принимать необязательный объект опций, строку, которая указывает на конкретный метод, или ничего (что инициирует плагин с поведением по умолчанию):
$('#myModal').modal() // инициализируется с дефолтами
$('#myModal').modal({ keyboard: false }) // инициализируется без клавиатуры
$('#myModal').modal('show') // инициализирует и вызывает show сразу
Каждый плагин также экспортирует свой сырой конструктор на свойство Constructor
: $.fn.popover.Constructor
. Если вы хотите получить конкретный экземпляр плагина, получите его напрямую из элемента: $('[rel="popover"]').data('popover')
.
Вы можете изменить настройки по умолчанию для плагина, модифицируя объект Constructor.DEFAULTS
плагина:
$.fn.modal.Constructor.DEFAULTS.keyboard = false // изменяет дефолт для опции `keyboard` плагина модального окна на false
Иногда может потребоваться использовать плагины Bootstrap с другими UI-фреймворками. В таких случаях могут возникнуть конфликты имен. Если это произойдет, вы можете вызвать .noConflict
на плагине, который вы хотите отменить значение.
var bootstrapButton = $.fn.button.noConflict() // возвращает $.fn.button к предыдущему назначенному значению
$.fn.bootstrapBtn = bootstrapButton // дает $().bootstrapBtn функциональность Bootstrap
Bootstrap предоставляет пользовательские события для уникальных действий большинства плагинов. Обычно это происходит в форме бесконечного и прошедшего времени - где бесконечное (например, show
) срабатывает в начале события, а его прошедшее время (например, shown
) срабатывает при завершении действия.
Начиная с 3.0.0, все события Bootstrap имеют пространство имен.
Все бесконечные события предоставляют функциональность preventDefault
. Это обеспечивает возможность остановить выполнение действия перед его началом.
$('#myModal').on('show.bs.modal', function (e) {
if (!data) return e.preventDefault() // останавливает модальное окно от показа
})
Версия каждого из jQuery-плагинов Bootstrap Bootstrap может быть получена через свойство VERSION
конструктора плагина. Например, для плагина подсказки:
$.fn.tooltip.Constructor.VERSION // => "3.3.7"
Плагины Bootstrap не падают особенно хорошо, когда JavaScript отключен. Если вы заботитесь о пользовательском опыте в этом случае, используйте <noscript>
, чтобы объяснить ситуацию (и как включить JavaScript) вашим пользователям, и/или добавьте собственные пользовательские отступления.
Bootstrap не официально поддерживает третьи библиотеки JavaScript типа Prototype или jQuery UI. Несмотря на .noConflict
и именованные события, могут возникнуть проблемы совместимости, которые вам нужно исправить самостоятельно.
Для простых эффектов перехода включите transition.js
вместе с другими файлами JS. Если вы используете скомпилированный (или минифицированный) bootstrap.js
, вам не нужно включать этот файл—он уже там.
Transition.js является базовым помощником для событий transitionEnd
и эмулятором CSS-переходов. Он используется другими плагинами для проверки поддержки CSS-переходов и для перехвата зависших переходов.
Переходы можно отключить глобально с помощью следующего фрагмента JavaScript, который должен идти после загрузки transition.js
(или bootstrap.js
или bootstrap.min.js
, в зависимости от случая):
$.support.transition = false
Модальные окна — это упрощенные, но гибкие диалоги с минимальной функциональностью и умными дефолтами.
Убедитесь, что не открываете модальное окно, пока другое все еще видно. Открытие нескольких модальных окон одновременно требует написания пользовательского кода.
Всегда пытайтесь разместить HTML-код модального окна в верхнем уровне вашего документа, чтобы избежать влияния других компонентов на внешний вид и/или функциональность модального окна.
Существуют особые замечания по использованию модальных окон на мобильных устройствах. См. наши документы по поддержке браузеров для деталей.
Из-за того, как HTML5 определяет его семантику, атрибут autofocus
HTML не оказывает никакого эффекта в модальных окнах 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">Заголовок модального окна</h4>
</div>
<div class="modal-body">
<p>Одна хорошая тело…</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Закрыть</button>
<button type="button" class="btn btn-primary">Сохранить изменения</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">
Запустить демо-модальное окно
</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">Заголовок модального окна</h4>
</div>
<div class="modal-body">
...
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Закрыть</button>
<button type="button" class="btn btn-primary">Сохранить изменения</button>
</div>
</div>
</div>
</div>
Убедитесь, что добавляете role="dialog"
и aria-labelledby="..."
, ссылаясь на заголовок модального окна, к .modal
, и role="document"
к .modal-dialog
самому.
Кроме того, вы можете дать описание вашего модального диалога с помощью aria-describedby
на .modal
.
Встраивание видео 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">Большое модальное окно</button>
<div class="modal fade bs-example-modal-lg" 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">Маленькое модальное окно</button>
<div class="modal fade bs-example-modal-sm" 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
s внутрь .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">Заголовок модального окна</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">
Уровень 1: .col-sm-9
<div class="row">
<div class="col-xs-8 col-sm-6">
Уровень 2: .col-xs-8 .col-sm-6
</div>
<div class="col-xs-4 col-sm-6">
Уровень 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">Закрыть</button>
<button type="button" class="btn btn-primary">Сохранить изменения</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">Открыть модальное окно для @mdo</button>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@fat">Открыть модальное окно для @fat</button>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@getbootstrap">Открыть модальное окно для @getbootstrap</button>
...больше кнопок...
<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">Новое сообщение</h4>
</div>
<div class="modal-body">
<form>
<div class="form-group">
<label for="recipient-name" class="control-label">Получатель:</label>
<input type="text" class="form-control" id="recipient-name">
</div>
<div class="form-group">
<label for="message-text" class="control-label">Сообщение:</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">Закрыть</button>
<button type="button" class="btn btn-primary">Отправить сообщение</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('Новое сообщение для ' + 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">Запустить модальное окно</button>
Вызовите модальное окно с идентификатором myModal
с помощью одной строки JavaScript:
$('#myModal').modal(options)
Опции можно передавать через атрибуты данных или JavaScript. Для атрибутов данных, добавьте имя опции к data-
, например, data-backdrop=""
.
Имя | тип | по умолчанию | описание |
---|---|---|---|
backdrop | boolean или строка 'static' |
true | Включает элемент modal-backdrop . В качестве альтернативы, укажите static для затемнения, которое не закрывает модальное окно при нажатии. |
keyboard | boolean | true | Закрывает модальное окно при нажатии клавиши Escape |
show | boolean | true | Показывает модальное окно при инициализации. |
remote | path | false |
Эта опция устарела с версии v3.3.0 и была удалена в v4. Мы рекомендуем вместо этого использовать клиентскую шаблонизацию или фреймворк привязки данных, или вызовите jQuery.load самостоятельно. Если предоставлен удаленный URL, содержимое загружается один раз через метод
|
.modal(options)
Активирует ваше содержимое как модальное окно. Принимает необязательный объект опций.
$('#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...
})
Добавьте выпадающие меню к чему угодно с помощью этого простого плагина, включая навигационную панель, вкладки и табы.
Через атрибуты данных или JavaScript, плагин выпадающего списка переключает скрытое содержимое (выпадающие меню) путем переключения класса .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">
Триггер выпадающего списка
<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">
Триггер выпадающего списка
<span class="caret"></span>
</a>
<ul class="dropdown-menu" aria-labelledby="dLabel">
...
</ul>
</div>
Вызывайте выпадающие списки через 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 () {
// сделайте что-нибудь…
})
Плагин ScrollSpy предназначен для автоматического обновления целевых элементов навигации на основе прокрутки. Прокрутите область ниже навигационного меню и наблюдайте за изменением активной класс. Подменю выпадающего списка также будут подсвечены.
Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.
Veniam marfa mustache skateboard, adipisicing fugiat velit pitchfork beard. Freegan beard aliqua cupidatat mcsweeney's vero. Cupidatat four loko nisi, ea helvetica nulla carles. Tattooed cosby sweater food truck, mcsweeney's quis non freegan vinyl. Lo-fi wes anderson +1 sartorial. Carles non aesthetic exercitation quis gentrify. Brooklyn adipisicing craft beer vice keytar deserunt.
Occaecat commodo aliqua delectus. Fap craft beer deserunt skateboard ea. Lomo bicycle rights adipisicing banh mi, velit ea sunt next level locavore single-origin coffee in magna veniam. High life id vinyl, echo park consequat quis aliquip banh mi pitchfork. Vero VHS est adipisicing. Consectetur nisi DIY minim messenger bag. Cred ex in, sustainable delectus consectetur fanny pack iphone.
In incididunt echo park, officia deserunt mcsweeney's proident master cleanse thundercats sapiente veniam. Excepteur VHS elit, proident shoreditch +1 biodiesel laborum craft beer. Single-origin coffee wayfarers irure four loko, cupidatat terry richardson master cleanse. Assumenda you probably haven't heard of them art party fanny pack, tattooed nulla cardigan tempor ad. Proident wolf nesciunt sartorial keffiyeh eu banh mi sustainable. Elit wolf voluptate, lo-fi ea portland before they sold out four loko. Locavore enim nostrud mlkshk brooklyn nesciunt.
Ad leggings keytar, brunch id art party dolor labore. Pitchfork yr enim lo-fi before they sold out qui. Tumblr farm-to-table bicycle rights whatever. Anim keffiyeh carles cardigan. Velit seitan mcsweeney's photo booth 3 wolf moon irure. Cosby sweater lomo jean shorts, williamsburg hoodie minim qui you probably haven't heard of them et cardigan trust fund culpa biodiesel wes anderson aesthetic. Nihil tattooed accusamus, cred irony biodiesel keffiyeh artisan ullamco consequat.
Keytar twee blog, culpa messenger bag marfa whatever delectus food truck. Sapiente synth id assumenda. Locavore sed helvetica cliche irony, thundercats you probably haven't heard of them consequat hoodie gluten-free lo-fi fap aliquip. Labore elit placeat before they sold out, terry richardson proident brunch nesciunt quis cosby sweater pariatur keffiyeh ut helvetica artisan. Cardigan craft beer seitan readymade velit. VHS chambray laboris tempor veniam. Anim mollit minim commodo ullamco thundercats.
Ссылки навигационного меню должны иметь разрешимые целевые элементы ID.
Например, <a href="#home">home</a>
должен
соответствовать чему-то в DOM, например,
<div id="home"></div>
.
Целевые элементы, которые не являются
: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>
После добавления 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… })
Добавьте быструю, динамическую функциональность вкладок для перехода между панелями локального содержимого, даже через меню выпадающих списков. Вложенные вкладки не поддерживаются.
Raw denim you probably haven't heard of them jean shorts Austin. Nesciunt tofu stumptown aliqua, retro synth master cleanse. Mustache cliche tempor, williamsburg carles vegan helvetica. Reprehenderit butcher retro keffiyeh dreamcatcher synth. Cosby sweater eu banh mi, qui irure terry richardson ex squid. Aliquip placeat salvia cillum iphone. Seitan aliquip quis cardigan american apparel, butcher voluptate nisi qui.
Food truck fixie locavore, accusamus mcsweeney's marfa nulla single-origin coffee squid. Exercitation +1 labore velit, blog sartorial PBR leggings next level wes anderson artisan four loko farm-to-table craft beer twee. Qui photo booth letterpress, commodo enim craft beer mlkshk aliquip jean shorts ullamco ad vinyl cillum PBR. Homo nostrud organic, assumenda labore aesthetic magna delectus mollit. Keytar helvetica VHS salvia yr, vero magna velit sapiente labore stumptown. Vegan fanny pack odio cillum wes anderson 8-bit, sustainable jean shorts beard ut DIY ethical culpa terry richardson biodiesel. Art party scenester stumptown, tumblr butcher vero sint qui sapiente accusamus tattooed echo park.
Etsy mixtape wayfarers, ethical wes anderson tofu before they sold out mcsweeney's organic lomo retro fanny pack lo-fi farm-to-table readymade. Messenger bag gentrify pitchfork tattooed craft beer, iphone skateboard locavore carles etsy salvia banksy hoodie helvetica. DIY synth PBR banksy irony. Leggings gentrify squid 8-bit cred pitchfork. Williamsburg banh mi whatever gluten-free, carles pitchfork biodiesel fixie etsy retro mlkshk vice blog. Scenester cred you probably haven't heard of them, vinyl craft beer blog stumptown. Pitchfork sustainable tofu synth chambray yr.
Trust fund seitan letterpress, keytar raw denim keffiyeh etsy art party before they sold out master cleanse gluten-free squid scenester freegan cosby sweater. Fanny pack portland seitan DIY, art party locavore wolf cliche high life echo park Austin. Cred vinyl keffiyeh DIY salvia PBR, banh mi before they sold out farm-to-table VHS viral locavore cosby sweater. Lomo wolf viral, mustache readymade thundercats keffiyeh craft beer marfa ethical. Wolf salvia freegan, sartorial keffiyeh echo park vegan.
Этот плагин расширяет компонент вкладку навигации для добавления таббируемых областей.
Включите таббируемые вкладки через JavaScript (каждая вкладка должна быть активирована индивидуально):
$('#myTabs a').click(function (e) {
e.preventDefault()
$(this).tab('show')
})
Вы можете активировать индивидуальные вкладки несколькими способами:
$('#myTabs a[href="#profile"]').tab('show') // Выберите вкладку по имени
$('#myTabs a:first').tab('show') // Выберите первую вкладку
$('#myTabs a:last').tab('show') // Выберите последнюю вкладку
$('#myTabs li:eq(2) a').tab('show') // Выберите третью вкладку (0-индексированный)
Вы можете активировать вкладку или навигацию с вкладками без написания какого-либо JavaScript, просто указав data-toggle="tab"
или data-toggle="pill"
на элемент. Добавление классов nav
и nav-tabs
к ul
вкладке применит стили Bootstrap вкладки, в то время как добавление классов nav
и nav-pills
применит стили таблетов.
<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">Главная</a></li>
<li role="presentation"><a href="#profile" aria-controls="profile" role="tab" data-toggle="tab">Профиль</a></li>
<li role="presentation"><a href="#messages" aria-controls="messages" role="tab" data-toggle="tab">Сообщения</a></li>
<li role="presentation"><a href="#settings" aria-controls="settings" role="tab" data-toggle="tab">Настройки</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 // только что активированная вкладка
e.relatedTarget // предыдущая активная вкладка
})
Вдохновлён отличным плагином jQuery.tipsy, написанным Джейсоном Фреймом; всплывающие подсказки — это обновлённая версия, которая не использует изображения, применяет CSS3 для анимаций и data-атрибуты для локального хранения заголовков.
Всплывающие подсказки с пустым заголовком не отображаются.
Наведите курсор на ссылки ниже, чтобы увидеть всплывающие подсказки:
Tight pants next level keffiyeh you probably haven't heard of them. Photo booth beard raw denim letterpress vegan messenger bag stumptown. Farm-to-table seitan, mcsweeney's fixie sustainable quinoa 8-bit american apparel have a terry richardson vinyl chambray. Beard stumptown, cardigans banh mi lomo thundercats. Tofu biodiesel williamsburg marfa, four loko mcsweeney's cleanse vegan chambray. A really ironic artisan whatever keytar, scenester farm-to-table banksy Austin twitter handle freegan cred raw denim single-origin coffee viral.
Доступно четыре варианта: выравнивание сверху, справа, снизу и слева.
<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-api для всплывающих подсказок и popover не активируется автоматически, вы должны инициализировать их самостоятельно.
Один из способов инициализировать все подсказки на странице — выбрать их по атрибуту 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>
.
Опции можно передавать через data-атрибуты или JavaScript. Для data-атрибутов добавьте имя опции к data-
, например data-animation=""
.
Name | Type | Default | Description | Имя | Тип | По умолчанию | Описание |
---|---|---|---|---|---|---|---|
animation | boolean | true | Применяет CSS-переход с эффектом затухания к подсказке | ||||
container | string | false | false |
Добавляет подсказку к определённому элементу. Например: |
||||
delay | number | object | 0 |
Задержка показа и скрытия подсказки (мс) — не применяется к ручному типу триггера Если указано число, задержка применяется и к показу, и к скрытию Структура объекта: |
||||
html | boolean | false | Вставляет HTML в подсказку. Если false, используется метод text jQuery для вставки содержимого в DOM. Используйте text, если опасаетесь XSS-атак. |
||||
placement | string | function | 'top' |
Как позиционировать подсказку — top | bottom | left | right | auto. Если для определения положения используется функция, она вызывается с DOM-узлом подсказки в качестве первого аргумента и DOM-узлом элемента-триггера в качестве второго. Контекст |
||||
selector | string | false | Если указан селектор, объекты подсказок будут делегированы указанным целям. На практике это используется для добавления подсказок к динамическому HTML-контенту. См. пример и ещё один пример. | ||||
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-узлом элемента-триггера в качестве единственного аргумента. Контекст |
Options for individual tooltips can alternatively be specified through the use of data attributes, as explained above.
Опции для отдельных подсказок также можно указывать с помощью data-атрибутов, как описано выше.
$().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')
Event Type | Description | Тип события | Описание |
---|---|---|---|
show.bs.tooltip | This event fires immediately when the show instance method is called. |
Это событие возникает сразу после вызова метода show . |
|
shown.bs.tooltip | This event is fired when the tooltip has been made visible to the user (will wait for CSS transitions to complete). | Это событие возникает, когда подсказка стала видимой для пользователя (после завершения CSS-переходов). | |
hide.bs.tooltip | This event is fired immediately when the hide instance method has been called. |
Это событие возникает сразу после вызова метода hide . |
|
hidden.bs.tooltip | This event is fired when the tooltip has finished being hidden from the user (will wait for CSS transitions to complete). | Это событие возникает, когда подсказка полностью скрыта от пользователя (после завершения CSS-переходов). | |
inserted.bs.tooltip | This event is fired after the show.bs.tooltip event when the tooltip template has been added to the DOM. |
Это событие возникает после show.bs.tooltip , когда шаблон подсказки добавлен в DOM. |
$('#myTooltip').on('hidden.bs.tooltip', function () {
// do something…
})
Добавьте небольшие наложения содержимого, такие как те, что на iPad, к любому элементу для размещения вторичной информации.
Popovers, у которых и заголовок, и содержимое имеют нулевую длину, никогда не отображаются.
Popovers требуют включения плагина tooltip в вашу версию Bootstrap.
Для оптимизации производительности, API данных Tooltip и Popover являются опциональными, что означает вы должны инициализировать их самостоятельно.
Один из способов инициализации всех popovers на странице — выбор их по атрибуту data-toggle
:
$(function () {
$('[data-toggle="popover"]').popover()
})
При использовании popovers на элементах внутри .btn-group
или .input-group
, или на элементах, связанных с таблицами (<td>
, <th>
, <tr>
, <thead>
, <tbody>
, <tfoot>
), вам нужно указать опцию container: 'body'
(описанную ниже) для предотвращения нежелательных побочных эффектов (например, элемент становится шире и/или теряет свои закругленные углы, когда popover активируется).
Чтобы добавить popover к элементу disabled
или .disabled
, поместите элемент внутрь <div>
и примените popover к этому <div>
вместо.
Иногда вам нужно добавить popover к гиперссылке, которая обертывает несколько строк. По умолчанию поведение плагина popover центрирует его горизонтально и вертикально. Добавьте white-space: nowrap;
к вашим ссылкам, чтобы избежать этого.
Доступны четыре опции: сверху, справа, снизу и слева.
Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.
Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.
Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.
Sed posuere consectetur est at lobortis. Aenean eu leo quam. Pellentesque ornare sem lacinia quam venenatis vestibulum.
<button type="button" class="btn btn-lg btn-danger" data-toggle="popover" title="Заголовок popover" data-content="И вот некоторый удивительный контент. Он очень захватывающий. Правильно?">Нажмите для переключения 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 слева
</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 сверху
</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 снизу
</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 справа
</button>
Используйте триггер focus
, чтобы скрывать popovers при следующем клике, который пользователь совершит.
Для корректного поведения браузеров и платформ вам нужно использовать тег <a>
, а не тег <button>
, и вам также нужно включить атрибуты role="button"
и tabindex
.
<a tabindex="0" class="btn btn-lg btn-danger" role="button" data-toggle="popover" data-trigger="focus" title="Скрываемый popover" data-content="И вот некоторый удивительный контент. Он очень захватывающий. Правильно?">Скрываемый popover</a>
Включите popovers через JavaScript:
$('#example').popover(options)
Опции могут быть переданы через атрибуты данных или JavaScript. Для атрибутов данных, добавьте имя опции к data-
, как в data-animation=""
.
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
animation | boolean | true | Применяет CSS-переход для плавного появления popover |
container | string | false | false |
Добавляет popover в конкретный элемент. Пример: |
content | string | function | '' |
Значение по умолчанию для содержимого, если атрибут Если передана функция, она будет вызвана с ее |
delay | number | object | 0 |
Задержка показа и скрытия popover (мс) - не применяется к типу триггера "manual" Если передано число, задержка применяется как к скрытию, так и к показа Структура объекта: |
html | boolean | false | Вставляет HTML в popover. Если false, будет использован метод text jQuery для вставки содержимого в DOM. Используйте текст, если вы обеспокоены атаками XSS. |
placement | string | function | 'right' |
Как позиционировать popover - top | bottom | left | right | auto. Когда используется функция для определения позиции, она вызывается с DOM-узлом плагина popover в качестве первого аргумента и DOM-узлом триггерного элемента в качестве второго. Контекст |
selector | string | false | Если указан селектор, объекты popover будут делегированы к указанным целям. На практике это используется для включения динамического HTML-содержимого для добавления popovers. См. это и информативный пример. |
template | string | '<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>' |
Базовый HTML для использования при создании popover. Заголовок popover будет вставлен в Содержимое popover будет вставлено в
Наружный оберточный элемент должен иметь класс |
title | string | function | '' |
Значение по умолчанию для заголовка, если атрибут Если передана функция, она будет вызвана с ее |
trigger | string | 'click' | Как popover активируется - click | hover | focus | manual. Вы можете передать несколько триггеров; разделите их пробелом. manual не может комбинироваться с другими триггерами. |
viewport | string | object | function | { selector: 'body', padding: 0 } |
Ограничивает popover в пределах этого элемента. Пример: Если передана функция, она вызывается с DOM-узлом триггерного элемента в качестве единственного аргумента. Контекст |
Опции для отдельных popovers также могут быть указаны с помощью атрибутов данных, как объяснено выше.
$().popover(options)
Инициализирует popovers для коллекции элементов.
.popover('show')
Показывает popover элемента. Возвращает вызывающему перед тем, как popover фактически покажется (т.е. перед событием shown.bs.popover
). Это рассматривается как "ручное" активирование popover. Popovers, у которых и заголовок, и содержимое имеют нулевую длину, никогда не отображаются.
$('#element').popover('show')
.popover('hide')
Скрывает popover элемента. Возвращает вызывающему перед тем, как popover фактически скрывается (т.е. перед событием hidden.bs.popover
). Это рассматривается как "ручное" активирование popover.
$('#element').popover('hide')
.popover('toggle')
Переключает popover элемента. Возвращает вызывающему перед тем, как popover фактически покажется или скрывается (т.е. перед событием shown.bs.popover
или hidden.bs.popover
). Это рассматривается как "ручное" активирование popover.
$('#element').popover('toggle')
.popover('destroy')
Скрывает и уничтожает popover элемента. Popovers, созданные с помощью опции делегирования (selector
), не могут быть уничтожены индивидуально на элементах-триггерах-потомках.
$('#element').popover('destroy')
Тип события | Описание |
---|---|
show.bs.popover | Это событие срабатывает сразу же, когда вызывается метод show экземпляра. |
shown.bs.popover | Это событие срабатывает, когда popover сделан видимым для пользователя (будет ждать завершения CSS-переходов). |
hide.bs.popover | Это событие срабатывает сразу же, когда вызывается метод hide экземпляра. |
hidden.bs.popover | Это событие срабатывает, когда popover завершил свое скрытие для пользователя (будет ждать завершения CSS-переходов). |
inserted.bs.popover | Это событие срабатывает после события show.bs.popover , когда шаблон popover был добавлен в DOM. |
$('#myPopover').on('hidden.bs.popover', function () {
// сделайте что-нибудь…
})
Добавьте возможность закрытия для всех оповещений с помощью этого плагина.
Если используется кнопка .close
, она должна быть первым дочерним элементом .alert-dismissible
, и перед ней не должно быть текстового содержимого в разметке.
Измените это и то и попробуйте снова. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.
Просто добавьте 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
, оповещение плавно исчезнет перед удалением.
Плагин alert в Bootstrap предоставляет несколько событий для подключения к функционалу оповещений.
Тип события | Описание |
---|---|
close.bs.alert | Это событие срабатывает сразу при вызове метода close . |
closed.bs.alert | Это событие срабатывает, когда оповещение было закрыто (ожидает завершения CSS-переходов). |
$('#myAlert').on('closed.bs.alert', function () {
// do something…
})
Больше возможностей для кнопок. Управляйте состояниями кнопок или создавайте группы для более сложных компонентов, например, панелей инструментов.
Firefox сохраняет состояния элементов управления формой (отключённость и выбранность) между загрузками страниц. В качестве обходного пути используйте autocomplete="off"
. Подробнее см. ошибка Mozilla #654072.
Добавьте data-loading-text="Загрузка..."
, чтобы использовать состояние загрузки для кнопки.
Эта функция устарела с версии v3.3.5 и удалена в v4.
В этом примере мы используем data-loading-text
и $().button('loading')
, но это не единственное возможное состояние. Подробнее см. ниже в документации $().button(string)
.
<button type="button" id="myButton" data-loading-text="Loading..." class="btn btn-primary" autocomplete="off">
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" autocomplete="off">
Single toggle
</button>
Добавьте data-toggle="buttons"
к .btn-group
с чекбоксами или радио, чтобы включить переключение в соответствующем стиле.
.active
Для предварительно выбранных опций необходимо самостоятельно добавить класс .active
к label
соответствующего input.
Если состояние checked у чекбокса обновляется без события click
(например, через <input type="reset">
или программно), необходимо вручную переключить класс .active
у label
соответствующего input.
<div class="btn-group" data-toggle="buttons">
<label class="btn btn-primary active">
<input type="checkbox" autocomplete="off" checked> Checkbox 1 (pre-checked)
</label>
<label class="btn btn-primary">
<input type="checkbox" autocomplete="off"> Checkbox 2
</label>
<label class="btn btn-primary">
<input type="checkbox" autocomplete="off"> Checkbox 3
</label>
</div>
<div class="btn-group" data-toggle="buttons">
<label class="btn btn-primary active">
<input type="radio" name="options" id="option1" autocomplete="off" checked> Radio 1 (preselected)
</label>
<label class="btn btn-primary">
<input type="radio" name="options" id="option2" autocomplete="off"> Radio 2
</label>
<label class="btn btn-primary">
<input type="radio" name="options" id="option3" autocomplete="off"> Radio 3
</label>
</div>
$().button('toggle')
Переключает состояние кнопки. Визуально делает кнопку активной.
$().button('reset')
Сбрасывает состояние кнопки — возвращает исходный текст. Этот метод асинхронный и возвращает управление до завершения сброса.
$().button(string)
Меняет текст кнопки на любой определённый в data-* атрибутах.
<button type="button" id="myStateButton" data-complete-text="finished!" class="btn btn-primary" autocomplete="off">
...
</button>
<script>
$('#myStateButton').on('click', function () {
$(this).button('complete') // button text will be "finished!"
})
</script>
Гибкий плагин, использующий несколько классов для простого поведения переключения.
Для работы collapse требуется плагин transitions в вашей версии 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>
Расширьте стандартное поведение collapse, чтобы создать аккордеон с помощью компонента panel.
<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"
. Смотрите пример выше.
Включите вручную так:
$('.collapse').collapse()
Опции можно передавать через data-атрибуты или JavaScript. Для data-атрибутов добавьте имя опции к data-
, например data-parent=""
.
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
parent | selector | false | Если указан селектор, все сворачиваемые элементы внутри указанного родителя будут закрываться при открытии этого элемента. (аналогично поведению аккордеона — зависит от класса panel ) |
toggle | boolean | 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…
})
Компонент слайд-шоу для прокрутки элементов, как в карусели. Вложенные карусели не поддерживаются.
<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>
Компонент карусели, как правило, не соответствует стандартам доступности. Если вам нужна поддержка доступности, рассмотрите другие варианты представления контента.
Bootstrap использует только CSS3 для анимаций, но Internet Explorer 8 & 9 не поддерживают необходимые CSS-свойства. Поэтому анимации переходов отсутствуют в этих браузерах. Мы сознательно не включили jQuery-аналоги для переходов.
Класс .active
должен быть добавлен к одному из слайдов. Иначе карусель не будет видна.
Классы .glyphicon .glyphicon-chevron-left
и .glyphicon .glyphicon-chevron-right
не обязательны для управления. Bootstrap предоставляет .icon-prev
и .icon-next
как альтернативу на Unicode.
Добавляйте подписи к слайдам с помощью .carousel-caption
внутри любого .item
. Можно размещать любой HTML — он будет автоматически выровнен и стилизован.
<div class="item">
<img src="..." alt="...">
<div class="carousel-caption">
<h3>...</h3>
<p>...</p>
</div>
</div>
Для корректной работы управления требуется использовать id
на внешнем контейнере (.carousel
). При добавлении нескольких каруселей или изменении id
не забудьте обновить соответствующие элементы управления.
Используйте data-атрибуты для управления позицией карусели. data-slide
принимает значения prev
или next
, чтобы изменить позицию относительно текущей. Также можно использовать data-slide-to
для передачи индекса слайда data-slide-to="2"
, который переключает на определённый слайд (нумерация с нуля).
Атрибут data-ride="carousel"
используется для автоматического запуска анимации при загрузке страницы. Его нельзя использовать вместе с явной инициализацией карусели через JavaScript.
Вызовите карусель вручную так:
$('.carousel').carousel()
Опции можно передавать через data-атрибуты или JavaScript. Для data-атрибутов добавьте имя опции к data-
, например data-interval=""
.
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
interval | number | 5000 | Время задержки между автоматическим переключением слайдов (мс). Если false, автоматическое переключение отключено. |
pause | string | null | "hover" | Если "hover" , при наведении мыши переключение приостанавливается, при уходе — возобновляется. Если null , наведение не влияет. |
wrap | boolean | true | Должна ли карусель прокручиваться по кругу или останавливаться на концах. |
keyboard | boolean | true | Должна ли карусель реагировать на события клавиатуры. |
.carousel(options)
Инициализирует карусель с необязательным объектом опций object
и запускает прокрутку слайдов.
$('.carousel').carousel({
interval: 2000
})
.carousel('cycle')
Прокручивает слайды карусели слева направо.
.carousel('pause')
Останавливает автоматическую прокрутку слайдов.
.carousel(number)
Переходит к определённому слайду (нумерация с нуля, как в массиве).
.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 переключает position: fixed;
, имитируя эффект position: sticky;
. Правая боковая навигация — это живая демонстрация работы affix.
Используйте плагин affix через data-атрибуты или вручную с помощью собственного JavaScript. В обоих случаях необходимо задать CSS для позиционирования и ширины фиксируемого содержимого.
Примечание: не используйте affix для элементов внутри относительно позиционированных контейнеров, например, сдвинутых колонок, из-за ошибки рендеринга в Safari.
Плагин affix переключает три класса, каждый из которых соответствует определённому состоянию: .affix
, .affix-top
и .affix-bottom
. Стили для этих классов (кроме position: fixed;
для .affix
) вы должны задать самостоятельно для управления позициями.
Вот как работает affix:
.affix-top
, чтобы обозначить верхнее положение элемента. CSS-позиционирование не требуется..affix
заменяет .affix-top
и устанавливает position: fixed;
(это задаётся стилями Bootstrap)..affix
на .affix-bottom
. Так как отступы необязательны, для их работы нужно прописать соответствующий CSS. В этом случае добавьте position: absolute;
при необходимости. Плагин использует data-атрибут или опцию JavaScript для определения позиции элемента.Следуйте этим шагам для настройки CSS при любом из способов использования ниже.
Чтобы легко добавить поведение affix к любому элементу, просто добавьте data-spy="affix"
к нужному элементу. Используйте отступы для определения момента фиксации.
<div data-spy="affix" data-offset-top="60" data-offset-bottom="200">
...
</div>
Вызовите плагин affix через JavaScript:
$('#myAffix').affix({
offset: {
top: 100,
bottom: function () {
return (this.bottom = $('.footer').outerHeight(true))
}
}
})
Опции можно передавать через data-атрибуты или JavaScript. Для data-атрибутов добавьте имя опции к data-
, например data-offset-top="200"
.
Имя | Тип | По умолчанию | Описание |
---|---|---|---|
offset | number | function | object | 10 | Пиксели смещения от экрана при вычислении позиции прокрутки. Если указано одно число, смещение применяется и сверху, и снизу. Для разных отступов используйте объект offset: { top: 10 } или offset: { top: 10, bottom: 5 } . Для динамического расчёта используйте функцию. |
target | selector | node | jQuery element | объект window |
Указывает целевой элемент для фиксации. |
.affix(options)
Активирует ваш элемент как фиксируемый. Принимает необязательный объект опций object
.
$('#myAffix').affix({
offset: 15
})
.affix('checkPosition')
Пересчитывает состояние affix на основе размеров, позиции и прокрутки соответствующих элементов. Классы .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 | Это событие срабатывает после того, как элемент был зафиксирован снизу. |