Огляд

Індивідуально чи збіркою

Плагіни можуть підключатись окремо (використовуючи окремі файли Bootstrap *.js), або всі за один раз (використовуючи bootstrap.js чи мінімізований bootstrap.min.js).

Використання компільованих файлів JavaScript

Повний набір плагінів міститься як у bootstrap.js так і у bootstrap.min.js. Підключайте тільки один з них.

Залежність плагінів

Деякі плагіни та CSS компоненти мають залежність від інших плагінів. Якщо ви включаєте плагіни окремо, прогляньте їх документацію, щоб переконатись, що ви врахували їх залежність. Також зауважте, що всі плагіни залежать від jQuery (це означає, що jQuery повинен підключатись перед файлами плагінів). Прогляньте наш файл bower.json щоб дізнатись яка версія jQuery підтримується.

Атрибути даних

Ви можете використовувати всі Bootstrap плагіни виключно на основі розмітки API, без необхідності писати код на JavaScript. Розмітка є пріоритетною формою API, яку пропонує Bootstrap та повинна розглядатись в першу чергу при використанні плагінів.

Тим не менш, у деяких ситуаціях може бути бажаним відключення цієї функціональності. Виходячи з цього, ми також надаємо можливість відключити API-атрибути через відв'язку всіх подій у просторі імен (namespaced) документа, за допомогою data-api. Це виглядає приблизно так:

$(document).off('.data-api')

Також ви можете націлитись на певний плагін, просто включивши ім'я плагіну поруч з простором імен data-api, як у прикладі:

$(document).off('.alert.data-api')

Тільки один плагін на елемент через атрибути даних

Не використовуйте атрибути даних від кількох плагінів на одному й тому ж самому елементі. Наприклад, кнопка не може мати і підказки, і перемикачі модалі. Замість цього використовуйте обгортання елементів.

Програмний API

Ми також вважаємо, що ви повинні мати можливість використовувати всі плагіни Bootstrap чисто на JavaScript API. Всі публічні API є автономними, але їхні методи можуть послідовно зв'язуватись та повертати готовий набір для застосування.

$('.btn.danger').button('toggle').addClass('fat')

Всі методи повинні приймати в якості необов'язкового параметра або об'єкт, або рядок, котрий націлений на конкретний метод, або нічого (і таким чином просто ініціалізувати плагін з початковою поведінкою):

$('#myModal').modal()                      // ініціалізується із початковим значенням
$('#myModal').modal({ keyboard: false })   // ініціалізується без клавіатури
$('#myModal').modal('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() // зупиняє модаль перед її показом
})

Немає спеціального повідомлення, що JavaScript заблоковано

Плагіни Bootstrap не дають знати, що JavaScript заблоковано. Якщо ви дбаєте про те, що побачить користувач в цьому випадку, використовуйте <noscript> щоб пояснити ситуацію (та підказати як підключити JavaScript), та/або додайте свій власний зворотній зв'язок.

Бібліотеки третіх сторін

Bootstrap неофіційно підтримує бібліотеки JavaScript третіх сторін такі як Prototype або jQuery UI. Незважаючи на те, що ми надаємо .noConflict та події з іменованими просторами, все одно можуть бути проблеми сумісності, котрі вам доведеться виправляти власноруч.

Переходи transition.js

Стосовно переходів

Для простих ефектів переходу, підключіть transition.js поруч з іншими файлами JS. Але якщо ви використовуєте загальну збірку bootstrap.js (чи її мінімізований варіант), цей файл немає необхідності підключати – його код вже включено.

Що всередині

Transition.js є базовим помічником для подій transitionEnd, та для емулятора переходів CSS. Він використовується іншими плагінами для перевірки підтримки переходів CSS та для відслідковування завислих переходів.

Модалі modal.js

Модаль є раціоналізованим, але гнучким діалоговим вікном, з мінімальною, лише необхідною функціональністю та розумними початковими налаштуваннями.

Перекриття модалі не підтримується

Переконайтесь, що ви не відкриваєте модалі в той час, коли інша модаль все ще видима. Відображення більше, ніж однієї модалі одночасно, вимагає налаштування коду.

Місце розміщення розмітки модалі

Завжди намагайтесь розміщувати код HTML для модалі якомога вище у вашому документі, щоб уникати впливу інших компонентів на відображення та/або функціональність модалі.

Застереження стосовно мобільних пристроїв

Є певні застереження щодо використання модальних вікон на мобільних пристроях. Прогляньте наші документи стосовно підтримки браузерами, для уточнень.

Зважаючи на те як HTML5 визначає семантику, HTML-атрибут autofocus не матиме ефекту в модалях Bootstrap.

Приклади

Статичні приклади

Відобреження модального вікна із заголовком, основним вмістом, та переліком дій у нижньому колонтитулі.

<div class="modal fade">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Закрити</span></button>
        <h4 class="modal-title">Назва модалі</h4>
      </div>
      <div class="modal-body">
        <p>Тут тіло модалі&hellip;</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" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Закрити</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" до .modal, атрибут aria-labelledby="myModalLabel" для посилання на назву модалі, та aria-hidden="true" для сповіщення assistive technologies (допоміжних технологій), щоб пропускали DOM-елементи модальних вікон.

