Skip to content

bootstrap_ref_js_dropdown

Bootstrap JS 下拉菜单参考 (Dropdown Reference)

Section titled “Bootstrap JS 下拉菜单参考 (Dropdown Reference)”

下拉菜单(Dropdowns)是可切换的、上下文相关的叠加层,用于显示链接列表等内容。它们通过 Bootstrap 的 dropdown JavaScript 插件实现交互,该插件依赖于 Popper.js 进行定位。

有关创建下拉菜单的分步教程,请参考我们的 Bootstrap 下拉菜单教程。

类 / 元素描述
.dropdown下拉菜单组件的主要包装器。
.dropdown-toggle添加到触发下拉菜单的按钮/链接上。
.dropdown-menu包含下拉菜单项的 <ul> 元素。
.dropdown-item.dropdown-menu 内部的 <a> 或 <button> 元素的类。
.dropdown-divider带此类的 <hr> 标签,用于分隔项目组。
.dropdown-header带此类的 <h6> (通常在 <li> 内部),用于标记区块标题。
.dropdown-menu-end将下拉菜单与触发器右侧(末端)对齐。
.dropdown-menu-{breakpoint}-start/end下拉菜单的响应式对齐。
.dropup, .dropend, .dropstart添加到 .dropdown 父元素上以改变菜单方向的类。
.disabled添加到 .dropdown-item 上以禁用它。

通过 Data 属性使用 (Usage via Data Attributes)

Section titled “通过 Data 属性使用 (Usage via Data Attributes)”

通过简单地向链接或按钮添加 data-bs-toggle="dropdown" 来激活下拉菜单,无需编写任何 JavaScript。还建议添加 aria-expanded 属性。

<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButtonSimple" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown button
</button>
<ul class="dropdown-menu" aria-labelledby="dropdownMenuButtonSimple">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
</ul>
</div>

通过 JavaScript 使用 (Usage via JavaScript)

Section titled “通过 JavaScript 使用 (Usage via JavaScript)”

你也可以使用 JavaScript 手动初始化下拉菜单:

var dropdownElement = document.getElementById('myDropdownToggle');
var dropdownInstance = new bootstrap.Dropdown(dropdownElement, {
// optional options object
});
// To initialize all dropdowns on a page:
const dropdownElementList = document.querySelectorAll('.dropdown-toggle');
const dropdownList = [...dropdownElementList].map(dropdownToggleEl => new bootstrap.Dropdown(dropdownToggleEl));

注意:如果通过 JavaScript 初始化,触发元素上通常仍然会为了方便保留 data-bs-toggle="dropdown",但 JS 构造函数优先级更高。

选项可以通过 data 属性或 JavaScript 传递。对于 data 属性,将选项名称附加到 data-bs- 之后,例如 data-bs-offset="[10,20]"。

名称默认值Data 属性描述
offset[0, 2]data-bs-offset下拉菜单相对于其目标的偏移量。可以是字符串,例如 ‘10,20’,或数组 [skidding, distance]。
boundary’clippingParents’data-bs-boundary定义下拉菜单的溢出边界。接受 ‘clippingParents’、‘viewport’ 或 HTMLElement 引用。
reference’toggle’data-bs-reference下拉菜单位置的参照元素。接受 ‘toggle’、‘parent’ 或 HTMLElement 引用。
display’dynamic’data-bs-display默认情况下,我们使用 Popper 进行动态定位。使用 static 可以禁用此功能。
popperConfignulldata-bs-popper-config要更改 Bootstrap 默认的 Popper 配置,请参阅 Popper 配置。可以是对象或函数。

Dropdown 方法在下拉菜单实例上调用。

方法 描述 示例

toggle() 切换(显示/隐藏)给定的导航栏或标签式导航的下拉菜单。 myDropdownInstance.toggle()

show() 显示给定的导航栏或标签式导航的下拉菜单。 myDropdownInstance.show()

hide() 隐藏给定的导航栏或标签式导航的下拉菜单。 myDropdownInstance.hide()

update() 更新元素的下拉菜单位置。 myDropdownInstance.update()

dispose() 销毁元素的下拉菜单。(移除 DOM 元素上存储的数据) myDropdownInstance.dispose()

getInstance(element) 静态方法,允许你获取与 DOM 元素关联的下拉菜单实例。 bootstrap.Dropdown.getInstance(myDropdownToggleElement)

getOrCreateInstance(element, config?) 静态方法,允许你获取与 DOM 元素关联的下拉菜单实例;如果尚未初始化,则创建一个新实例。 bootstrap.Dropdown.getOrCreateInstance(myDropdownToggleElement, { offset: [0,10] })

Bootstrap 的 dropdown 插件公开了一些事件,用于介入下拉菜单的功能。

事件类型 描述

show.bs.dropdown 此事件在调用 show 实例方法时立即触发。下拉菜单触发元素可通过事件的 relatedTarget 属性访问。

shown.bs.dropdown 此事件在下拉菜单对用户可见后触发(会等待 CSS 过渡完成)。下拉菜单触发元素可通过事件的 relatedTarget 属性访问。

hide.bs.dropdown 此事件在调用 hide 实例方法时立即触发。下拉菜单触发元素可通过事件的 relatedTarget 属性访问。

hidden.bs.dropdown 此事件在下拉菜单对用户隐藏完毕后触发(会等待 CSS 过渡完成)。下拉菜单触发元素可通过事件的 relatedTarget 属性访问。

使用事件的示例:

const myDropdownEl = document.getElementById('someDropdown');
myDropdownEl.addEventListener('shown.bs.dropdown', function (event) {
// event.relatedTarget is the triggering Toggler element
console.log('Dropdown shown, triggered by: ', event.relatedTarget.textContent);
// Do something when the dropdown is shown
});