Passer au contenu principal Passer à la navigation dans les documents
in English

Listes déroulantes

Basculez les superpositions contextuelles pour afficher des listes de liens et plus encore avec le plugin déroulant Bootstrap.

Aperçu

Les listes déroulantes sont des superpositions contextuelles basculables pour afficher des listes de liens et plus encore. Ils sont rendus interactifs avec le plugin JavaScript déroulant Bootstrap inclus. Ils sont activés en cliquant, pas en survolant ; il s'agit d'une décision de conception intentionnelle .

Les listes déroulantes sont construites sur une bibliothèque tierce, Popper , qui fournit un positionnement dynamique et une détection de la fenêtre d'affichage. Assurez-vous d'inclure popper.min.js avant le JavaScript de Bootstrap ou utilisez bootstrap.bundle.min.js/ bootstrap.bundle.jsqui contient Popper. Popper n'est pas utilisé pour positionner les listes déroulantes dans les barres de navigation, car le positionnement dynamique n'est pas requis.

Accessibilité

La norme WAI ARIA définit un role="menu"widget réel , mais cela est spécifique aux menus de type application qui déclenchent des actions ou des fonctions. Les menus ARIA ne peuvent contenir que des éléments de menu, des éléments de menu de cases à cocher, des éléments de menu de boutons radio, des groupes de boutons radio et des sous-menus.

Les listes déroulantes de Bootstrap, en revanche, sont conçues pour être génériques et applicables à une variété de situations et de structures de balisage. Par exemple, il est possible de créer des listes déroulantes contenant des entrées supplémentaires et des contrôles de formulaire, tels que des champs de recherche ou des formulaires de connexion. Pour cette raison, Bootstrap n'attend (ni n'ajoute automatiquement) aucun des attributs roleet requis pour les vrais menus ARIA . Les auteurs devront inclure eux-mêmes ces attributs plus spécifiques.aria-

Cependant, Bootstrap ajoute une prise en charge intégrée pour la plupart des interactions de menu clavier standard, telles que la possibilité de parcourir des .dropdown-iteméléments individuels à l'aide des touches du curseur et de fermer le menu avec la ESCtouche .

Exemples

Enveloppez la bascule de la liste déroulante (votre bouton ou lien) et le menu déroulant dans .dropdown, ou un autre élément qui déclare position: relative;. Les listes déroulantes peuvent être déclenchées à partir de <a>ou d' <button>éléments pour mieux répondre à vos besoins potentiels. Les exemples présentés ici utilisent des éléments sémantiques , le <ul>cas échéant, mais le balisage personnalisé est pris en charge.

Bouton unique

Tout single .btnpeut être transformé en une bascule déroulante avec quelques modifications de balisage. Voici comment vous pouvez les utiliser avec l'un ou l'autre des <button>éléments :

<div class="dropdown">
  <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton1" data-bs-toggle="dropdown" aria-expanded="false">
    Dropdown button
  </button>
  <ul class="dropdown-menu" aria-labelledby="dropdownMenuButton1">
    <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>

Et avec <a>des éléments :

<div class="dropdown">
  <a class="btn btn-secondary dropdown-toggle" href="#" role="button" id="dropdownMenuLink" data-bs-toggle="dropdown" aria-expanded="false">
    Dropdown link
  </a>

  <ul class="dropdown-menu" aria-labelledby="dropdownMenuLink">
    <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>

La meilleure partie est que vous pouvez également le faire avec n'importe quelle variante de bouton :

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

Bouton Fractionner

De même, créez des listes déroulantes de boutons divisés avec pratiquement le même balisage que les listes déroulantes à un seul bouton, mais avec l'ajout d' .dropdown-toggle-splitun espacement approprié autour du curseur déroulant.

Nous utilisons cette classe supplémentaire pour réduire l'horizontale paddingde chaque côté du caret de 25 % et supprimer ce margin-leftqui est ajouté pour les listes déroulantes de boutons régulières. Ces modifications supplémentaires maintiennent le caret centré dans le bouton partagé et fournissent une zone de frappe de taille plus appropriée à côté du bouton principal.

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

Dimensionnement

Les listes déroulantes de boutons fonctionnent avec des boutons de toutes tailles, y compris les boutons déroulants par défaut et divisés.

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

Listes déroulantes sombres

Optez pour des listes déroulantes plus sombres pour correspondre à une barre de navigation sombre ou à un style personnalisé en ajoutant .dropdown-menu-darkà un fichier .dropdown-menu. Aucune modification n'est requise pour les éléments déroulants.

<div class="dropdown">
  <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton2" data-bs-toggle="dropdown" aria-expanded="false">
    Dropdown button
  </button>
  <ul class="dropdown-menu dropdown-menu-dark" aria-labelledby="dropdownMenuButton2">
    <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>