Крім цього, ви можете надати опис діалогової модалі за допомогою aria-describedby в .modal.

Вбудоване відео з YouTube

Вбудовування відео з YouTube в модалях потребує додаткового коду JavaScript, який не надається Bootstrap, наприклад для автоматичної зупинки програвання та інше. Прогляньте це корисне повідомлення на Stack Overflow для детальнішої інформації.

Опціональні розміри

Модалі мають на вибір два розміри, що доступні через модифікатор класів для розміщення в .modal-dialog.

<!-- Широка модаль -->
<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" aria-hidden="true">
  <div class="modal-dialog modal-lg">
    <div class="modal-content">
      ...
    </div>
  </div>
</div>

<!-- Вузька модаль -->
<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" aria-hidden="true">
  <div class="modal-dialog modal-sm">
    <div class="modal-content">
      ...
    </div>
  </div>
</div>

Видалення анімації

Щоб модаль просто з'являлась, а не проявлялась при показі, видаліть клас .fade з її розмітки.

<div class="modal" tabindex="-1" role="dialog" aria-labelledby="" aria-hidden="true">
  ...
</div>

Маєте багато кнопок, які викликають одну модаль, але трохи з різним вмістом? Використовуйте 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="@twbootstrap">Відкриття модалі для @twbootstrap</button>
...більше кнопок...

<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Закрити</span></button>
        <h4 class="modal-title" id="exampleModalLabel">Нове повідомлення</h4>
      </div>
      <div class="modal-body">
        <form role="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) // Кнопка, що викликає модаль
  var recipient = button.data('whatever') // Витягування інфи з атрибутів data-*
  // Якщо необхідно, ви можете створювати тут AJAX-запит (а потім здійснювати оновлення в callback).
  // Оновлення вмісту модалі. Ми будемо використовувати тут jQuery, але ви можете використовувати бібліотеку data binding або інші методи.
  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>

Через JavaScript

На JavaScript викликайте модаль через id myModal одним рядком:

$('#myModal').modal(параметри)

Параметри

Параметри можуть передаватись через атрибути даних чи JavaScript. У випадку передачі через атрибути даних, додайте приставку з назвою параметра до data-, як у прикладі: data-backdrop="".

Назва тип початково опис
backdrop boolean або рядкове значення 'static' true Включає елемент modal-backdrop. Можна також вказати static для backdrop, котрий не закриває модаль при кліку.
keyboard boolean true Зкриває модаль при натисканні на клавіатурі escape.
show boolean true Показує модаль при ініціалізації.
remote path false

Цей параметр є застарівшим починаючи з v3.3.0 та буде видалятись у v4. Замість нього ми рекомендуємо використовувати шаблони на стороні клієнта або фреймворки з прив'язкою до даних, або ж викликайте jQuery.load.

Якщо надано віддалений URL, вміст буде завантажуватись через метод load jQuery та вставлятись в div з класом .modal-content. Якщо ви використовуєте data-api, ви можете ще використовувати атрибут href для визначення віддаленого ресурсу. Приклад такого варіанта:

<a data-toggle="modal" href="remote.html" data-target="#modal">Click me</a>

Методи

.modal(параметри)

Активізує наданий вміст як модальний. Приймає необов'язковий параметр з типом даних 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')

Події

Клас для модалей в Bootstrap надає декілька подій, щоб забезпечити функціональність модалі.

Тип події опис
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) {
  // Тут якийсь ваш код...
})

Спадне меню dropdown.js

Даний плагін надає функціональність для спадного меню, яке можна використовувати будь-де, у тому числі в навігаційних панелях, закладках, та навігаційних кнопках.

В межах навігаційної панелі

В межах навігаційних кнопок

Через атрибути даних або JavaScript, плагін спадного меню переключає прихований вміст (пункти спадного меню) за допомогою класу .open на батьківському елементі списку.

На мобільних пристроях, відкриття спадного меню додає .dropdown-backdrop для відображення області для закриття меню при кліку за межами меню, для правильної роботи в iOS. Це означає, що для того, щоб переключитись від відкритого меню до іншого спадного меню, необхідно відповідний додатковий клік.

Примітка: на рівні застосунку (application), для закриття спадного меню використовується атрибут data-toggle="dropdown", так що його доречно використовувати завжди.

Через атрибути даних

Додайте data-toggle="dropdown" до лінків або кнопок для можливості переключення спадного меню.

<div class="dropdown">
  <button id="dLabel" type="button" data-toggle="dropdown" aria-haspopup="true" role="button" aria-expanded="false">
    Кнопка спадного меню
    <span class="caret"></span>
  </button>
  <ul class="dropdown-menu" role="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" aria-haspopup="true" role="button" aria-expanded="false">
    Кнопка спадного меню
    <span class="caret"></span>
  </a>

  <ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
    ...
  </ul>
