Розширена відповідь - це була моя перша відповідь, тому вибачте, якщо раніше не було достатньо деталей.
Для Bootstrap 3.x я особисто віддаю перевагу анімації CSS, і я використовую animate.css та разом із випадаючими хуками Bootstrap Javascript. Хоча це може мати не той ефект, який ви шукаєте, це досить гнучкий підхід.
Крок 1: Додайте animate.css на свою сторінку за допомогою тегів head:
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.4.0/animate.min.css">
Крок 2: Використовуйте стандартний Bootstrap HTML на тригері:
<div class="dropdown">
<button type="button" data-toggle="dropdown">Dropdown trigger</button>
<ul class="dropdown-menu">
...
</ul>
</div>
Крок 3: Потім додайте 2 атрибути власних даних до елемента меню, що випадає; випадаючі дані для вхідної анімації та випадаючі дані для вихідної анімації. Це можуть бути будь-які ефекти animate.css, такі як fadeIn або fadeOut
<ul class="dropdown-menu" data-dropdown-in="fadeIn" data-dropdown-out="fadeOut">
......
</ul>
Крок 4: Далі додайте такий Javascript, щоб прочитати атрибути даних, що випадають / випадають, і реагувати на зачепи / події API Bootstrap Javascript ( http://getbootstrap.com/javascript/#dropdowns-events ):
var dropdownSelectors = $('.dropdown, .dropup');
function dropdownEffectData(target) {
var effectInDefault = null,
effectOutDefault = null;
var dropdown = $(target),
dropdownMenu = $('.dropdown-menu', target);
var parentUl = dropdown.parents('ul.nav');
if (parentUl.size() > 0) {
effectInDefault = parentUl.data('dropdown-in') || null;
effectOutDefault = parentUl.data('dropdown-out') || null;
}
return {
target: target,
dropdown: dropdown,
dropdownMenu: dropdownMenu,
effectIn: dropdownMenu.data('dropdown-in') || effectInDefault,
effectOut: dropdownMenu.data('dropdown-out') || effectOutDefault,
};
}
function dropdownEffectStart(data, effectToStart) {
if (effectToStart) {
data.dropdown.addClass('dropdown-animating');
data.dropdownMenu.addClass('animated');
data.dropdownMenu.addClass(effectToStart);
}
}
function dropdownEffectEnd(data, callbackFunc) {
var animationEnd = 'webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend';
data.dropdown.one(animationEnd, function() {
data.dropdown.removeClass('dropdown-animating');
data.dropdownMenu.removeClass('animated');
data.dropdownMenu.removeClass(data.effectIn);
data.dropdownMenu.removeClass(data.effectOut);
if(typeof callbackFunc == 'function'){
callbackFunc();
}
});
}
dropdownSelectors.on({
"show.bs.dropdown": function () {
var dropdown = dropdownEffectData(this);
dropdownEffectStart(dropdown, dropdown.effectIn);
},
"shown.bs.dropdown": function () {
var dropdown = dropdownEffectData(this);
if (dropdown.effectIn && dropdown.effectOut) {
dropdownEffectEnd(dropdown, function() {});
}
},
"hide.bs.dropdown": function(e) {
var dropdown = dropdownEffectData(this);
if (dropdown.effectOut) {
e.preventDefault();
dropdownEffectStart(dropdown, dropdown.effectOut);
dropdownEffectEnd(dropdown, function() {
dropdown.dropdown.removeClass('open');
});
}
},
});
Крок 5 (необов’язково): Якщо ви хочете прискорити або змінити анімацію, ви можете зробити це за допомогою CSS, як показано нижче:
.dropdown-menu.animated {
-webkit-animation-duration: 0.55s;
animation-duration: 0.55s;
-webkit-animation-timing-function: ease;
animation-timing-function: ease;
}
Написав статтю з більш детальною інформацією та завантаження, якщо хтось зацікавив: article: http://bootbites.com/tutorials/bootstrap-dropdown-effects-animatecss
Сподіваюся, це корисно, і це друге написання має рівень деталізації, який потрібен Тому