Et le mettre à utiliser dans une barre de navigation :

<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="#" id="navbarDarkDropdownMenuLink" role="button" data-bs-toggle="dropdown" aria-expanded="false">
            Dropdown
          </a>
          <ul class="dropdown-menu dropdown-menu-dark" aria-labelledby="navbarDarkDropdownMenuLink">
            <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>

les directions

RTL

Les directions sont reflétées lors de l'utilisation de Bootstrap dans RTL, la signification .dropstartapparaîtra sur le côté droit.

Déposer jusqu'à

Déclenchez des menus déroulants au-dessus des éléments en ajoutant .dropupà l'élément parent.

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

Dropright

Déclenchez des menus déroulants à droite des éléments en ajoutant .dropendà l'élément parent.

<!-- Default dropend button -->
<div class="btn-group dropend">
  <button type="button" class="btn btn-secondary dropdown-toggle" data-bs-toggle="dropdown" aria-expanded="false">
    Dropright
  </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 Dropright</span>
  </button>
  <ul class="dropdown-menu">
    <!-- Dropdown menu links -->
  </ul>
</div>

Dropleft

Déclenchez des menus déroulants à gauche des éléments en ajoutant .dropstartà l'élément parent.

<!-- 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">
  <div class="btn-group dropstart" role="group">
    <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>
  </div>
  <button type="button" class="btn btn-secondary">
    Split dropstart
  </button>
</div>

Vous pouvez utiliser les éléments <a>ou <button>comme éléments déroulants.

<div class="dropdown">
  <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenu2" data-bs-toggle="dropdown" aria-expanded="false">
    Dropdown
  </button>
  <ul class="dropdown-menu" aria-labelledby="dropdownMenu2">
    <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>

Vous pouvez également créer des éléments déroulants non interactifs avec .dropdown-item-text. N'hésitez pas à styliser davantage avec des utilitaires CSS ou de texte personnalisés.

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

Actif

Ajoutez .activeaux éléments dans la liste déroulante pour les définir comme actifs . Pour transmettre l'état actif aux technologies d'assistance, utilisez l' aria-currentattribut — en utilisant la pagevaleur de la page actuelle ou truede l'élément actuel dans un ensemble.

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

Handicapé

Ajoutez .disableddes éléments dans la liste déroulante pour les définir comme désactivés .

<ul class="dropdown-menu">
  <li><a class="dropdown-item" href="#">Regular link</a></li>
  <li><a class="dropdown-item disabled" href="#" tabindex="-1" aria-disabled="true">Disabled link</a></li>
  <li><a class="dropdown-item" href="#">Another link</a></li>
</ul>

Par défaut, un menu déroulant est automatiquement positionné à 100 % du haut et le long du côté gauche de son parent. Vous pouvez changer cela avec les .drop*classes directionnelles, mais vous pouvez également les contrôler avec des classes de modificateurs supplémentaires.

Ajouter .dropdown-menu-endà a .dropdown-menupour aligner à droite le menu déroulant. Les directions sont reflétées lors de l'utilisation de Bootstrap dans RTL, la signification .dropdown-menu-endapparaîtra sur le côté gauche.

La tête haute! Les listes déroulantes sont positionnées grâce à Popper sauf lorsqu'elles sont contenues dans une barre de navigation.
<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>

Alignement réactif

Si vous souhaitez utiliser l'alignement réactif, désactivez le positionnement dynamique en ajoutant l' data-bs-display="static"attribut et utilisez les classes de variantes réactives.

Pour aligner à droite le menu déroulant avec le point d'arrêt donné ou plus, ajoutez .dropdown-menu{-sm|-md|-lg|-xl|-xxl}-end.

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

Pour aligner à gauche le menu déroulant avec le point d'arrêt donné ou plus, ajoutez .dropdown-menu-endet .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>

Notez que vous n'avez pas besoin d'ajouter un data-bs-display="static"attribut aux boutons déroulants dans les barres de navigation, puisque Popper n'est pas utilisé dans les barres de navigation.

Options d'alignement

Prenant la plupart des options présentées ci-dessus, voici une petite démonstration d'évier de cuisine de diverses options d'alignement déroulant en un seul endroit.

<div class="btn-group">
  <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
    Dropdown
  </button>
  <ul class="dropdown-menu" aria-labelledby="dropdownMenuButton">
    <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>

En-têtes

Ajoutez un en-tête pour étiqueter les sections d'actions dans n'importe quel menu déroulant.

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

Diviseurs

Séparez les groupes d'éléments de menu associés avec un séparateur.

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

Texte

Placez n'importe quel texte de forme libre dans un menu déroulant avec du texte et utilisez des utilitaires d'espacement . Notez que vous aurez probablement besoin de styles de dimensionnement supplémentaires pour limiter la largeur du 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>