</div>

Через JavaScript

Викликайте спадне меню через JavaScript:

$('.dropdown-toggle').dropdown()

Атрибут data-toggle="dropdown" все ще необхідний

Незалежно чи ви викликаєте спадне меню через JavaScript, чи замість цього використовуєте data-api, атрибут data-toggle="dropdown" є завжди необхідним елементом в кнопці спадного меню.

Відсутні

$().dropdown('toggle')

Переключайте спадне меню в навігаційних панелях або навігаційних вкладках.

Всі події спадного меню спрацьовують в межах батьківського елемента .dropdown-menu.

Тип події опис
show.bs.dropdown Ця подія спрацьовує відразу, коли викликається метод show. Елемент переключення anchor доступний як властивість relatedTarget події.
shown.bs.dropdown Ця подія спрацьовує, коли спадне меню буде відображено для користувача (при цьому очікуватиметься завершення переходів CSS). Елемент переключення anchor доступний як властивість relatedTarget події.
hide.bs.dropdown Ця подія спрацьовує відразу, коли викликається метод hide. Елемент переключення anchor доступний як властивість relatedTarget події.
hidden.bs.dropdown Ця подія спрацьовує, коли спадне меню завершить приховування пунктів меню від користувача (при цьому очікуватиметься завершення переходів CSS). Елемент переключення anchor доступний як властивість relatedTarget події.
$('#myDropdown').on('show.bs.dropdown', function () {
  // щось тут напишіть…
})

Відслідковування прокрутки scrollspy.js

Приклад з навпанеллю

Плагін ScrollSpy (Відслідковувач Прокрутки) призначений для автоматичного оновлення навігаційного знаходження, котре базується на позиції прокрутки сторінки. У нижньому прикладі прокрутіть область під навігаційною панеллю та проспостерігайте за переходом активного класу між її пунктами. Підпункти в спадному меню також підсвічуватимуться при прокручуванні.

@fat

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.

@mdo

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.

Використання

Потребує навігаційних компонентів Bootstrap

На даний момент Відслідковувач прокрутки (Scrollspy) потребує використання навігаційних компонентів Bootstrap для правильного підсвічування активних лінків.

Необхідна відповідність між ID та його лінком

Навігаційна панель повинна мати відповідність між ID та його лінком. Наприклад, <a href="#home">home</a> повинен мати відповідність в DOM із <div id="home"></div>.

Невидимий цільовий елемент ігнорується

Цільовий елемент, який сприймається jQuery як невидимий, буде ігноруватись, а його відповідні навігаційні пункти не підсвічуватимуться.

Потребує відносного позиціонування

Незалежно від впровадженого методу, відслідковувач потребує використання position: relative; в елементі, де ви збираєтесь робити відслідковування прокрутки. В більшості випадків таким елементом є <body>.

Через атрибути даних

Щоб легко додати поведінку Відслідковувача Прокрутки (ScrollSpy) до вашої верхньої навігаційної панелі, додайте data-spy="scroll" до елемента, за яким ви хочете слідкувати. Потім додайте атрибут data-target з ID або класом батьківського елемента, будь-якого компонента Bootstrap з класом .nav.

body {
  position: relative;
}
<body data-spy="scroll" data-target=".navbar-example">
  ...
  <div class="navbar-example">
    <ul class="nav nav-tabs" role="tablist">
      ...
    </ul>
  </div>
  ...
</body>

Через JavaScript

Після додавання position: relative; в CSS, викликайте відслідковувача через JavaScript:

$('body').scrollspy({ target: '.navbar-example' })

Методи

.scrollspy('refresh')

При використанні Відслідковувача Прокрутки в поєднанні з додаванням або видаленням елементів з DOM, потрібно викликати метод для оновлення, як в прикладі:

$('[data-spy="scroll"]').each(function () {
  var $spy = $(this).scrollspy('refresh')
})

Параметри

Параметри можуть передаватись через атрибути даних або JavaScript. До атрибутів даних додавайте приставку з назвою параметра до data-, як у прикладі: data-offset="".

Назва тип початково опис
offset number 10 Пікселі для зміщення від верху, при обчисленні позиції прокрутки.

Події

Тип події опис
activate.bs.scrollspy Ця подія спрацьовує кожен раз коли новий елемент активізується при прокрутці.
$('#myScrollspy').on('activate.bs.scrollspy', function () {
  // тут щось допишіть…
})

Перехід по вкладкам tab.js

Приклад вкладки

Додайте динамічну функціональність для переходу по вкладкам однієї сторінки, у тому числі за допомогою спадного меню.

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.

Розширення навігаційних вкладок

Цей плагін розширює компонент навігаційних вкладок, додаючи область переходів.

Використання

Включення області переходів вкладок через JavaScript (кожна вкладка потребує індивідуальної активації):

$('#myTab a').click(function (e) {
  e.preventDefault()
  $(this).tab('show')
})

Ви можете індивідуально активувати вкладки в декілька способів:

$('#myTab a[href="#profile"]').tab('show') // Виберіть вкладку по назві
$('#myTab a:first').tab('show') // Виберіть першу вкладку
$('#myTab a:last').tab('show') // Виберіть останню вкладку
$('#myTab li:eq(2) a').tab('show') // Виберіть третю вкладку (відлік від 0)

Розмітка

Ви можете активувати вкладку чи навігаційну кнопку і без написання коду JavaScript, просто вказавши в елементі data-toggle="tab" або data-toggle="pill". Додавання класів nav та nav-tabs до вкладки ul буде застосовувати стилізацію вкладок Bootstrap, в той час як додавання класів nav та nav-pills буде застосовувати стилізацію навігаційних кнопок.

<div role="tabpanel">

  <!-- Навігаційні елементи вкладок -->
  <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>

<!-- Вкладки панелі -->
  <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.

<ul class="nav nav-tabs" role="tablist" id="myTab">
  <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>

<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>

<script>
  $(function () {
    $('#myTab a:last').tab('show')
  })
</script>

Події

Коли показується нова вкладка, події спрацьовують в наступному порядку:

  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 // щойно активована вкладка
  e.relatedTarget // попередня активна вкладка
})

Підказки tooltip.js

Натхненні чудовим плагіном jQuery.tipsy, написаним Jason Frame; Підказки є оновленою версією, котра не покладається на зображення, використовує CSS3 для анімації, та атрибути даних для зберігання локальних заголовків.

Підказки з нульовою довжиною заголовка ніколи не показуються.

Приклади

Наведіть курсор миші на лінки тексту внизу, щоб побачити підказки:

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.

Статичні підказки

Доступні чотири параметри для їх вирівнювання: top, right, bottom, та left (відповідно - вгорі, праворуч, внизу, та ліворуч).

Чотири напрямки

<button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="left" title="Підказка ліворуч">Підказка ліворуч</button>

<button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="top" title="Підказка вгорі">Підказка вгорі</button>

<button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="bottom" title="Підказка внизу">Підказка внизу</button>

<button type="button" class="btn btn-default" data-toggle="tooltip" data-placement="right" title="Підказка праворуч">Підказка праворуч</button>

Вибіркова функціональність

Для покращення продуктивності, доступ до даних Підказок та Інформерів є вибірковим, тобто ви повинні ініціалізувати їх власноруч.

One way to initialize all tooltips on a page would be to select them by their data-toggle attribute:

$(function () {
  $('[data-toggle="tooltip"]').tooltip()
})

Підказки в групах кнопок та групах форм введення потребують спеціальних налаштувань

При використанні підказок в межах елементів .btn-group або в .input-group, ви повинні визначити параметр container: 'body' (документація нижче), щоб уникнути небажаних побічних ефектів (наприклад, коли елемент стає ширшим та/або коли втрачається закругленння кутів, при виклику підказок чи інформерів).

Не намагайтесь показувати підказки на прихованих елементах

Виклик $(...).tooltip('show') тоді, коли цільовий елемент приховано, тобто коли display: none;, буде спричиняти неправильне позиціонування.

Підказки на заблокованих елементах потребують обгортання

Щоб додати підказку до заблокованого елемента, тобто до елемента, що має властивість disabled чи клас .disabled, вставте елемент в межі <div> та застосуйте підказку вже до цього <div>.

Використання

Плагін підказок генерує вміст та розмітку по запиту, і початково розміщує підказки після елементів, що їх викликали.

Виклик підказок через JavaScript:

$('#example').tooltip(параметри)

Розмітка

Необхідною розміткою для підказок є тільки атрибут data та title в межах HTML-елемента, для якого потрібна підказка. Згенерована розмітка підказок, досить проста, хоча і вимагає позиціонування (початково, плагін встановлює top).

Багаторядкові лінки

Інколи вам хочеться додавати підказки до гіперпосилань, які переносяться на декілька рядків. Початково, плагін буде центрувати їх горизонтально та вертикально. Щоб цього уникнути, додайте атрибут white-space: nowrap; до ваших лінків.

<!-- Якщо написати такий код HTML -->
<a href="#" data-toggle="tooltip" title="Певний текст підказки!">Наведіть курсор сюди</a>

<!-- Таку розмітку згенерує плагін -->
<div class="tooltip top" role="tooltip">
  <div class="tooltip-arrow"></div>
  <div class="tooltip-inner">
    Певний текст підказки!
  </div>
</div>

Параметри

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

Назва тип початково опис
animation boolean true застосовує CSS для плавного переходу до підказки
container string | false false

Додає підказку до зазначеного елемента. Наприклад: container: 'body'. Цей параметр особливо корисний, оскільки дозволяє позиціонувати підказку в потоці документа біля елемента, на якому її бул викликано. Таким чином унеможливлюється ситуація, коли підказка відходить від елемента, на якому її було викликано, під час зміни розміру оглядового вікна.

delay number | object 0

затримка показу та приховування підказок (ms) – не застосовується для ручного типу виклику

Якщо вказується число, затримка застосовується для приховування чи для відображення

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

