Slaan oor na hoofinhoud Slaan oor na dokumentnavigasie
Check
in English

Aftrekkies

Wissel kontekstuele oorlegsels vir die vertoon van lyste skakels en meer met die Bootstrap-aftrek-inprop.

Oorsig

Aftrekkies is wisselbare, kontekstuele oorlegsels vir die vertoon van lyste skakels en meer. Hulle word interaktief gemaak met die ingeslote Bootstrap-aftreklys JavaScript-inprop. Hulle word gewissel deur te klik, nie deur te beweeg nie; dit is ' n doelbewuste ontwerpbesluit .

Dropdowns is gebou op 'n derdeparty-biblioteek, Popper , wat dinamiese posisionering en kykpoortbespeuring bied. Maak seker dat jy popper.min.js voor Bootstrap se JavaScript insluit of gebruik bootstrap.bundle.min.js/ bootstrap.bundle.jswat Popper bevat. Popper word nie gebruik om aftrekkies in navigasiebalke te posisioneer nie, aangesien dinamiese posisionering nie nodig is nie.

Toeganklikheid

Die WAI ARIA - standaard definieer 'n werklike role="menu"legstuk , maar dit is spesifiek vir toepassingagtige spyskaarte wat aksies of funksies aktiveer. ARIA -kieslyste kan slegs kieslys-items, bokskieslysitems, radioknoppie-kieslysitems, radioknoppiegroepe en subkieslyste bevat.

Bootstrap se aftreklys, aan die ander kant, is ontwerp om generies te wees en van toepassing op 'n verskeidenheid situasies en opmaakstrukture. Dit is byvoorbeeld moontlik om aftreklys te skep wat bykomende invoere en vormkontroles bevat, soos soekvelde of aanmeldvorms. Om hierdie rede verwag Bootstrap nie (en voeg ook nie outomaties by) enige van die roleen aria-kenmerke wat nodig is vir ware ARIA- spyskaarte nie. Skrywers sal hierdie meer spesifieke eienskappe self moet insluit.

Bootstrap voeg egter ingeboude ondersteuning by vir die meeste standaard sleutelbordkieslysinteraksies, soos die vermoë om deur individuele .dropdown-itemelemente te beweeg deur die wysersleutels te gebruik en die spyskaart met die ESCsleutel toe te maak.

Voorbeelde

Draai die aftreklys se skakelaar (jou knoppie of skakel) en die aftreklys binne .dropdown, of 'n ander element wat verklaar position: relative;. Dropdowns kan geaktiveer word vanaf <a>of <button>elemente om beter by jou potensiële behoeftes te pas. Die voorbeelde wat hier gewys word, gebruik semantiese <ul>elemente waar toepaslik, maar pasgemaakte opmaak word ondersteun.

Enkele knoppie

Enige enkele .btnkan verander word in 'n aftrek-skakelaar met 'n paar opmaakveranderinge. Hier is hoe jy hulle met enige van die <button>elemente kan laat werk:

html
<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>

En met <a>elemente:

html
<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>

Die beste deel is dat jy dit ook met enige knoppievariant kan doen:

<!-- 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>

Verdeel knoppie

Skep eweneens verdeelknoppie-aftrekkies met feitlik dieselfde opmaak as enkelknoppie-aftrekkies, maar met die byvoeging van .dropdown-toggle-splitvir behoorlike spasiëring rondom die aftreklys.

Ons gebruik hierdie ekstra klas om die horisontale paddingaan weerskante van die karet met 25% te verminder en verwyder die margin-leftwat bygevoeg is vir gereelde knoppie-aftrekkies. Daardie ekstra veranderinge hou die karet gesentreer in die verdeelknoppie en bied 'n meer toepaslike grootte trefarea langs die hoofknoppie.

<!-- 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>

Grootte

Knoppie-aftrekkies werk met knoppies van alle groottes, insluitend verstek- en verdeel-aftrekkiesknoppies.

<!-- 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>

Donker aftreklys

Kies donkerder aftreklys om by 'n donker navigasiebalk of pasgemaakte styl te pas deur by .dropdown-menu-dark'n bestaande by te voeg .dropdown-menu. Geen veranderinge word aan die aftrek-items vereis nie.

html
<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>

En om dit in 'n navigasiebalk te gebruik:

html
<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>

Aanwysings

RTL

Aanwysings word weerspieël wanneer Bootstrap in RTL gebruik word, betekenis .dropstartsal aan die regterkant verskyn.

