Jatuh turun
Togol tindanan kontekstual untuk memaparkan senarai pautan dan banyak lagi dengan pemalam lungsur turun Bootstrap.
Gambaran keseluruhan
Jatuh turun boleh togol, tindanan kontekstual untuk memaparkan senarai pautan dan banyak lagi. Ia dibuat interaktif dengan pemalam JavaScript lungsur Bootstrap yang disertakan. Mereka ditogol dengan mengklik, bukan dengan melayang; ini adalah keputusan reka bentuk yang disengajakan .
Dropdown dibina pada pustaka pihak ketiga, Popper , yang menyediakan pengesanan kedudukan dinamik dan port pandangan. Pastikan anda memasukkan popper.min.js sebelum JavaScript Bootstrap atau gunakan bootstrap.bundle.min.js
/ bootstrap.bundle.js
yang mengandungi Popper. Popper tidak digunakan untuk meletakkan dropdown dalam bar navigasi walaupun kerana kedudukan dinamik tidak diperlukan.
Kebolehcapaian
Piawaian WAI ARIA mentakrifkan role="menu"
widget sebenar , tetapi ini khusus untuk menu seperti aplikasi yang mencetuskan tindakan atau fungsi. Menu ARIA hanya boleh mengandungi item menu, item menu kotak semak, item menu butang radio, kumpulan butang radio dan sub-menu.
Sebaliknya, dropdown Bootstrap direka bentuk untuk menjadi generik dan boleh digunakan pada pelbagai situasi dan struktur penanda. Sebagai contoh, adalah mungkin untuk membuat lungsur turun yang mengandungi input tambahan dan kawalan borang, seperti medan carian atau borang log masuk. Atas sebab ini, Bootstrap tidak menjangkakan (atau menambah secara automatik) mana-mana atribut role
dan yang diperlukan untuk menu ARIA sebenar. Pengarang perlu memasukkan atribut yang lebih khusus ini sendiri.aria-
Walau bagaimanapun, Bootstrap menambah sokongan terbina dalam untuk kebanyakan interaksi menu papan kekunci standard, seperti keupayaan untuk bergerak melalui .dropdown-item
elemen individu menggunakan kekunci kursor dan menutup menu dengan ESCkekunci.
Contoh
Balut togol lungsur turun (butang atau pautan anda) dan menu lungsur turun dalam .dropdown
, atau elemen lain yang mengisytiharkan position: relative;
. Jatuh turun boleh dicetuskan daripada <a>
atau <button>
unsur supaya lebih sesuai dengan potensi keperluan anda. Contoh yang ditunjukkan di sini menggunakan <ul>
elemen semantik jika sesuai, tetapi penanda tersuai disokong.
Butang tunggal
Mana-mana single .btn
boleh ditukar menjadi togol lungsur turun dengan beberapa perubahan markup. Begini cara anda boleh menjadikannya berfungsi dengan mana-mana <button>
elemen:
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown button
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</div>
Dan dengan <a>
unsur:
<div class="dropdown">
<a class="btn btn-secondary dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown link
</a>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</div>
Bahagian yang terbaik ialah anda boleh melakukan ini dengan mana-mana varian butang juga:
<!-- Example single danger button -->
<div class="btn-group">
<button type="button" class="btn btn-danger dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
Action
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Separated link</a></li>
</ul>
</div>
Butang belah
Begitu juga, buat menu lungsur butang pisah dengan penanda yang hampir sama dengan lungsur butang tunggal, tetapi dengan penambahan .dropdown-toggle-split
untuk jarak yang betul di sekeliling karet lungsur.
Kami menggunakan kelas tambahan ini untuk mengurangkan mendatar padding
pada kedua-dua sisi karet sebanyak 25% dan mengalih keluar kelas margin-left
yang ditambahkan untuk menu lungsur butang biasa. Perubahan tambahan tersebut memastikan karet berpusat pada butang belah dan menyediakan kawasan pukulan bersaiz lebih sesuai di sebelah butang utama.
<!-- Example split danger button -->
<div class="btn-group">
<button type="button" class="btn btn-danger">Action</button>
<button type="button" class="btn btn-danger dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
<span class="visually-hidden">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Separated link</a></li>
</ul>
</div>
Saiz
Butang lungsur turun berfungsi dengan butang semua saiz, termasuk butang lungsur lalai dan pisah.
<!-- Large button groups (default and split) -->
<div class="btn-group">
<button class="btn btn-secondary btn-lg dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
Large button
</button>
<ul class="dropdown-menu">
...
</ul>
</div>
<div class="btn-group">
<button class="btn btn-secondary btn-lg" type="button">
Large split button
</button>
<button type="button" class="btn btn-lg btn-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
<span class="visually-hidden">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu">
...
</ul>
</div>
<div class="btn-group">
<button class="btn btn-secondary btn-sm dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
Small button
</button>
<ul class="dropdown-menu">
...
</ul>
</div>
<div class="btn-group">
<button class="btn btn-secondary btn-sm" type="button">
Small split button
</button>
<button type="button" class="btn btn-sm btn-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
<span class="visually-hidden">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu">
...
</ul>
</div>
Jatuh turun gelap
Ikut serta lungsur turun yang lebih gelap untuk memadankan bar navigasi gelap atau gaya tersuai dengan menambahkan .dropdown-menu-dark
pada .dropdown-menu
. Tiada perubahan diperlukan pada item lungsur turun.
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown button
</button>
<ul class="dropdown-menu dropdown-menu-dark">
<li><a class="dropdown-item active" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Separated link</a></li>
</ul>
</div>
Dan meletakkannya untuk digunakan dalam navbar:
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNavDarkDropdown" aria-controls="navbarNavDarkDropdown" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNavDarkDropdown">
<ul class="navbar-nav">
<li class="nav-item dropdown">
<a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown
</a>
<ul class="dropdown-menu dropdown-menu-dark">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</li>
</ul>
</div>
</div>
</nav>
Arah
RTL
Arah dicerminkan apabila menggunakan Bootstrap dalam RTL, bermakna .dropstart
akan muncul di sebelah kanan.
Berpusat
Jadikan menu lungsur turun berpusat di bawah togol dengan .dropdown-center
pada elemen induk.
<div class="dropdown-center">
<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
Centered dropdown
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Action two</a></li>
<li><a class="dropdown-item" href="#">Action three</a></li>
</ul>
</div>
Dropup
Cetuskan menu lungsur turun di atas elemen dengan menambah .dropup
pada elemen induk.
<!-- Default dropup button -->
<div class="btn-group dropup">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
Dropup
</button>
<ul class="dropdown-menu">
<!-- Dropdown menu links -->
</ul>
</div>
<!-- Split dropup button -->
<div class="btn-group dropup">
<button type="button" class="btn btn-secondary">
Split dropup
</button>
<button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
<span class="visually-hidden">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu">
<!-- Dropdown menu links -->
</ul>
</div>
Dropup berpusat
Jadikan menu lungsur berpusat di atas togol dengan .dropup-center
pada elemen induk.
<div class="dropup-center dropup">
<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
Centered dropup
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Action two</a></li>
<li><a class="dropdown-item" href="#">Action three</a></li>
</ul>
</div>
Dropend
Cetuskan menu lungsur turun di sebelah kanan elemen dengan menambahkan .dropend
pada elemen induk.
<!-- Default dropend button -->
<div class="btn-group dropend">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
Dropend
</button>
<ul class="dropdown-menu">
<!-- Dropdown menu links -->
</ul>
</div>
<!-- Split dropend button -->
<div class="btn-group dropend">
<button type="button" class="btn btn-secondary">
Split dropend
</button>
<button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
<span class="visually-hidden">Toggle Dropend</span>
</button>
<ul class="dropdown-menu">
<!-- Dropdown menu links -->
</ul>
</div>
Dropstart
Cetuskan menu lungsur turun di sebelah kiri elemen dengan menambah .dropstart
pada elemen induk.
<!-- Default dropstart button -->
<div class="btn-group dropstart">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
Dropstart
</button>
<ul class="dropdown-menu">
<!-- Dropdown menu links -->
</ul>
</div>
<!-- Split dropstart button -->
<div class="btn-group dropstart">
<button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false">
<span class="visually-hidden">Toggle Dropstart</span>
</button>
<ul class="dropdown-menu">
<!-- Dropdown menu links -->
</ul>
<button type="button" class="btn btn-secondary">
Split dropstart
</button>
</div>
Item menu
Anda boleh menggunakan <a>
atau <button>
elemen sebagai item lungsur turun.
<div class="dropdown">
<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown
</button>
<ul class="dropdown-menu">
<li><button class="dropdown-item" type="button">Action</button></li>
<li><button class="dropdown-item" type="button">Another action</button></li>
<li><button class="dropdown-item" type="button">Something else here</button></li>
</ul>
</div>
Anda juga boleh membuat item lungsur turun bukan interaktif dengan .dropdown-item-text
. Jangan ragu untuk menggayakan lagi dengan CSS tersuai atau utiliti teks.
<ul class="dropdown-menu">
<li><span class="dropdown-item-text">Dropdown item text</span></li>
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
Aktif
Tambahkan .active
pada item dalam menu lungsur untuk menggayakannya sebagai aktif . Untuk menyampaikan keadaan aktif kepada teknologi bantuan, gunakan aria-current
atribut — menggunakan page
nilai untuk halaman semasa atau true
untuk item semasa dalam set.
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Regular link</a></li>
<li><a class="dropdown-item active" href="#" aria-current="true">Active link</a></li>
<li><a class="dropdown-item" href="#">Another link</a></li>
</ul>
Dilumpuhkan
Tambahkan .disabled
pada item dalam menu lungsur untuk menggayakannya sebagai dilumpuhkan .
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Regular link</a></li>
<li><a class="dropdown-item disabled">Disabled link</a></li>
<li><a class="dropdown-item" href="#">Another link</a></li>
</ul>
Penjajaran menu
Secara lalai, menu lungsur turun secara automatik diletakkan 100% dari atas dan di sepanjang sebelah kiri induknya. Anda boleh menukar ini dengan .drop*
kelas arah, tetapi anda juga boleh mengawalnya dengan kelas pengubah suai tambahan.
Tambahkan .dropdown-menu-end
pada .dropdown-menu
jajaran ke kanan menu lungsur turun. Arah dicerminkan apabila menggunakan Bootstrap dalam RTL, bermakna .dropdown-menu-end
akan muncul di sebelah kiri.
<div class="btn-group">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
Right-aligned menu example
</button>
<ul class="dropdown-menu dropdown-menu-end">
<li><button class="dropdown-item" type="button">Action</button></li>
<li><button class="dropdown-item" type="button">Another action</button></li>
<li><button class="dropdown-item" type="button">Something else here</button></li>
</ul>
</div>
Penjajaran responsif
Jika anda ingin menggunakan penjajaran responsif, lumpuhkan kedudukan dinamik dengan menambahkan data-bs-display="static"
atribut dan gunakan kelas variasi responsif.
Untuk menjajarkan menu lungsur ke kanan.dropdown-menu{-sm|-md|-lg|-xl|-xxl}-end
dengan titik putus yang diberikan atau lebih besar, tambahkan .
<div class="btn-group">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" data-bs-display="static" aria-expanded="false">
Left-aligned but right aligned when large screen
</button>
<ul class="dropdown-menu dropdown-menu-lg-end">
<li><button class="dropdown-item" type="button">Action</button></li>
<li><button class="dropdown-item" type="button">Another action</button></li>
<li><button class="dropdown-item" type="button">Something else here</button></li>
</ul>
</div>
Untuk menjajarkan menu lungsur ke kiri.dropdown-menu-end
dengan titik putus yang diberikan atau lebih besar, tambah dan .dropdown-menu{-sm|-md|-lg|-xl|-xxl}-start
.
<div class="btn-group">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" data-bs-display="static" aria-expanded="false">
Right-aligned but left aligned when large screen
</button>
<ul class="dropdown-menu dropdown-menu-end dropdown-menu-lg-start">
<li><button class="dropdown-item" type="button">Action</button></li>
<li><button class="dropdown-item" type="button">Another action</button></li>
<li><button class="dropdown-item" type="button">Something else here</button></li>
</ul>
</div>
Ambil perhatian bahawa anda tidak perlu menambah data-bs-display="static"
atribut pada butang lungsur turun dalam bar navigasi, kerana Popper tidak digunakan dalam bar navigasi.
Pilihan penjajaran
Mengambil kebanyakan pilihan yang ditunjukkan di atas, berikut ialah demo sink dapur kecil pelbagai pilihan penjajaran lungsur turun di satu tempat.
<div class="btn-group">
<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
</ul>
</div>
<div class="btn-group">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
Right-aligned menu
</button>
<ul class="dropdown-menu dropdown-menu-end">
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
</ul>
</div>
<div class="btn-group">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" data-bs-display="static" aria-expanded="false">
Left-aligned, right-aligned lg
</button>
<ul class="dropdown-menu dropdown-menu-lg-end">
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
</ul>
</div>
<div class="btn-group">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" data-bs-display="static" aria-expanded="false">
Right-aligned, left-aligned lg
</button>
<ul class="dropdown-menu dropdown-menu-end dropdown-menu-lg-start">
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
</ul>
</div>
<div class="btn-group dropstart">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
Dropstart
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
</ul>
</div>
<div class="btn-group dropend">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
Dropend
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
</ul>
</div>
<div class="btn-group dropup">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
Dropup
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
</ul>
</div>
Kandungan menu
Pengepala
Tambahkan pengepala untuk melabel bahagian tindakan dalam mana-mana menu lungsur turun.
<ul class="dropdown-menu">
<li><h6 class="dropdown-header">Dropdown header</h6></li>
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
</ul>
Pembahagi
Asingkan kumpulan item menu yang berkaitan dengan pembahagi.
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Separated link</a></li>
</ul>
Teks
Letakkan sebarang teks bentuk bebas dalam menu lungsur turun dengan teks dan gunakan utiliti jarak . Ambil perhatian bahawa anda mungkin memerlukan gaya saiz tambahan untuk mengekang lebar menu.
<div class="dropdown-menu p-4 text-muted" style="max-width: 200px;">
<p>
Some example text that's free-flowing within the dropdown menu.
</p>
<p class="mb-0">
And this is more example text.
</p>
</div>
Borang
Letakkan borang dalam menu lungsur turun, atau jadikannya sebagai menu lungsur turun, dan gunakan utiliti margin atau padding untuk memberikannya ruang negatif yang anda perlukan.
<div class="dropdown-menu">
<form class="px-4 py-3">
<div class="mb-3">
<label for="exampleDropdownFormEmail1" class="form-label">Email address</label>
<input type="email" class="form-control" id="exampleDropdownFormEmail1" placeholder="[email protected]">
</div>
<div class="mb-3">
<label for="exampleDropdownFormPassword1" class="form-label">Password</label>
<input type="password" class="form-control" id="exampleDropdownFormPassword1" placeholder="Password">
</div>
<div class="mb-3">
<div class="form-check">
<input type="checkbox" class="form-check-input" id="dropdownCheck">
<label class="form-check-label" for="dropdownCheck">
Remember me
</label>
</div>
</div>
<button type="submit" class="btn btn-primary">Sign in</button>
</form>
<div class="dropdown-divider"></div>
<a class="dropdown-item" href="#">New around here? Sign up</a>
<a class="dropdown-item" href="#">Forgot password?</a>
</div>
<div class="dropdown">
<button type="button" class="btn btn-primary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false" data-bs-auto-close="outside">
Dropdown form
</button>
<form class="dropdown-menu p-4">
<div class="mb-3">
<label for="exampleDropdownFormEmail2" class="form-label">Email address</label>
<input type="email" class="form-control" id="exampleDropdownFormEmail2" placeholder="[email protected]">
</div>
<div class="mb-3">
<label for="exampleDropdownFormPassword2" class="form-label">Password</label>
<input type="password" class="form-control" id="exampleDropdownFormPassword2" placeholder="Password">
</div>
<div class="mb-3">
<div class="form-check">
<input type="checkbox" class="form-check-input" id="dropdownCheck2">
<label class="form-check-label" for="dropdownCheck2">
Remember me
</label>
</div>
</div>
<button type="submit" class="btn btn-primary">Sign in</button>
</form>
</div>
Pilihan lungsur turun
Gunakan data-bs-offset
atau data-bs-reference
untuk menukar lokasi lungsur turun.
<div class="d-flex">
<div class="dropdown me-1">
<button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false" data-bs-offset="10,20">
Offset
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
</ul>
</div>
<div class="btn-group">
<button type="button" class="btn btn-secondary">Reference</button>
<button type="button" class="btn btn-secondary dropdown-toggle dropdown-toggle-split" data-bs-toggle="dropdown" aria-expanded="false" data-bs-reference="parent">
<span class="visually-hidden">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Action</a></li>
<li><a class="dropdown-item" href="#">Another action</a></li>
<li><a class="dropdown-item" href="#">Something else here</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="#">Separated link</a></li>
</ul>
</div>
</div>
Tingkah laku auto tutup
Secara lalai, menu lungsur ditutup apabila mengklik di dalam atau di luar menu lungsur. Anda boleh menggunakan autoClose
pilihan untuk menukar tingkah laku lungsur turun ini.
<div class="btn-group">
<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" data-bs-auto-close="true" aria-expanded="false">
Default dropdown
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
</ul>
</div>
<div class="btn-group">
<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" data-bs-auto-close="inside" aria-expanded="false">
Clickable outside
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
</ul>
</div>
<div class="btn-group">
<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-expanded="false">
Clickable inside
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
</ul>
</div>
<div class="btn-group">
<button class="btn btn-secondary dropdown-toggle" type="button" data-bs-toggle="dropdown" data-bs-auto-close="false" aria-expanded="false">
Manual close
</button>
<ul class="dropdown-menu">
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
<li><a class="dropdown-item" href="#">Menu item</a></li>
</ul>
</div>
CSS
Pembolehubah
Ditambah dalam v5.2.0Sebagai sebahagian daripada pendekatan pembolehubah CSS Bootstrap yang berkembang, dropdown kini menggunakan pembolehubah CSS tempatan .dropdown-menu
untuk penyesuaian masa nyata yang dipertingkatkan. Nilai untuk pembolehubah CSS ditetapkan melalui Sass, jadi penyesuaian Sass masih disokong juga.
--#{$prefix}dropdown-zindex: #{$zindex-dropdown};
--#{$prefix}dropdown-min-width: #{$dropdown-min-width};
--#{$prefix}dropdown-padding-x: #{$dropdown-padding-x};
--#{$prefix}dropdown-padding-y: #{$dropdown-padding-y};
--#{$prefix}dropdown-spacer: #{$dropdown-spacer};
@include rfs($dropdown-font-size, --#{$prefix}dropdown-font-size);
--#{$prefix}dropdown-color: #{$dropdown-color};
--#{$prefix}dropdown-bg: #{$dropdown-bg};
--#{$prefix}dropdown-border-color: #{$dropdown-border-color};
--#{$prefix}dropdown-border-radius: #{$dropdown-border-radius};
--#{$prefix}dropdown-border-width: #{$dropdown-border-width};
--#{$prefix}dropdown-inner-border-radius: #{$dropdown-inner-border-radius};
--#{$prefix}dropdown-divider-bg: #{$dropdown-divider-bg};
--#{$prefix}dropdown-divider-margin-y: #{$dropdown-divider-margin-y};
--#{$prefix}dropdown-box-shadow: #{$dropdown-box-shadow};
--#{$prefix}dropdown-link-color: #{$dropdown-link-color};
--#{$prefix}dropdown-link-hover-color: #{$dropdown-link-hover-color};
--#{$prefix}dropdown-link-hover-bg: #{$dropdown-link-hover-bg};
--#{$prefix}dropdown-link-active-color: #{$dropdown-link-active-color};
--#{$prefix}dropdown-link-active-bg: #{$dropdown-link-active-bg};
--#{$prefix}dropdown-link-disabled-color: #{$dropdown-link-disabled-color};
--#{$prefix}dropdown-item-padding-x: #{$dropdown-item-padding-x};
--#{$prefix}dropdown-item-padding-y: #{$dropdown-item-padding-y};
--#{$prefix}dropdown-header-color: #{$dropdown-header-color};
--#{$prefix}dropdown-header-padding-x: #{$dropdown-header-padding-x};
--#{$prefix}dropdown-header-padding-y: #{$dropdown-header-padding-y};
Penyesuaian melalui pembolehubah CSS boleh dilihat pada .dropdown-menu-dark
kelas di mana kami mengatasi nilai tertentu tanpa menambah pemilih CSS pendua.
--#{$prefix}dropdown-color: #{$dropdown-dark-color};
--#{$prefix}dropdown-bg: #{$dropdown-dark-bg};
--#{$prefix}dropdown-border-color: #{$dropdown-dark-border-color};
--#{$prefix}dropdown-box-shadow: #{$dropdown-dark-box-shadow};
--#{$prefix}dropdown-link-color: #{$dropdown-dark-link-color};
--#{$prefix}dropdown-link-hover-color: #{$dropdown-dark-link-hover-color};
--#{$prefix}dropdown-divider-bg: #{$dropdown-dark-divider-bg};
--#{$prefix}dropdown-link-hover-bg: #{$dropdown-dark-link-hover-bg};
--#{$prefix}dropdown-link-active-color: #{$dropdown-dark-link-active-color};
--#{$prefix}dropdown-link-active-bg: #{$dropdown-dark-link-active-bg};
--#{$prefix}dropdown-link-disabled-color: #{$dropdown-dark-link-disabled-color};
--#{$prefix}dropdown-header-color: #{$dropdown-dark-header-color};
Pembolehubah Sass
Pembolehubah untuk semua dropdown:
$dropdown-min-width: 10rem;
$dropdown-padding-x: 0;
$dropdown-padding-y: .5rem;
$dropdown-spacer: .125rem;
$dropdown-font-size: $font-size-base;
$dropdown-color: $body-color;
$dropdown-bg: $white;
$dropdown-border-color: var(--#{$prefix}border-color-translucent);
$dropdown-border-radius: $border-radius;
$dropdown-border-width: $border-width;
$dropdown-inner-border-radius: subtract($dropdown-border-radius, $dropdown-border-width);
$dropdown-divider-bg: $dropdown-border-color;
$dropdown-divider-margin-y: $spacer * .5;
$dropdown-box-shadow: $box-shadow;
$dropdown-link-color: $gray-900;
$dropdown-link-hover-color: shade-color($dropdown-link-color, 10%);
$dropdown-link-hover-bg: $gray-200;
$dropdown-link-active-color: $component-active-color;
$dropdown-link-active-bg: $component-active-bg;
$dropdown-link-disabled-color: $gray-500;
$dropdown-item-padding-y: $spacer * .25;
$dropdown-item-padding-x: $spacer;
$dropdown-header-color: $gray-600;
$dropdown-header-padding-x: $dropdown-item-padding-x;
$dropdown-header-padding-y: $dropdown-padding-y;
// fusv-disable
$dropdown-header-padding: $dropdown-header-padding-y $dropdown-header-padding-x; // Deprecated in v5.2.0
// fusv-enable
Pembolehubah untuk dropdown gelap :
$dropdown-dark-color: $gray-300;
$dropdown-dark-bg: $gray-800;
$dropdown-dark-border-color: $dropdown-border-color;
$dropdown-dark-divider-bg: $dropdown-divider-bg;
$dropdown-dark-box-shadow: null;
$dropdown-dark-link-color: $dropdown-dark-color;
$dropdown-dark-link-hover-color: $white;
$dropdown-dark-link-hover-bg: rgba($white, .15);
$dropdown-dark-link-active-color: $dropdown-link-active-color;
$dropdown-dark-link-active-bg: $dropdown-link-active-bg;
$dropdown-dark-link-disabled-color: $gray-500;
$dropdown-dark-header-color: $gray-500;
Pembolehubah untuk karet berasaskan CSS yang menunjukkan interaktiviti lungsur turun:
$caret-width: .3em;
$caret-vertical-align: $caret-width * .85;
$caret-spacing: $caret-width * .85;
Campuran
Mixin digunakan untuk menjana karet berasaskan CSS dan boleh didapati dalam scss/mixins/_caret.scss
.
@mixin caret-down {
border-top: $caret-width solid;
border-right: $caret-width solid transparent;
border-bottom: 0;
border-left: $caret-width solid transparent;
}
@mixin caret-up {
border-top: 0;
border-right: $caret-width solid transparent;
border-bottom: $caret-width solid;
border-left: $caret-width solid transparent;
}
@mixin caret-end {
border-top: $caret-width solid transparent;
border-right: 0;
border-bottom: $caret-width solid transparent;
border-left: $caret-width solid;
}
@mixin caret-start {
border-top: $caret-width solid transparent;
border-right: $caret-width solid;
border-bottom: $caret-width solid transparent;
}
@mixin caret($direction: down) {
@if $enable-caret {
&::after {
display: inline-block;
margin-left: $caret-spacing;
vertical-align: $caret-vertical-align;
content: "";
@if $direction == down {
@include caret-down();
} @else if $direction == up {
@include caret-up();
} @else if $direction == end {
@include caret-end();
}
}
@if $direction == start {
&::after {
display: none;
}
&::before {
display: inline-block;
margin-right: $caret-spacing;
vertical-align: $caret-vertical-align;
content: "";
@include caret-start();
}
}
&:empty::after {
margin-left: 0;
}
}
}
Penggunaan
Melalui atribut data atau JavaScript, pemalam lungsur turun menogol kandungan tersembunyi (menu lungsur) dengan menogol .show
kelas pada induk .dropdown-menu
. Atribut data-bs-toggle="dropdown"
ini bergantung kepada untuk menutup menu lungsur turun pada peringkat aplikasi, jadi adalah idea yang baik untuk sentiasa menggunakannya.
mouseover
pengendali kosong kepada anak-anak terdekat
<body>
unsur tersebut. Penggodaman yang diakui jelik ini diperlukan untuk mengatasi masalah
dalam delegasi acara iOS , yang sebaliknya akan menghalang ketik di mana-mana di luar menu lungsur daripada mencetuskan kod yang menutup menu lungsur. Setelah menu lungsur ditutup,
mouseover
pengendali kosong tambahan ini dialih keluar.
Melalui atribut data
Tambahkan data-bs-toggle="dropdown"
pada pautan atau butang untuk menogol lungsur turun.
<div class="dropdown">
<button type="button" data-bs-toggle="dropdown" aria-expanded="false">
Dropdown trigger
</button>
<ul class="dropdown-menu">
...
</ul>
</div>
Melalui JavaScript
Panggil lungsur turun melalui JavaScript:
const dropdownElementList = document.querySelectorAll('.dropdown-toggle')
const dropdownList = [...dropdownElementList].map(dropdownToggleEl => new bootstrap.Dropdown(dropdownToggleEl))
data-bs-toggle="dropdown"
masih diperlukan
Tidak kira sama ada anda memanggil lungsur turun melalui JavaScript atau sebaliknya menggunakan data-api, data-bs-toggle="dropdown"
sentiasa diperlukan untuk hadir pada elemen pencetus lungsur turun.
Pilihan
Memandangkan pilihan boleh dihantar melalui atribut data atau JavaScript, anda boleh menambahkan nama pilihan pada data-bs-
, seperti dalam data-bs-animation="{value}"
. Pastikan anda menukar jenis kes bagi nama pilihan daripada " camelCase " kepada " kebab-case " apabila menghantar pilihan melalui atribut data. Sebagai contoh, gunakan data-bs-custom-class="beautifier"
bukannya data-bs-customClass="beautifier"
.
Mulai Bootstrap 5.2.0, semua komponen menyokong atribut data simpanan percubaandata-bs-config
yang boleh menempatkan konfigurasi komponen ringkas sebagai rentetan JSON. Apabila elemen mempunyai data-bs-config='{"delay":0, "title":123}'
dan data-bs-title="456"
atribut, nilai akhir title
akan menjadi 456
dan atribut data yang berasingan akan mengatasi nilai yang diberikan pada data-bs-config
. Selain itu, atribut data sedia ada dapat menempatkan nilai JSON seperti data-bs-delay='{"show":0,"hide":150}'
.
Nama | taip | Lalai | Penerangan |
---|---|---|---|
autoClose |
boolean, rentetan | true |
Konfigurasikan gelagat auto tutup menu lungsur:
|
boundary |
rentetan, unsur | 'clippingParents' |
Sempadan kekangan limpahan menu lungsur (hanya digunakan pada pengubah suai preventOverflow Popper). Secara lalai ia clippingParents dan boleh menerima rujukan HTMLElement (melalui JavaScript sahaja). Untuk maklumat lanjut rujuk kepada Popper's detectOverflow docs . |
display |
tali | 'dynamic' |
Secara lalai, kami menggunakan Popper untuk kedudukan dinamik. Lumpuhkan ini dengan static . |
offset |
tatasusunan, rentetan, fungsi | [0, 2] |
Mengimbangi lungsur turun berbanding sasarannya. Anda boleh menghantar rentetan dalam atribut data dengan nilai dipisahkan koma seperti: data-bs-offset="10,20" . Apabila fungsi digunakan untuk menentukan ofset, ia dipanggil dengan objek yang mengandungi peletakan popper, rujukan, dan popper rects sebagai hujah pertamanya. Nod DOM elemen pencetus diluluskan sebagai hujah kedua. Fungsi mesti mengembalikan tatasusunan dengan dua nombor: tergelincir , jarak . Untuk maklumat lanjut rujuk kepada dokumen offset Popper . |
popperConfig |
null, objek, fungsi | null |
Untuk menukar konfigurasi Popper lalai Bootstrap, lihat konfigurasi Popper . Apabila fungsi digunakan untuk mencipta konfigurasi Popper, ia dipanggil dengan objek yang mengandungi konfigurasi Popper lalai Bootstrap. Ia membantu anda menggunakan dan menggabungkan lalai dengan konfigurasi anda sendiri. Fungsi mesti mengembalikan objek konfigurasi untuk Popper. |
reference |
rentetan, unsur, objek | 'toggle' |
Elemen rujukan menu lungsur turun. Menerima nilai 'toggle' , 'parent' , rujukan HTMLElement atau objek yang menyediakan getBoundingClientRect . Untuk maklumat lanjut rujuk kepada dokumen pembina Popper dan dokumen elemen maya . |
Menggunakan fungsi denganpopperConfig
const dropdown = new bootstrap.Dropdown(element, {
popperConfig(defaultBsPopperConfig) {
// const newPopperConfig = {...}
// use defaultBsPopperConfig if needed...
// return newPopperConfig
}
})
Kaedah
Kaedah | Penerangan |
---|---|
dispose |
Memusnahkan lungsur turun elemen. (Mengalih keluar data yang disimpan pada elemen DOM) |
getInstance |
Kaedah statik yang membolehkan anda mendapatkan contoh lungsur turun yang dikaitkan dengan elemen DOM, anda boleh menggunakannya seperti ini: bootstrap.Dropdown.getInstance(element) . |
getOrCreateInstance |
Kaedah statik yang mengembalikan contoh lungsur turun yang dikaitkan dengan elemen DOM atau mencipta yang baharu sekiranya ia tidak dimulakan. Anda boleh menggunakannya seperti ini: bootstrap.Dropdown.getOrCreateInstance(element) . |
hide |
Menyembunyikan menu lungsur turun bar navigasi tertentu atau navigasi tab. |
show |
Menunjukkan menu lungsur turun bar navigasi tertentu atau navigasi tab. |
toggle |
Togol menu lungsur turun bar navigasi yang diberikan atau navigasi tab. |
update |
Mengemas kini kedudukan lungsur turun elemen. |
Peristiwa
Semua acara lungsur turun dicetuskan pada elemen togol dan kemudian menggelembung. Jadi anda juga boleh menambah pendengar acara pada .dropdown-menu
elemen induk '. hide.bs.dropdown
dan hidden.bs.dropdown
acara mempunyai clickEvent
sifat (hanya apabila jenis Acara asal ialah click
) yang mengandungi Objek Acara untuk acara klik.
Jenis acara | Penerangan |
---|---|
hide.bs.dropdown |
Menyala serta-merta apabila hide kaedah contoh telah dipanggil. |
hidden.bs.dropdown |
Dicetuskan apabila dropdown selesai disembunyikan daripada pengguna dan peralihan CSS telah selesai. |
show.bs.dropdown |
Menyala serta-merta apabila show kaedah contoh dipanggil. |
shown.bs.dropdown |
Dicetuskan apabila lungsur turun telah dilihat kepada pengguna dan peralihan CSS telah selesai. |
const myDropdown = document.getElementById('myDropdown')
myDropdown.addEventListener('show.bs.dropdown', event => {
// do something...
})