html boolean false Вставляє HTML в підказку. При значенні false, буде використовуватись метод jQuery text для вставки вмісту в DOM. Використовуйте текст, якщо побоютесь XSS атаки.
placement string | function 'top'

Як позиціонувати підказку - top | bottom | left | right | auto.
При вказуванні "auto", підказка буде динамічно переорієнтовуватись. Нариклад, якщо позиціонування зазначено як "auto left", підказка буде показуватись ліворуч, якщо це можливо, і праворуч – у противному разі.

Коли через цей параметр передається саме функція, то в якості першого аргумента їй передається DOM-node підказки (тобто фрагмент HTML), а в якості другого - елемент, на якому було викликано цю підказку. Встановлюється контекст this для об'єкта підказки.

selector string false Якщо селектор надано, об'єкт підказки буде делеговано для зазначеного цільового елемента. На практиці, це використовується щоб дозволити динамічно додавати HTML-вміст для підказок. Прогляньте це та цей інформативний приклад.
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. Ви можете передавати декілька чинників; розділіть їх пробілом.
viewport string | object { selector: 'body', padding: 0 }

Утримує підказку в межах цього елемента. Наприклад: viewport: '#viewport' або { "selector": "#viewport", "padding": 0 }

Атрибути даних для індивідуальних підказок

Параметри для індивідуальних підказок ще можете зазначати через атрибути даних, як пояснено вище.

Методи

$().tooltip(параметри)

Закріплює обробник підказки за набором елементів.

.tooltip('show')

Показує підказку елемента. Підказки з нульовою довжиною назви, ніколи не показуються.

$('#element').tooltip('show')

.tooltip('hide')

Приховує підказку елемента.

$('#element').tooltip('hide')

.tooltip('toggle')

Переключає підказку елемента.

$('#element').tooltip('toggle')

.tooltip('destroy')

Приховує та видаляє підказку елемента.

$('#element').tooltip('destroy')

Події

Тип події опис
show.bs.tooltip Ця подія спрацьовує відразу, коли викликається метод show.
shown.bs.tooltip Ця подіє спрацьовує, коли підказка буде відображена для користувача (при цьому очікуватиметься завершення переходів CSS).
hide.bs.tooltip Ця подія спрацьовує відразу після виклику метода hide.
hidden.bs.tooltip Ця подія спрацьовує, коли підказка завершить приховування від користувача (при цьому очікуватиметься завершення переходів CSS).
$('#myTooltip').on('hidden.bs.tooltip', function () {
  // do something…
})

Інформери popover.js

Додайте невеличкі накладки вмісту, на зразок тих, які показуються в iPad, до будь-яких елементів, для розміщення додаткової інформації.

Інформери, які мають нульову довжину назви (title) та вмісту ніколи не показуються.

Залежність від плагінів

Інформери потребують підключення плагіну підказок у вашій версії Bootstrap.

Вибіркова функціональність

Для покращення продуктивності, доступ до даних Підказок та Інформерів є вибірковим, тобто ви повинні ініціалізувати їх власноруч.

One way to initialize all popovers on a page would be to select them by their data-toggle attribute:

$(function () {
  $('[data-toggle="popover"]').popover()
})

Інформери в групах кнопок та групах input потребують спеціальних налаштувань

При використанні інформерів в межах елементів .btn-group або в .input-group, ви повинні вказувати параметри container: 'body' (документація нижче), щоб уникнути небажаних побічних ефектів (наприклад, коли елемент стає ширшим та/або коли втрачається закругленння кутів, при виклику інформерів).

Не намагайтесь показувати інформери на прихованих елементах

Виклик $(...).popover('show') тоді, коли цільовий елемент приховано, тобто коли display: none;, буде спричиняти неправильне позиціонування.

Інформери на заблокованих елементах потребують обгортання

Щоб додати підказку до елемента disabled або .disabled, вставте елемент в межі <div> та застосуйте підказку вже до цього <div>.

Багаторядкові лінки

Інколи вам хочеться додавати підказки до гіперпосилань, які переносяться на декілька рядків. Початково, плагін буде центрувати їх горизонтально та вертикально. Щоб цього уникнути, додайте атрибут 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="Назва інформера" data-content="А тут якийсь фантастичний вміст. Це є дуже привабливим, правда ж?">Клікніть щоб переключити інформер</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.">
  Інформер ліворуч
</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.">
  Інформер вгорі
</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.">
  Інформер внизу
</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.">
  Інформер праворуч
</button>

Закриття інформера при кліку за його межами

Використовуйте чинник focus щоб закрити інформер при кліку за його межами.

Необхідна спеціальна розмітка для закриття інформера при кліку за його межами

Для правильної крос-браузерної та крос-платформеної поведінки, потрібно використовувати тег <a>, а не тег <button>, окрім цього потрібно включати атрибут tabindex.

<a href="#" tabindex="0" class="btn btn-lg btn-danger" role="button" data-toggle="popover" data-trigger="focus" title="Інформер із закриттям при втраті фокуса" data-content="А тут якийсь фантастичний вміст. Це є дуже привабливим, правда ж?">Інформер із закриттям при втраті фокуса</a>