Gesentreer

Maak die aftreklys gesentreer onder die skakelaar met .dropdown-centerop die ouerelement.

html
<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

Sneller aftrekkieslyste bo elemente deur by .dropupdie ouerelement by te voeg.

<!-- 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>

Drop-up gesentreer

Maak die keuselys gesentreer bo die skakelaar met .dropup-centerop die ouerelement.

html
<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

Sneller aftrekkieslys aan die regterkant van die elemente deur by .dropenddie ouerelement te voeg.

<!-- 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

Sneller aftrekkieslys aan die linkerkant van die elemente deur by .dropstartdie ouerelement te voeg.

<!-- 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>

Jy kan <a>of <button>elemente as dropdown items gebruik.

html
<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>

Jy kan ook nie-interaktiewe dropdown items skep met .dropdown-item-text. Stileer gerus verder met pasgemaakte CSS of tekshulpmiddels.

html
<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>

Aktief

Voeg .activeby items in die aftreklys om hulle as aktief te styl . Om die aktiewe toestand aan ondersteunende tegnologieë oor te dra, gebruik die aria-currentkenmerk — gebruik die pagewaarde vir die huidige bladsy, of truevir die huidige item in 'n stel.

html
<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>

Gestrem

Voeg .disabledby items in die aftreklys om dit as gedeaktiveer te styl .

html
<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>

By verstek word 'n aftreklys outomaties 100% van bo en langs die linkerkant van sy ouer geposisioneer. Jy kan dit verander met die rigtinggewende .drop*klasse, maar jy kan dit ook met addisionele wysigerklasse beheer.

Voeg .dropdown-menu-endby 'n .dropdown-menuna regs-belyn die aftreklys. Aanwysings word weerspieël wanneer Bootstrap in RTL gebruik word, wat beteken .dropdown-menu-endsal aan die linkerkant verskyn.

Let op! Aftrekkies word geposisioneer danksy Popper, behalwe wanneer dit in 'n navigasiebalk vervat is.
html
<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>

Responsiewe belyning

As jy responsiewe belyning wil gebruik, deaktiveer dinamiese posisionering deur die data-bs-display="static"kenmerk by te voeg en die responsiewe variasieklasse te gebruik.

Om die aftreklys regs.dropdown-menu{-sm|-md|-lg|-xl|-xxl}-end in lyn te bring met die gegewe breekpunt of groter, voeg by .

html
<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>

Om die aftreklys links met die gegewe breekpunt of groter te belyn , voeg .dropdown-menu-enden by .dropdown-menu{-sm|-md|-lg|-xl|-xxl}-start.

html
<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>

Let daarop dat jy nie 'n data-bs-display="static"kenmerk by aftrekknoppies in navigasiebalke hoef by te voeg nie, aangesien Popper nie in navigasiebalke gebruik word nie.

Belyningsopsies

Met die meeste van die opsies wat hierbo getoon word, is hier 'n klein kombuiswasbak-demo van verskeie aftrekbelyningsopsies op een plek.

html
<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>

Opskrifte

Voeg 'n kopskrif by om afdelings van handelinge in enige aftreklys te benoem.

html
<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>

Verdelers

Skei groepe verwante spyskaartitems met 'n verdeler.

html
<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

Plaas enige vryvorm teks binne 'n aftreklys met teks en gebruik spasiëring nutsprogramme . Let daarop dat jy waarskynlik bykomende groottestyle sal benodig om die spyskaartwydte te beperk.

html
<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>

Vorms

Plaas 'n vorm in 'n aftrekkieslys, of maak dit in 'n aftreklys, en gebruik marge- of opvullingshulpmiddels om dit die negatiewe spasie te gee wat u benodig.

html
<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>
html
<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>

Gebruik data-bs-offsetof data-bs-referenceom die ligging van die aftreklys te verander.

html
<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>

Outomatiese sluitgedrag

By verstek word die aftreklys gesluit wanneer binne of buite die aftreklys geklik word. Jy kan die autoCloseopsie gebruik om hierdie gedrag van die aftreklys te verander.

html
<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

Veranderlikes

Bygevoeg in v5.2.0

As deel van Bootstrap se ontwikkelende CSS-veranderlikebenadering, gebruik dropdowns nou plaaslike CSS-veranderlikes aan .dropdown-menuvir verbeterde intydse aanpassing. Waardes vir die CSS-veranderlikes word via Sass ingestel, dus word Sass-aanpassing ook steeds ondersteun.

  --#{$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};
  