Formes

Placez un formulaire dans un menu déroulant ou transformez-le en menu déroulant et utilisez des utilitaires de marge ou de remplissage pour lui donner l'espace négatif dont vous avez besoin.

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

Utilisez data-bs-offsetou data-bs-referencepour modifier l'emplacement de la liste déroulante.

<div class="d-flex">
  <div class="dropdown me-1">
    <button type="button" class="btn btn-secondary dropdown-toggle" id="dropdownMenuOffset" data-bs-toggle="dropdown" aria-expanded="false" data-bs-offset="10,20">
      Offset
    </button>
    <ul class="dropdown-menu" aria-labelledby="dropdownMenuOffset">
      <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" id="dropdownMenuReference" data-bs-toggle="dropdown" aria-expanded="false" data-bs-reference="parent">
      <span class="visually-hidden">Toggle Dropdown</span>
    </button>
    <ul class="dropdown-menu" aria-labelledby="dropdownMenuReference">
      <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>

Comportement de fermeture automatique

Par défaut, le menu déroulant est fermé lorsque vous cliquez à l'intérieur ou à l'extérieur du menu déroulant. Vous pouvez utiliser l' autoCloseoption pour modifier ce comportement de la liste déroulante.

<div class="btn-group">
  <button class="btn btn-secondary dropdown-toggle" type="button" id="defaultDropdown" data-bs-toggle="dropdown" data-bs-auto-close="true" aria-expanded="false">
    Default dropdown
  </button>
  <ul class="dropdown-menu" aria-labelledby="defaultDropdown">
    <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" id="dropdownMenuClickableOutside" data-bs-toggle="dropdown" data-bs-auto-close="inside" aria-expanded="false">
    Clickable outside
  </button>
  <ul class="dropdown-menu" aria-labelledby="dropdownMenuClickableOutside">
    <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" id="dropdownMenuClickableInside" data-bs-toggle="dropdown" data-bs-auto-close="outside" aria-expanded="false">
    Clickable inside
  </button>
  <ul class="dropdown-menu" aria-labelledby="dropdownMenuClickableInside">
    <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" id="dropdownMenuClickable" data-bs-toggle="dropdown" data-bs-auto-close="false" aria-expanded="false">
    Manual close
  </button>
  <ul class="dropdown-menu" aria-labelledby="dropdownMenuClickable">
    <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>

Toupet

variables

Variables pour toutes les listes déroulantes :

$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:             rgba($black, .15);
$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($gray-900, 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:           $dropdown-padding-y $dropdown-item-padding-x;

Variables pour la liste déroulante sombre :

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

Variables pour les carets basés sur CSS qui indiquent l'interactivité d'une liste déroulante :

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

Mélanges

Les mixins sont utilisés pour générer les carets basés sur CSS et peuvent être trouvés dans 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;
    }
  }
}

Usage

Via les attributs de données ou JavaScript, le plugin déroulant bascule le contenu caché (menus déroulants) en basculant la .showclasse sur le parent .dropdown-menu. L' data-bs-toggle="dropdown"attribut est utilisé pour fermer les menus déroulants au niveau de l'application, c'est donc une bonne idée de toujours l'utiliser.

Sur les appareils tactiles, l'ouverture d'une liste déroulante ajoute des mouseovergestionnaires vides aux enfants immédiats de l' <body>élément. Ce piratage, certes laid, est nécessaire pour contourner une bizarrerie dans la délégation d'événements d'iOS , ce qui empêcherait autrement un appui n'importe où en dehors de la liste déroulante de déclencher le code qui ferme la liste déroulante. Une fois la liste déroulante fermée, ces mouseovergestionnaires vides supplémentaires sont supprimés.

Via les attributs de données

Ajouter data-bs-toggle="dropdown"à un lien ou à un bouton pour basculer vers une liste déroulante.

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

Via Javascript

Appelez les listes déroulantes via JavaScript :

var dropdownElementList = [].slice.call(document.querySelectorAll('.dropdown-toggle'))
var dropdownList = dropdownElementList.map(function (dropdownToggleEl) {
  return new bootstrap.Dropdown(dropdownToggleEl)
})
data-bs-toggle="dropdown"encore nécessaire

Que vous appeliez votre liste déroulante via JavaScript ou que vous utilisiez à la place l'API de données, data-bs-toggle="dropdown"il doit toujours être présent sur l'élément déclencheur de la liste déroulante.

Choix

Les options peuvent être transmises via des attributs de données ou JavaScript. Pour les attributs de données, ajoutez le nom de l'option à data-bs-, comme dans data-bs-offset="". Assurez-vous de changer le type de casse du nom de l'option de camelCase à kebab-case lors du passage des options via les attributs de données. Par exemple, au lieu d'utiliser data-bs-autoClose="false", utilisez data-bs-auto-close="false".