Використання

Включіть інформери через JavaScript:

$('#example').popover(параметри)

Параметри

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

Назва тип початково опис
animation boolean true застосовує CSS для плавного переходу до інформера
container string | false false

Зазначається елемент, до якого буде додано інформер. Наприклад: container: 'body'. Цей параметр особливо корисний тим, що дозволяє позиціонувати інформер у потоці документа біля викликаючого елемента - тим самим запобігаючи вспливанню біля викликаючого елемента, під час зміни розміру вікна.

content string | function ''

значення початкового вмісту, якщо атрибут data-content не представлено.

Якщо передається функція, вона буде викликатись з її посиланням this встановленим для елемента, до якого прикріплено інформер.

delay number | object 0

Затримка показу та відображення інформерів (ms) – не застосовується для ручного типу виклику.

Якщо зазначено число, затримка застосовуватиметься і до приховування, і до відображення.

Об'єкт має таку структуру: delay: { "show": 500, "hide": 100 }

html boolean false Вставляє HTML в інформер. При значенні false, буде використовуватись метод jQuery text для вставки вмісту в DOM. Використовуйте текст, якщо побоютесь XSS атаки.
placement string | function 'right'

Як позиціонувати інформер - top | bottom | left | right | auto. При вказуванні "auto", інформер буде динамічно переорієнтовуватись. Нариклад, якщо позиціонування зазначено як "auto left", інформер буде показуватись ліворуч, якщо це можливо, і праворуч – у противному разі.

Коли через цей параметр передається саме функція, то в якості першого аргумента їй передається DOM-node інформера (тобто фрагмент HTML), а в якості другого - елемент, на якому було викликано цей інформер. Встановлюється контекст 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. Ви можете передавати декілька чинників; розділіть їх пробілом.
viewport string | object { selector: 'body', padding: 0 }

Утримує інформер в межах цього елемента. Наприклад: viewport: '#viewport' або { "selector": "#viewport", "padding": 0 }

Атрибути даних для індивідуальних інформерів

Параметри для індивідуальних інформерів ще можете зазначати через атрибути даних, як пояснено вище.

Методи

$().popover(параметри)

Закріплює обробник інформера за набором елементів.

.popover('show')

Показує інформер елемента. Інформери з нульовою довжиною назви, ніколи не показуються.

$('#element').popover('show')

.popover('hide')

Приховує інформер елемента.

$('#element').popover('hide')

.popover('toggle')

Переключає інформер елемента.

$('#element').popover('toggle')

.popover('destroy')

Приховує та видаляє інформер елемента.

$('#element').popover('destroy')

Події

Тип події опис
show.bs.popover Ця подія спрацьовує відразу, коли викликається метод show.
shown.bs.popover Ця подіє спрацьовує, коли popover буде відображена для користувача (при цьому очікуватиметься завершення переходів CSS)..
hide.bs.popover Ця подія спрацьовує відразу після виклику метода hide.
hidden.bs.popover Ця подія спрацьовує, коли popover завершить приховування від користувача (при цьому очікуватиметься завершення переходів CSS)..
$('#myPopover').on('hidden.bs.popover', function () {
  // напишіть тут щось…
})

Зауваження alert.js

Приклади зауважень

Додайте можливість закривати всі зауваження з даним плагіном.

При використанні кнопок для закриття з класом .close, вони повинні бути першим дочірнім елементом .alert-dismissible та перед ними не повинно бути будь-якого текста в розміткі.

Використання

Просто додайте data-dismiss="alert", щоб ваша кнопка закриття автоматично отримувала функціональність для закриття. Закриття зауважень видаляє їх з DOM.

<button type="button" class="close" data-dismiss="alert">
  <span aria-hidden="true">&times;</span>
  <span class="sr-only">Закрити</span>
</button>

Щоб використовувати анімацію при закритті повідомлень, переконайтесь, що класи .fade та .in вже застосовані до них.

Методи

$().alert()

Створіть в зауваженнях прослуховування подій при кліках на дочірніх елементах, які мають атрибут data-dismiss="alert". (Це не потрібно робити, якщо використовується ініціалізація через data-api.)

$().alert('close')

Закриває зауваження видаляючи його з DOM. Якщо класи .fade та .in представлені в елементі, зауваження будуть плавно зникати перед їх видаленням.

Події

Плагін Bootstrap для зауважень пропонує кілька подій для включення функціональності.

Тип події опис
close.bs.alert Ця подія спрацьовує відразу, коли викликається метод Закрити.
closed.bs.alert Ця подія спрацьовує коли зауваження буде закрито (при цьому очікуватиметься завершення переходів CSS).
$('#myAlert').on('closed.bs.alert', function () {
  // напишіть тут щось…
})

Кнопки button.js

Налаштуйте додатково кнопки. Контролюйте стани кнопок, або створюйте групи кнопок збільшуючи кількість компонентів, як у панелі інструментів.