Pasmaak deur CSS veranderlikes kan gesien word in die .dropdown-menu-darkklas waar ons spesifieke waardes ignoreer sonder om duplikaat CSS keurders by te voeg.

  --#{$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};
  

Sass veranderlikes

Veranderlikes vir alle aftreklys:

$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

Veranderlikes vir die donker aftreklys :

$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;

Veranderlikes vir die CSS-gebaseerde karets wat 'n aftreklys se interaktiwiteit aandui:

$caret-width:                 .3em;
$caret-vertical-align:        $caret-width * .85;
$caret-spacing:               $caret-width * .85;

Mengsels

Mixins word gebruik om die CSS-gebaseerde karets te genereer en kan gevind word in 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;
    }
  }
}

Gebruik

Via data-kenmerke of JavaScript skakel die aftrek-inprop verborge inhoud (aftrekkieslyste) deur die .showklas op die ouer te skakel .dropdown-menu. Daar data-bs-toggle="dropdown"word op die kenmerk staatgemaak vir die sluiting van aftreklyste op 'n toepassingsvlak, so dit is 'n goeie idee om dit altyd te gebruik.

Op touch-geaktiveerde toestelle, die opening van 'n aftreklys voeg leë mouseoverhanteerders by die onmiddellike kinders van die <body>element. Hierdie weliswaar lelike hack is nodig om 'n eienaardigheid in iOS se gebeurtenisafvaardiging te omseil , wat andersins sou verhoed dat 'n tik op enige plek buite die aftreklys die kode aktiveer wat die aftreklys toemaak. Sodra die aftreklys gesluit is, word hierdie bykomende leë mouseoverhanteerders verwyder.

Via data-eienskappe

Voeg data-bs-toggle="dropdown"by 'n skakel of knoppie om 'n aftreklys te wissel.

<div class="dropdown">
  <button type="button" data-bs-toggle="dropdown" aria-expanded="false">
    Dropdown trigger
  </button>
  <ul class="dropdown-menu">
    ...
  </ul>
</div>

Via JavaScript

Bel die aftreklys via JavaScript:

const dropdownElementList = document.querySelectorAll('.dropdown-toggle')
const dropdownList = [...dropdownElementList].map(dropdownToggleEl => new bootstrap.Dropdown(dropdownToggleEl))
data-bs-toggle="dropdown"steeds benodig

Ongeag of jy jou aftreklys via JavaScript oproep of eerder die data-api gebruik, data-bs-toggle="dropdown"moet altyd teenwoordig wees op die aftreklys se sneller-element.

Opsies

Aangesien opsies deur data-kenmerke of JavaScript deurgegee kan word, kan jy 'n opsienaam byvoeg data-bs-, soos in data-bs-animation="{value}". Maak seker dat jy die kastipe van die opsienaam verander van " camelCase " na " kebab-case " wanneer die opsies deur data-kenmerke deurgegee word. Gebruik byvoorbeeld in data-bs-custom-class="beautifier"plaas van data-bs-customClass="beautifier".

Vanaf Bootstrap 5.2.0 ondersteun alle komponente 'n eksperimentele gereserveerde data-kenmerk data-bs-configwat eenvoudige komponentkonfigurasie as 'n JSON-string kan huisves. Wanneer 'n element data-bs-config='{"delay":0, "title":123}'en data-bs-title="456"kenmerke het, sal die finale titlewaarde wees 456en die afsonderlike data-kenmerke sal waardes wat op gegee word, ignoreer data-bs-config. Daarbenewens kan bestaande data-kenmerke JSON-waardes soos data-bs-delay='{"show":0,"hide":150}'.

Naam Tik Verstek Beskrywing
autoClose boolean, string true Stel die outomatiese sluitingsgedrag van die aftreklys op:
  • true- die aftreklys sal gesluit word deur buite of binne die aftreklys te klik.
  • false- die aftreklys sal gesluit word deur op die skakelknoppie te klik en handmatig te bel hideof togglemetode. (Sal ook nie gesluit word deur die escsleutel te druk nie)
  • 'inside'- die aftreklys sal gesluit word (slegs) deur binne die aftreklys te klik.
  • 'outside'- die aftreklys sal gesluit word (slegs) deur buite die aftreklys te klik.
