Spec-Zone.ru › Bootstrap 3

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()
})

Примеры

Статический пример

Отображаемое модальное окно с заголовком, телом и набором действий в нижней части.

Открыть пример на getbootstrap.com
<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">&times;</span></button>
        <h4 class="modal-title">Modal title</h4>
      </div>
      <div class="modal-body">
        <p>One fine body&hellip;</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, нажав на кнопку ниже. Оно будет сдвигаться вниз и появляться с верха страницы.

Открыть пример на getbootstrap.com
<!-- 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">&times;</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.

Открыть пример на getbootstrap.com
<!-- 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, а затем используйте обычные классы сетки.

Открыть пример на getbootstrap.com
<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">&times;</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,

Открыть пример на getbootstrap.com
<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">&times;</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 удаленного ресурса, содержимое будет загружено один раз с помощью метода load jQuery и вставлено в div .modal-content. Если вы используете API данных, вы можете вместо этого использовать атрибут href для указания удаленного источника. Пример этого показан ниже:

<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

Использование

Требуется навигация Bootstrap

Для правильного выделения активных ссылок плагин ScrollSpy в настоящее время требует использования компонента навигации Bootstrap Bootstrap nav component.

Требуются разрешаемые целевые 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')

События

При отображении новой вкладки события срабатывают в следующей последовательности:

  1. hide.bs.tab (на текущей активной вкладке)
  2. show.bs.tab (на вкладке, которая будет отображаться)
  3. hidden.bs.tab (на предыдущей активной вкладке, той же, что и для события hide.bs.tab )
  4. 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

Четыре направления

Открыть пример на 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' (документирован ниже), чтобы избежать нежелательных побочных эффектов (таких как увеличение ширины элемента и/или потеря его скругленных углов при активации всплывающей подсказки).

Не пытайтесь показывать всплывающие подсказки на скрытых элементах

Вызов $(...).tooltip('show') , когда целевой элемент display: none; , приведёт к некорректному позиционированию всплывающей подсказки.

Доступные всплывающие подсказки для пользователей клавиатуры и вспомогательных технологий

Для пользователей, которые перемещаются с помощью клавиатуры, и особенно для пользователей вспомогательных технологий, вы должны добавлять всплывающие подсказки только к элементам, на которые можно навести курсор клавиатурой, таким как ссылки, элементы управления формами или любые произвольные элементы с атрибутом tabindex="0".

Всплывающие подсказки на отключённых элементах требуют обертывающих элементов

Чтобы добавить всплывающую подсказку к отключённому disabled или .disabled элементу, поместите элемент внутри <div> и примените всплывающую подсказку к этому <div> элементу.

Параметры

Параметры можно передать через атрибуты данных или JavaScript. Для атрибутов данных добавьте имя параметра к data-, как в data-animation="".

Обратите внимание, что по соображениям безопасности параметры sanitize, sanitizeFn и whiteList не могут быть заданы с помощью атрибутов данных.

Имя Тип Значение по умолчанию Описание
animation boolean true Применить CSS-переход fade к всплывающей подсказке
container string | false false

Присоединяет всплывающую подсказку к определённому элементу. Пример: container: 'body'. Этот параметр особенно полезен, так как позволяет разместить всплывающую подсказку в потоке документа рядом с триггерным элементом — это предотвратит отплывание подсказки от триггерного элемента при изменении размера окна.

delay number | object 0

Задержка отображения и скрытия всплывающей подсказки (мс) — не применяется к типу триггера «ручное»

Если указано число, задержка применяется к скрытию/отображению

Структура объекта: delay: { "show": 500, "hide": 100 }

html boolean false Вставить HTML-код во всплывающую подсказку. Если false, будет использоваться метод jQuery text для вставки содержимого в DOM. Используйте текст, если вы обеспокоены XSS-атаками.
placement string | function 'top'

Способы размещения всплывающей подсказки — top | bottom | left | right | auto.
Когда задано «auto», подсказка будет динамически переориентирована. Например, если placement — «auto left», подсказка будет отображаться слева, если возможно, иначе — справа.

Если для определения размещения используется функция, она вызывается с узлом DOM всплывающей подсказки в качестве первого аргумента и узлом DOM триггерного элемента во втором. Контекст this устанавливается для экземпляра всплывающей подсказки.

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 всплывающей подсказки будет внедрён в .tooltip-inner.

.tooltip-arrow станет стрелкой всплывающей подсказки.

Внешний оберточный элемент должен иметь класс .tooltip.

title string | function ''

Значение заголовка по умолчанию, если атрибут title не задан.

Если задана функция, она будет вызвана с ссылкой на this элемент, к которому прикреплена всплывающая подсказка.

trigger string 'hover focus' Как триггерится всплывающая подсказка — click | hover | focus | manual. Можно передавать несколько триггеров; разделяйте их пробелом. manual не может быть объединён с другими триггерами.
viewport string | object | function { selector: 'body', padding: 0 }

Удерживает всплывающую подсказку в пределах этого элемента. Пример: viewport: '#viewport' или { "selector": "#viewport", "padding": 0 }