Крос-браузерна сумісність

У Firefox стан заблокованості зберігається навіть після перезавантаженні сторінки. Щоб обійти це, використовуйте autocomplete="off". Прогляньте Mozilla bug #654072.

Стан завантаження

Додайте data-loading-text="Завантаження..." щоб використовувати стан завантаження кнопки.

Використовуйте бажаний стан кнопок!

Заради цієї демонстрації, ми використовуємо data-loading-text та $().button('loading'), але це не єдиний стан, який ви можете використовувати. Прогляньте більше про це нижче в описі $().button(string).

<button type="button" id="myButton" data-loading-text="Завантаження..." class="btn btn-primary" autocomplete="off">
  Стан завантаження
</button>

<script>
  $('#myButton').on('click', function () {
    var $btn = $(this).button('loading')
    // тут бізнес-логіка...
    $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">
  Одиничне переключення
</button>

Галочки / Перемикачі

Додайте data-toggle="buttons" до .btn-group, що вміщують галочки (checkbox) або перемикачі (radio) щоб додати можливість переключати їх з відповідними стилями.

Наперед вибрані пункти (option) потребують .active

Щоб наперед вибрати певний пункт (option), необхідно додати клас .active до елементів label.

Відмічені галочки візуально змінюють свій вигляд лише при кліку

Якщо стан галочок оновлено без спрацювання події click (напр. через <input type="reset"> або через налаштування властивості checked в input), вам потрібно переключити клас .active на label.

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

Скидання стану кнопки – зміна текста на будь-який зазначений текст стану.

<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.js

Ознайомлення

Отримайте базовий стиль та гнучку підтримку для компонента згортання.

Залежність від плагінів

Згортання потребує підключеного у вашій версії Bootstrap плагіну переходів.

Приклад "акордіон"

Використовуючи плагін згортання, ми створюємо простий акордион за допомогою розширення компонента панелі.

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.
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.
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 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 data-toggle="collapse" data-parent="#accordion" href="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
          Пункт Групи Згортання #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" data-toggle="collapse" data-parent="#accordion" href="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
          Пункт Групи Згортання #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" data-toggle="collapse" data-parent="#accordion" href="#collapseThree" aria-expanded="false" aria-controls="collapseThree">
          Пункт Групи Згортання #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.

  • Bootply
  • One itmus ac facilin
  • Second eros

Ви можете використовувати плагін без спеціальної розмітки для "акордиона". Створіть кнопку переключення згортаючи та розгортаючи інші елементи.

<button type="button" class="btn btn-danger" data-toggle="collapse" data-target="#demo" aria-expanded="true" aria-controls="demo">
  просте складання
</button>

<div id="demo" class="collapse in">...</div>

Створіть доступніть для згорнутих/розгорнутих елементів

Переконайтесь що додали aria-expanded до елемента управління. Цей атрибут явно визначає поточний стан згорнутого елемента для читачів екранів (screen readers) та подібних технологій. Якщо складаний елемент початково згорнуто, він повинен мати значення aria-expanded="false". Якщо ж його пчатково відкрито за допомогою класа in, в такому разі встановіть aria-expanded="true". Плагін буде автоматично переключати цей атрибут, базуючись на тому згорнутий елемент чи ні.

Додатково, якщо елемент управління являє собою націлений одиничний складаний елемент – наприклад коли атрибут data-target показує на селектор id – ви можете ще додати атрибут aria-controls до елемента управління, що містить id складаного елемент. Сучасні зчитувачі екранів (screen readers) та подібні технології, будуть використовувати цей атрибут, щоб надати користувачам додаткові ярлики для переходу безпосередньо до складаного елемента.

Використання

Плагін згортання використовує декілька класів для забезпечення плавного піднімання:

  • .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 selector false Якщо в якості параметра передається selector, то всі елементи під зазначеним батьківським селектором будуть закриті, у той час як сам пункт із цим селектором – відкриється (схоже на традиційну поведінку акордиона; існує залежність від класа panel)
toggle boolean true При виклику переключає складаний елемент

Методи

.collapse(options)

Активуйте вміст, щоб він став складаним елементом (міг згортатись/розгортатись). Приймає необов'язковий параметр object.

$('#myCollapsible').collapse({
  toggle: false
})

.collapse('toggle')

Переключає складаний елемент, щоб його відобразити чи приховати.

.collapse('show')

Відображає складаний елемент.

.collapse('hide')

Приховує складаний елемент.

Події

Клас Bootstrap для згортанння представляє кілька подій для підключення функціональності згортання.

Тип події опис
show.bs.collapse Ця подія спрацьовує відразу, коли викликається метод show.
shown.bs.collapse Ця подія спрацьовує коли складаний елемент буде показано для користувача (при цьому очікуватиметься завершення переходів CSS).
hide.bs.collapse Ця подія буде спрацьовувати зразу коли метод hide буде викликано.
hidden.bs.collapse Ця подія спрацьовує, коли розгорнутий елемент приховується від користувача (при цьому очікуватиметься завершення переходів CSS).
$('#myCollapsible').on('hidden.bs.collapse', function () {
  // тут щось напишіть…
})

Карусель carousel.js

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

<div id="carousel-example-generic" class="carousel slide" data-ride="carousel">
  <!-- Indicators -->
  <ol class="carousel-indicators">
    <li data-target="#carousel-example-generic" data-slide-to="0" class="active"></li>
    <li data-target="#carousel-example-generic" data-slide-to="1"></li>
    <li data-target="#carousel-example-generic" data-slide-to="2"></li>
  </ol>

  <!-- Обгортка для слайдів -->
  <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>

  <!-- Управління -->
  <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">Попередній</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">Наступний</span>
  </a>
</div>

Проблема доступності

Компонент каруселі в основному не сумісний зі стандартами доступності. Якщо вам потрібна сумісність, розгляньте будь-ласка інші параметри для представлення вашого вмісту.

Додатковий підпис

Додавати підпис до ваших слайдів стає легкою справою завдяки елемента .carousel-caption будь-де в середені .item. Це місце майже для будь-якого додаткового HTML, причому вміст буде автоматично вирівняно та форматовано.

<div class="item">
  <img src="..." alt="...">
  <div class="carousel-caption">
    <h3>...</h3>
    <p>...</p>
  </div>
</div>

Кілька каруселей

Каруселі вимагають використання id на найбільш зовнішньому контейнері (елемента з класом .carousel) для їх правильної функціональності. При додаванні декількох каруселей, або при зміні id каруселі, переконайтесь, що оновили відповідні елементи управління.

Через атрибути даних

Використовуйте атрибути даних, щоб легко контролювати позиціонування каруселі. data-slide приймає ключові слова prev або next, котрі змінюють позицію слайду відносно його поточної позиції. Також можна використовувати data-slide-to щоб передати індекс слайда до каруселі data-slide-to="2", котра буде зміщувати позицію слайда до певного індекса починаючи від 0.

Атрибут data-ride="carousel" використовується для позначення каруселі як анімації, на початку завантаження сторінки. Його не можна використовувати в комбінації з (надлишковою та непотрібною) явною ініціалізацією JavaScript такої ж каруселі.

Через JavaScript

Викликайте карусель вручну через:

$('.carousel').carousel()

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

Назва тип початково опис
interval number 5000 Кількість мілісекунд для затримки між автоматичним зацикленням елементів. Якщо в якості параметра передано false, карусель не буде автоматично зациклюватись.
pause string "hover" Пауза в прокручуванні каруселі при наведенні курсору (mouseenter) та продовження прокрутки, коли курсор миші забирають (mouseleave) з каруселі.
wrap boolean true Чи повинна карусель зациклено прокручуватись, чи повинна зупинитись після показу всіх елементів.
keyboard boolean 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, який став на місце активного пункту слайда.
Тип події опис
slide.bs.carousel Ця подія спрацьовує під час виклика метода slide.
slid.bs.carousel Ця подія спрацьовує, коли карусель завершить перехід до слайда.
$('#myCarousel').on('slide.bs.carousel', function () {
  // напишіть щось тут…
})

Affix affix.js

Приклад

Субнавігація ліворуч є живим прикладом роботи плагіну affix.


Використання

Використовуйте плагін affix за допомогою атрибутів даних, або напишіть свій власний JavaScript. В обох випадках ви повинні надати CSS для позиціонування вмісту.

Позиціонування через CSS

Плагін affix переключається між трьома класами, кожен з яких відповідає певному стану: .affix, .affix-top, та .affix-bottom. Ви повинні власноруч створити стилі для цих класів (незалежно від цього плагіну), для обробки поточної позиції.

Ось як працює плагін 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 number | function | object 10 Пікселі для зсуву екрана, при обрахунку позиції прокрутки. Якщо надано одиничне число, зсув буде застосовуватись і вгорі, і внизу. Щоб надати унікальності зсуву знизу та згори, просто надайте такий об'єкт offset: { top: 10 } або такий offset: { top: 10, bottom: 5 }. Використовуйте функцію, коли вам потрібно динамічно обраховувати зсув.
target selector | node | jQuery element the window object Визначає цільовий affix-елемент.

Події

Плагін Bootstrap affix пропонує кілька подій для вставки affix-функціональності.

Тип події опис
affix.bs.affix Ця подія спрацьовує перед тим, як елемент буде приєднано (affixed).
affixed.bs.affix Ця подія спрацьовує після того, як елемент буде приєднано (affixed)
affix-top.bs.affix Ця подія спрацьовує перед тим, як елемент буде зафіксовано вгорі (affixed-top).
affixed-top.bs.affix Ця подія спрацьовує після того, як елемент буде зафіксовано вгорі (affixed-top).
affix-bottom.bs.affix Ця подія спрацьовує перед тим, як елемент буде зафіксовано внизу (affixed-bottom).
affixed-bottom.bs.affix Ця подія спрацьовує після того, як елемент буде зафіксовано внизу (affixed-bottom).