Source下拉菜單
使用 Bootstrap 下拉插件切換上下文覆蓋以顯示鏈接列表等。
概述
下拉菜單是可切換的上下文覆蓋,用於顯示鏈接列表等。它們與包含的 Bootstrap 下拉 JavaScript 插件交互。它們是通過單擊而不是懸停來切換的;這是一個有意的設計決定。
下拉菜單基於第三方庫Popper.js 構建,該庫提供動態定位和視口檢測。請務必在 Bootstrap 的 JavaScript 之前包含 popper.min.js 或使用/bootstrap.bundle.min.js
其中bootstrap.bundle.js
包含 Popper.js。儘管不需要動態定位,但 Popper.js 不用於在導航欄中定位下拉菜單。
如果您從源代碼構建我們的 JavaScript,它需要util.js
.
可訪問性
WAI ARIA標准定義了一個實際的小role="menu"
部件,但這是特定於觸發動作或功能的類似應用程序的菜單。ARIA菜單只能包含菜單項、複選框菜單項、單選按鈕菜單項、單選按鈕組和子菜單。
另一方面,Bootstrap 的下拉菜單被設計為通用的,適用於各種情況和標記結構。例如,可以創建包含其他輸入和表單控件的下拉菜單,例如搜索字段或登錄表單。出於這個原因,Bootstrap 不期望(也不會自動添加)真正的ARIA菜單所需的任何role
和屬性。作者必須自己包含這些更具體的屬性。aria-
但是,Bootstrap 確實為大多數標準鍵盤菜單交互添加了內置支持,例如.dropdown-item
使用光標鍵在各個元素之間移動並使用該鍵關閉菜單的能力ESC。
例子
將下拉菜單的切換(您的按鈕或鏈接)和下拉菜單包裝在.dropdown
或另一個聲明position: relative;
. 可以從<a>
或<button>
元素觸發下拉菜單,以更好地滿足您的潛在需求。
任何一個.btn
都可以通過一些標記更改變成下拉切換。以下是如何讓它們與任一<button>
元素一起使用:
並帶有<a>
元素:
最好的部分是您也可以使用任何按鈕變體來執行此操作:
同樣,創建拆分按鈕下拉菜單,其標記與單個按鈕下拉菜單幾乎相同,但.dropdown-toggle-split
在下拉插入符號周圍添加了適當的間距。
我們使用這個額外的類將padding
插入符號兩側的水平線減少 25%,並刪除margin-left
為常規按鈕下拉菜單添加的內容。這些額外的更改使插入符號保持在拆分按鈕的中心,並在主按鈕旁邊提供了一個更合適大小的點擊區域。
漿紗
按鈕下拉菜單適用於所有大小的按鈕,包括默認和拆分下拉按鈕。
方向
放棄
.dropup
通過添加到父元素來觸發元素上方的下拉菜單。
右下角
.dropright
通過添加到父元素來觸發元素右側的下拉菜單。
左下角
.dropleft
通過添加到父元素來觸發元素左側的下拉菜單。
從歷史上看,下拉菜單內容必須是鏈接,但 v4 不再是這種情況。現在,您可以選擇<button>
在下拉列表中使用元素,而不僅僅是<a>
s。
您還可以使用.dropdown-item-text
. 隨意使用自定義 CSS 或文本實用程序進一步設置樣式。
積極的
添加.active
到下拉列表中的項目以將它們設置為 active。
已禁用
添加.disabled
到下拉列表中的項目以將它們設置為 disabled。
默認情況下,下拉菜單會自動 100% 定位在其父級的頂部和左側。添加.dropdown-menu-right
到.dropdown-menu
右對齊下拉菜單。
小心!借助 Popper.js 定位下拉菜單(除非它們包含在導航欄中)。
響應式對齊
如果要使用響應式對齊,請通過添加data-display="static"
屬性禁用動態定位並使用響應式變體類。
要將下拉菜單與給定斷點或更大的斷點對齊,請添加.dropdown-menu{-sm|-md|-lg|-xl}-right
.
要將下拉菜單與給定斷點或更大的斷點左對齊,請添加.dropdown-menu-right
和.dropdown-menu{-sm|-md|-lg|-xl}-left
。
請注意,您不需要為data-display="static"
導航欄中的下拉按鈕添加屬性,因為導航欄中不使用 Popper.js。
添加標題以標記任何下拉菜單中的操作部分。
分隔線
用分隔線分隔相關菜單項組。
文本
將任何自由格式文本放在帶有文本的下拉菜單中,並使用間距實用程序。請注意,您可能需要額外的尺寸樣式來限制菜單寬度。
將表單放在下拉菜單中,或將其放入下拉菜單,並使用邊距或填充實用程序為其提供所需的負空間。
下拉選項
使用data-offset
或data-reference
更改下拉菜單的位置。
用法
.show
通過數據屬性或 JavaScript,下拉插件通過切換父列表項上的類來切換隱藏內容(下拉菜單) 。該data-toggle="dropdown"
屬性依賴於在應用程序級別關閉下拉菜單,因此始終使用它是一個好主意。
在支持觸摸的設備上,打開下拉菜單會將空 ( $.noop
)mouseover
處理程序添加到<body>
元素的直接子級。這個公認的醜陋黑客對於解決iOS 事件委託中的一個怪癖是必要的,否則會阻止在下拉列表之外的任何地方點擊觸發關閉下拉列表的代碼。關閉下拉菜單後,這些額外的空mouseover
處理程序將被刪除。
通過數據屬性
添加data-toggle="dropdown"
到鏈接或按鈕以切換下拉菜單。
通過 JavaScript
通過 JavaScript 調用下拉菜單:
data-toggle="dropdown"
仍然需要
無論您是通過 JavaScript 調用下拉菜單還是使用 data-api,data-toggle="dropdown"
都必須始終出現在下拉菜單的觸發元素上。
選項
選項可以通過數據屬性或 JavaScript 傳遞。對於數據屬性,將選項名稱附加到 中data-
,如data-offset=""
.
姓名 |
類型 |
默認 |
描述 |
抵消 |
號碼 | 字符串 | 功能 |
0 |
下拉菜單相對於其目標的偏移量。 當使用函數確定偏移量時,會使用包含偏移量數據的對像作為其第一個參數來調用它。該函數必須返回具有相同結構的對象。觸發元素 DOM 節點作為第二個參數傳遞。 有關更多信息,請參閱 Popper.js 的偏移量文檔。 |
翻動 |
布爾值 |
真的 |
允許下拉菜單在參考元素重疊的情況下翻轉。有關更多信息,請參閱 Popper.js 的翻轉文檔。 |
邊界 |
字符串 | 元素 |
'滾動父' |
下拉菜單的溢出約束邊界。接受 、 、 或 HTMLElement 引用的值'viewport' ('window' 僅限'scrollParent' JavaScript)。有關更多信息,請參閱 Popper.js 的preventOverflow 文檔。 |
參考 |
字符串 | 元素 |
'切換' |
下拉菜單的引用元素。接受 、 或 HTMLElement 引用的'toggle' 值'parent' 。有關更多信息,請參閱 Popper.js 的referenceObject 文檔。 |
展示 |
細繩 |
'動態的' |
默認情況下,我們使用 Popper.js 進行動態定位。用 禁用它static 。 |
popperConfig |
空 | 目的 |
無效的 |
要更改 Bootstrap 的默認 Popper.js 配置,請參閱Popper.js 的配置 |
請注意,當boundary
設置為 以外'scrollParent'
的任何值時,樣式position: static
將應用於.dropdown
容器。
方法
方法 |
描述 |
$().dropdown('toggle') |
切換給定導航欄或選項卡式導航的下拉菜單。 |
$().dropdown('show') |
顯示給定導航欄或選項卡式導航的下拉菜單。 |
$().dropdown('hide') |
隱藏給定導航欄或選項卡式導航的下拉菜單。 |
$().dropdown('update') |
更新元素下拉列表的位置。 |
$().dropdown('dispose') |
銷毀元素的下拉列表。 |
活動
所有下拉事件都在.dropdown-menu
的父元素上觸發,並具有一個relatedTarget
屬性,其值為切換錨元素。hide.bs.dropdown
並且hidden.bs.dropdown
events 有一個clickEvent
屬性(僅當原始事件類型為 時click
)包含單擊事件的事件對象。
事件 |
描述 |
show.bs.dropdown |
此事件在調用 show 實例方法時立即觸發。 |
shown.bs.dropdown |
當下拉菜單對用戶可見時觸發此事件(將等待 CSS 轉換完成)。 |
hide.bs.dropdown |
當調用 hide 實例方法時,會立即觸發此事件。 |
hidden.bs.dropdown |
當下拉菜單完成對用戶隱藏時觸發此事件(將等待 CSS 轉換完成)。 |