Nom Taper Défaut La description
boundary chaîne | élément 'clippingParents' Limite de contrainte de débordement du menu déroulant (s'applique uniquement au modificateur preventOverflow de Popper). Par défaut, c'est 'clippingParents'et peut accepter une référence HTMLElement (via JavaScript uniquement). Pour plus d'informations, reportez-vous à la documentation detectOverflow de Popper .
reference chaîne | élément | objet 'toggle' Elément de référence du menu déroulant. Accepte les valeurs de 'toggle', 'parent', une référence HTMLElement ou un objet fournissant getBoundingClientRect. Pour plus d'informations, reportez-vous à la documentation du constructeur de Popper et à la documentation de l'élément virtuel .
display chaîne de caractères 'dynamic' Par défaut, nous utilisons Popper pour le positionnement dynamique. Désactivez-le avec static.
offset tableau | chaîne | fonction [0, 2]

Décalage de la liste déroulante par rapport à sa cible. Vous pouvez transmettre une chaîne dans les attributs de données avec des valeurs séparées par des virgules comme :data-bs-offset="10,20"

Lorsqu'une fonction est utilisée pour déterminer le décalage, elle est appelée avec un objet contenant le placement du popper, la référence et les rectangles du popper comme premier argument. Le nœud DOM de l'élément déclencheur est passé comme deuxième argument. La fonction doit retourner un tableau avec deux nombres : .[skidding, distance]

Pour plus d'informations, reportez-vous à la documentation de décalage de Popper .

autoClose booléen | chaîne de caractères true

Configurez le comportement de fermeture automatique de la liste déroulante :

  • true- la liste déroulante sera fermée en cliquant à l'extérieur ou à l'intérieur du menu déroulant.
  • false- la liste déroulante sera fermée en cliquant sur le bouton bascule et en appelant manuellement hideou toggleméthode. (Aussi ne sera pas fermé en appuyant sur escla touche)
  • 'inside'- la liste déroulante sera fermée (uniquement) en cliquant à l'intérieur du menu déroulant.
  • 'outside'- la liste déroulante sera fermée (uniquement) en cliquant en dehors du menu déroulant.
popperConfig nul | objet | fonction null

Pour modifier la configuration Popper par défaut de Bootstrap, consultez Popper's configuration .

Lorsqu'une fonction est utilisée pour créer la configuration Popper, elle est appelée avec un objet qui contient la configuration Popper par défaut de Bootstrap. Il vous aide à utiliser et à fusionner la valeur par défaut avec votre propre configuration. La fonction doit renvoyer un objet de configuration pour Popper.

Utilisation de la fonction avecpopperConfig

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

Méthodes

Méthode La description
toggle Bascule le menu déroulant d'une barre de navigation donnée ou d'une navigation par onglets.
show Affiche le menu déroulant d'une barre de navigation donnée ou d'une navigation par onglets.
hide Masque le menu déroulant d'une barre de navigation donnée ou d'une navigation par onglets.
update Met à jour la position de la liste déroulante d'un élément.
dispose Détruit la liste déroulante d'un élément. (Supprime les données stockées sur l'élément DOM)
getInstance Méthode statique qui permet d'obtenir l'instance dropdown associée à un élément DOM, vous pouvez l'utiliser comme ceci :bootstrap.Dropdown.getInstance(element)
getOrCreateInstance Méthode statique qui renvoie une instance déroulante associée à un élément DOM ou en crée une nouvelle au cas où elle n'aurait pas été initialisée. Vous pouvez l'utiliser comme ceci :bootstrap.Dropdown.getOrCreateInstance(element)

Événements

Tous les événements de liste déroulante sont déclenchés sur l'élément de basculement, puis remontés. Ainsi, vous pouvez également ajouter des écouteurs d'événements sur l' .dropdown-menuélément parent de . hide.bs.dropdownet hidden.bs.dropdownles événements ont une clickEventpropriété (uniquement lorsque le type d'événement d'origine est click) qui contient un objet événement pour l'événement de clic.

Méthode La description
show.bs.dropdown Se déclenche immédiatement lorsque la méthode d'instance show est appelée.
shown.bs.dropdown Lancé lorsque la liste déroulante a été rendue visible à l'utilisateur et que les transitions CSS sont terminées.
hide.bs.dropdown Se déclenche immédiatement lorsque la méthode d'instance de masquage a été appelée.
hidden.bs.dropdown Lancé lorsque la liste déroulante a fini d'être masquée pour l'utilisateur et que les transitions CSS sont terminées.
var myDropdown = document.getElementById('myDropdown')
myDropdown.addEventListener('show.bs.dropdown', function () {
  // do something...
})