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.js , 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.js. Popper.js n'est pas utilisé pour positionner les listes déroulantes dans les barres de navigation, car le positionnement dynamique n'est pas requis.
Si vous construisez notre JavaScript à partir de la source, cela nécessiteutil.js .
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.
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 :
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.
Historiquement, le contenu du menu déroulant devait être des liens, mais ce n'est plus le cas avec la v4. Maintenant, vous pouvez éventuellement utiliser des <button>éléments dans vos listes déroulantes au lieu de simplement <a>s.
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.
Par défaut, un menu déroulant est automatiquement positionné à 100 % du haut et le long du côté gauche de son parent. Ajouter .dropdown-menu-rightà a .dropdown-menupour aligner à droite le menu déroulant.
La tête haute! Les dropdowns sont positionnés grâce à Popper.js (sauf lorsqu'ils sont contenus dans une navbar).
Alignement réactif
Si vous souhaitez utiliser l'alignement réactif, désactivez le positionnement dynamique en ajoutant l' data-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}-right.
Pour aligner à gauche le menu déroulant avec le point d'arrêt donné ou plus, ajoutez .dropdown-menu-rightet .dropdown-menu{-sm|-md|-lg|-xl}-left.
Notez que vous n'avez pas besoin d'ajouter un data-display="static"attribut aux boutons déroulants dans les barres de navigation, puisque Popper.js n'est pas utilisé dans les barres de navigation.
Contenu des menus
En-têtes
Ajoutez un en-tête pour étiqueter les sections d'actions dans n'importe quel menu déroulant.
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.
Quelques exemples de texte fluides dans le menu déroulant.
Et c'est plus un exemple de texte.
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.
Via les attributs de données ou JavaScript, le plug-in déroulant bascule le contenu masqué (menus déroulants) en basculant la .showclasse sur l'élément de la liste parent. L' data-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 gestionnaires vides ( $.noop) mouseoveraux 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-toggle="dropdown"à un lien ou à un bouton pour basculer vers une liste déroulante.
Via Javascript
Appelez les listes déroulantes via JavaScript :
data-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-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-, comme dans data-offset="".
Nom
Taper
Défaut
La description
décalage
nombre | chaîne | fonction
0
Décalage de la liste déroulante par rapport à sa cible.
Lorsqu'une fonction est utilisée pour déterminer le décalage, elle est appelée avec un objet contenant les données de décalage comme premier argument. La fonction doit retourner un objet avec la même structure. Le nœud DOM de l'élément déclencheur est passé comme second argument.
Pour plus d'informations, reportez-vous à la documentation offset de Popper.js .
retourner
booléen
vrai
Autoriser Dropdown à basculer en cas de chevauchement sur l'élément de référence. Pour plus d'informations, consultez les flip docs de Popper.js .
frontière
chaîne | élément
'scrollParent'
Limite de contrainte de débordement du menu déroulant. Accepte les valeurs de 'viewport', 'window', 'scrollParent'ou une référence HTMLElement (JavaScript uniquement). Pour plus d'informations, reportez-vous à la documentation preventOverflow de Popper.js .
référence
chaîne | élément
'basculer'
Elément de référence du menu déroulant. Accepte les valeurs de 'toggle', 'parent'ou une référence HTMLElement. Pour plus d'informations, reportez-vous à la documentation referenceObject de Popper.js .
affichage
chaîne de caractères
'dynamique'
Par défaut, nous utilisons Popper.js pour le positionnement dynamique. Désactivez-le avec static.
Notez que lorsque boundaryest défini sur une valeur autre que 'scrollParent', le style position: staticest appliqué au .dropdownconteneur.
Méthodes
Méthode
La description
$().dropdown('toggle')
Bascule le menu déroulant d'une barre de navigation donnée ou d'une navigation par onglets.
$().dropdown('show')
Affiche le menu déroulant d'une barre de navigation donnée ou d'une navigation par onglets.
$().dropdown('hide')
Masque le menu déroulant d'une barre de navigation donnée ou d'une navigation par onglets.
$().dropdown('update')
Met à jour la position de la liste déroulante d'un élément.
$().dropdown('dispose')
Détruit la liste déroulante d'un élément.
Événements
Tous les événements de liste déroulante sont déclenchés sur l' .dropdown-menuélément parent de et ont une relatedTargetpropriété, dont la valeur est l'élément d'ancrage basculant. 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 click.
Événement
La description
show.bs.dropdown
Cet événement se déclenche immédiatement lorsque la méthode d'instance show est appelée.
shown.bs.dropdown
Cet événement est déclenché lorsque la liste déroulante a été rendue visible à l'utilisateur (attendra que les transitions CSS se terminent).
hide.bs.dropdown
Cet événement est déclenché immédiatement lorsque la méthode d'instance de masquage a été appelée.
hidden.bs.dropdown
Cet événement est déclenché lorsque la liste déroulante a fini d'être masquée pour l'utilisateur (attendra que les transitions CSS se terminent).