Let wel: die aftreklys kan altyd met die ESCsleutel gesluit word.
boundary string, element 'clippingParents' Oorloop beperking grens van die aftreklys (is slegs van toepassing op Popper se preventOverflow wysiger). By verstek is clippingParentsen kan dit 'n HTMLElement-verwysing aanvaar (slegs via JavaScript). Vir meer inligting, verwys na Popper se detectOverflow-dokumente .
display string 'dynamic' By verstek gebruik ons ​​Popper vir dinamiese posisionering. Deaktiveer dit met static.
offset skikking, string, funksie [0, 2] Verskuiwing van die aftreklys relatief tot sy teiken. Jy kan 'n string in data-kenmerke met kommageskeide waardes soos: data-bs-offset="10,20". Wanneer 'n funksie gebruik word om die offset te bepaal, word dit opgeroep met 'n objek wat die drukkerplasing, die verwysing en drukkerrekse as sy eerste argument bevat. Die snellerelement DOM-nodus word as die tweede argument deurgegee. Die funksie moet 'n skikking met twee getalle terugstuur: gly , afstand . Vir meer inligting, verwys na Popper se offset-dokumente .
popperConfig nul, voorwerp, funksie null Sien Popper se konfigurasie om Bootstrap se verstek Popper-konfigurasie te verander . Wanneer 'n funksie gebruik word om die Popper-konfigurasie te skep, word dit genoem met 'n voorwerp wat die Bootstrap se verstek Popper-konfigurasie bevat. Dit help jou om die verstek met jou eie konfigurasie te gebruik en saam te voeg. Die funksie moet 'n konfigurasie-objek vir Popper terugstuur.
reference string, element, voorwerp 'toggle' Verwysingselement van die aftreklys. Aanvaar die waardes van 'toggle'' 'parent'n HTMLElement-verwysing of 'n objek wat verskaf getBoundingClientRect. Vir meer inligting verwys na Popper se konstruktor dokumente en virtuele element dokumente .

Die gebruik van funksie metpopperConfig

const dropdown = new bootstrap.Dropdown(element, {
  popperConfig(defaultBsPopperConfig) {
    // const newPopperConfig = {...}
    // use defaultBsPopperConfig if needed...
    // return newPopperConfig
  }
})

Metodes

Metode Beskrywing
dispose Vernietig 'n element se aftreklys. (Verwyder gestoorde data op die DOM-element)
getInstance Statiese metode wat jou toelaat om die dropdown-instansie te kry wat met 'n DOM-element geassosieer word, jy kan dit so gebruik: bootstrap.Dropdown.getInstance(element).
getOrCreateInstance Statiese metode wat 'n dropdown-instansie wat met 'n DOM-element geassosieer word, terugstuur of 'n nuwe een skep ingeval dit nie geïnisialiseer is nie. Jy kan dit so gebruik: bootstrap.Dropdown.getOrCreateInstance(element).
hide Versteek die aftreklys van 'n gegewe navigasiebalk of navigasie met oortjies.
show Wys die aftreklys van 'n gegewe navigasiebalk of navigasie met oortjies.
toggle Wissel die aftreklys van 'n gegewe navigasiebalk of navigasie met oortjies.
update Dateer die posisie van 'n element se aftreklys op.

Gebeurtenisse

Alle aftrek-gebeurtenisse word by die wisselelement afgevuur en dan opgeborrel. U kan dus ook gebeurtenisluisteraars by die ouerelement byvoeg .dropdown-menu. hide.bs.dropdownen hidden.bs.dropdowngebeurtenisse het 'n clickEventeienskap (slegs wanneer die oorspronklike gebeurtenis tipe is click) wat 'n gebeurtenisobjek vir die klikgebeurtenis bevat.

Soort gebeurtenis Beskrywing
hide.bs.dropdown Vuur onmiddellik wanneer die hideinstansiemetode geroep is.
hidden.bs.dropdown Word afgevuur wanneer die aftreklys klaar vir die gebruiker versteek is en CSS-oorgange voltooi is.
show.bs.dropdown Vuur onmiddellik wanneer die showinstansiemetode geroep word.
shown.bs.dropdown Word afgevuur wanneer die aftreklys vir die gebruiker sigbaar gemaak is en CSS-oorgange voltooi is.
const myDropdown = document.getElementById('myDropdown')
myDropdown.addEventListener('show.bs.dropdown', event => {
  // do something...
})