Câu trả lời mở rộng, là câu trả lời đầu tiên của tôi, vì vậy xin lỗi nếu không có đủ chi tiết trước đó.
Đối với Bootstrap 3.x Cá nhân tôi thích hoạt ảnh CSS hơn và tôi đã sử dụng animate.css & cùng với Bootstrap Dropdown Javascript Hooks. Mặc dù nó có thể không mang lại hiệu quả chính xác cho bạn nhưng đây là một cách tiếp cận khá linh hoạt.
Bước 1: Thêm animate.css vào trang của bạn bằng các thẻ head:
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/3.4.0/animate.min.css">
Bước 2: Sử dụng HTML Bootstrap tiêu chuẩn trên trình kích hoạt:
<div class="dropdown">
<button type="button" data-toggle="dropdown">Dropdown trigger</button>
<ul class="dropdown-menu">
...
</ul>
</div>
Bước 3: Sau đó thêm 2 thuộc tính dữ liệu tùy chỉnh vào phần tử dropdrop-menu; dữ liệu thả xuống cho hoạt ảnh trong và thả xuống dữ liệu cho hoạt ảnh ngoài. Đây có thể là bất kỳ hiệu ứng animate.css nào như fadeIn hoặc fadeOut
<ul class="dropdown-menu" data-dropdown-in="fadeIn" data-dropdown-out="fadeOut">
......
</ul>
Bước 4: Tiếp theo, thêm Javascript sau để đọc các thuộc tính dữ liệu data-dropdown-in / out và phản ứng với các hook / sự kiện của Bootstrap Javascript API ( 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');
});
}
},
});
Bước 5 (tùy chọn): Nếu bạn muốn tăng tốc hoặc thay đổi hoạt ảnh, bạn có thể làm như vậy với CSS như sau:
.dropdown-menu.animated {
-webkit-animation-duration: 0.55s;
animation-duration: 0.55s;
-webkit-animation-timing-function: ease;
animation-timing-function: ease;
}
Đã viết một bài báo với nhiều chi tiết hơn và tải xuống nếu có ai quan tâm: article: http://bootbites.com/tutorials/bootstrap-dropdown-effects-animatecss
Hy vọng điều đó hữu ích và bài viết thứ hai này có mức độ chi tiết cần thiết Tom