Если задана функция, она вызывается с узлом DOM триггерного элемента в качестве единственного аргумента. Контекст this устанавливается для экземпляра всплывающей подсказки.

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' (документировано ниже), чтобы избежать нежелательных побочных эффектов (например, увеличения ширины элемента и/или потери его закругленных углов при запуске всплывающего окна).

Не пытайтесь отображать всплывающие окна на скрытых элементах

Вызов $(...).popover('show') при скрытом целевом элементе display: none; приведёт к некорректному позиционированию всплывающего окна.

Всплывающие окна на отключённых элементах требуют обертывающих элементов

Для добавления всплывающего окна к элементу disabled или .disabled, поместите элемент внутрь <div> и примените всплывающее окно к этому <div> вместо него.

Многострочные ссылки

Иногда вам нужно добавить всплывающее окно к гиперссылке, которая занимает несколько строк. По умолчанию плагин всплывающего окна центрирует его по горизонтали и вертикали. Добавьте white-space: nowrap; к вашим якорям, чтобы этого избежать.

Примеры

Статическое всплывающее окно

Доступны четыре варианта: верхнее, правое, нижнее и левое выравнивание.

Открыть пример на getbootstrap.com

Живой пример

Открыть пример на 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>
Четыре направления
Открыть пример на getbootstrap.com
<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.

Открыть пример на getbootstrap.com
<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

Добавляет всплывающую подсказку к определенному элементу. Пример: container: 'body'. Этот параметр особенно полезен, так как позволяет разместить всплывающую подсказку в потоке документа рядом с триггерным элементом — это предотвратит отплывание подсказки от триггерного элемента при изменении размера окна.

content string | function ''

Значение содержимого по умолчанию, если атрибут data-content отсутствует.

Если указана функция, она будет вызвана со ссылкой this на элемент, к которому прикреплена всплывающая подсказка.

delay number | object 0

Задержка отображения и скрытия всплывающей подсказки (мс) — не применяется к типу триггера «manual»

Если указано число, задержка применяется как к скрытию, так и к отображению.

Структура объекта: delay: { "show": 500, "hide": 100 }

html boolean false Вставить HTML во всплывающую подсказку. Если false, будет использоваться метод jQuery text для вставки содержимого в DOM. Используйте текст, если беспокоит проблема XSS-атак.
placement string | function 'right'

Способ размещения всплывающей подсказки — top | bottom | left | right | auto.
Если указано «auto», всплывающая подсказка будет динамически переориентирована. Например, если placement «auto left», подсказка будет отображаться слева, если возможно, иначе справа.

Если для определения расположения используется функция, она вызывается с узлом DOM всплывающей подсказки в качестве первого аргумента и узлом DOM триггерного элемента — в качестве второго. Контекст this устанавливается для экземпляра всплывающей подсказки.

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 всплывающей подсказки будет внедрен в .popover-title.

content всплывающей подсказки будет внедрен в .popover-content.

.arrow станет стрелкой всплывающей подсказки.

Внешний элемент-обёртки должен иметь класс .popover.

title string | function ''

Значение заголовка по умолчанию, если атрибут title отсутствует.

Если указана функция, она будет вызвана со ссылкой this на элемент, к которому прикреплена всплывающая подсказка.

trigger string 'click' Как вызывается всплывающая подсказка — click | hover | focus | manual. Можно передавать несколько триггеров; разделяйте их пробелом. manual нельзя комбинировать с другими триггерами.
viewport string | object | function { selector: 'body', padding: 0 }

Удерживает всплывающую подсказку в пределах этого элемента. Пример: viewport: '#viewport' или { "selector": "#viewport", "padding": 0 }

Если указана функция, она вызывается с узлом DOM триггерного элемента в качестве единственного аргумента. Контекст this устанавливается для экземпляра всплывающей подсказки.

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">&times;</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).

Открыть пример на getbootstrap.com
<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 самостоятельно.

Открыть пример на getbootstrap.com
<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 ввода самостоятельно.

Открыть пример на getbootstrap.com
<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>
Открыть пример на getbootstrap.com
<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".

Открыть пример на getbootstrap.com
<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>

Пример аккордеона

Расширьте стандартное поведение сворачивания, чтобы создать аккордеон с компонентом панели.

Открыть пример на getbootstrap.com
<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

Компонент слайдера для циклического перехода между элементами, как карусель. Вложенные карусели не поддерживаются.

Примеры

Открыть пример на getbootstrap.com
<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, и он будет автоматически выровнен и отформатирован.

Открыть пример на getbootstrap.com
<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:

  1. Для начала плагин добавляет .affix-top для указания, что элемент находится в верхней позиции. В этот момент CSS позиционирование не требуется.
  2. Прокрутка мимо элемента, который вы хотите зафиксировать, должна вызывать фактическое фиксирование. Здесь .affix заменяет .affix-top и устанавливает position: fixed; (предоставляемый CSS Bootstrap).
  3. Если задан отступ снизу, прокрутка мимо него должна заменить .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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API