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

Info-bulles

Documentation et exemples pour l'ajout d'info-bulles Bootstrap personnalisées avec CSS et JavaScript à l'aide de CSS3 pour les animations et data-bs-attributes pour le stockage de titre local.

Aperçu

Choses à savoir lors de l'utilisation du plugin d'info-bulle :

  • Les info-bulles s'appuient sur la bibliothèque tierce Popper pour le positionnement. Vous devez inclure popper.min.js avant bootstrap.js, ou en utiliser un bootstrap.bundle.min.jsqui contient Popper.
  • Les info-bulles sont facultatives pour des raisons de performances, vous devez donc les initialiser vous -même .
  • Les info-bulles avec des titres de longueur nulle ne sont jamais affichées.
  • Spécifiez container: 'body'pour éviter les problèmes de rendu dans des composants plus complexes (comme nos groupes d'entrée, groupes de boutons, etc.).
  • Le déclenchement d'info-bulles sur des éléments masqués ne fonctionnera pas.
  • Les info-bulles pour les éléments .disabledou disableddoivent être déclenchées sur un élément wrapper.
  • Lorsqu'elles sont déclenchées à partir d'hyperliens qui s'étendent sur plusieurs lignes, les info-bulles seront centrées. Utilisez white-space: nowrap;sur votre <a>s pour éviter ce comportement.
  • Les info-bulles doivent être masquées avant que leurs éléments correspondants aient été supprimés du DOM.
  • Les info-bulles peuvent être déclenchées grâce à un élément à l'intérieur d'un shadow DOM.

Vous avez tout ça ? Super, voyons comment ils fonctionnent avec quelques exemples.

Par défaut, ce composant utilise le nettoyeur de contenu intégré, qui supprime tous les éléments HTML qui ne sont pas explicitement autorisés. Voir la section désinfectant dans notre documentation JavaScript pour plus de détails.
L'effet d'animation de ce composant dépend de la prefers-reduced-motionrequête multimédia. Voir la section mouvement réduit de notre documentation sur l'accessibilité .

Exemples

Activer les info-bulles

Comme mentionné ci-dessus, vous devez initialiser les info-bulles avant de pouvoir les utiliser. Une façon d'initialiser toutes les info-bulles sur une page serait de les sélectionner par leur data-bs-toggleattribut, comme ceci :

const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))

Passez la souris sur les liens ci-dessous pour afficher les info-bulles :

Texte d'espace réservé pour illustrer certains liens en ligne avec des info-bulles. C'est maintenant juste du remplissage, pas de tueur. Contenu placé ici juste pour imiter la présence de texte réel . Et tout cela juste pour vous donner une idée de l'apparence des info-bulles lorsqu'elles sont utilisées dans des situations réelles. J'espère donc que vous avez maintenant vu comment ces info-bulles sur les liens peuvent fonctionner dans la pratique, une fois que vous les utilisez sur votre propre site ou projet.

html
<p class="muted">Placeholder text to demonstrate some <a href="#" data-bs-toggle="tooltip" data-bs-title="Default tooltip">inline links</a> with tooltips. This is now just filler, no killer. Content placed here just to mimic the presence of <a href="#" data-bs-toggle="tooltip" data-bs-title="Another tooltip">real text</a>. And all that just to give you an idea of how tooltips would look when used in real-world situations. So hopefully you've now seen how <a href="#" data-bs-toggle="tooltip" data-bs-title="Another one here too">these tooltips on links</a> can work in practice, once you use them on <a href="#" data-bs-toggle="tooltip" data-bs-title="The last tip!">your own</a> site or project.
</p>
N'hésitez pas à utiliser titleou data-bs-titledans votre HTML. Lorsqu'il titleest utilisé, Popper le remplacera automatiquement data-bs-titlelors du rendu de l'élément.

Info-bulles personnalisées

Ajouté dans v5.2.0

Vous pouvez personnaliser l'apparence des info-bulles à l'aide de variables CSS . Nous définissons une classe personnalisée avec data-bs-custom-class="custom-tooltip"pour définir notre apparence personnalisée et l'utiliser pour remplacer une variable CSS locale.

.custom-tooltip {
  --bs-tooltip-bg: var(--bs-primary);
}
html
<button type="button" class="btn btn-secondary"
        data-bs-toggle="tooltip" data-bs-placement="top"
        data-bs-custom-class="custom-tooltip"
        data-bs-title="This top tooltip is themed via CSS variables.">
  Custom tooltip
</button>

les directions

Survolez les boutons ci-dessous pour voir les quatre directions des info-bulles : haut, droite, bas et gauche. Les directions sont mises en miroir lors de l'utilisation de Bootstrap dans RTL.

<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="top" data-bs-title="Tooltip on top">
  Tooltip on top
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="right" data-bs-title="Tooltip on right">
  Tooltip on right
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-title="Tooltip on bottom">
  Tooltip on bottom
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="left" data-bs-title="Tooltip on left">
  Tooltip on left
</button>

Et avec le code HTML personnalisé ajouté :

<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-html="true" data-bs-title="<em>Tooltip</em> <u>with</u> <b>HTML</b>">
  Tooltip with HTML
</button>

Avec un SVG :

CSS

variables

Ajouté dans v5.2.0

Dans le cadre de l'approche évolutive des variables CSS de Bootstrap, les info-bulles utilisent désormais des variables CSS locales .tooltippour une personnalisation améliorée en temps réel. Les valeurs des variables CSS sont définies via Sass, de sorte que la personnalisation de Sass est toujours prise en charge également.

  --#{$prefix}tooltip-zindex: #{$zindex-tooltip};
  --#{$prefix}tooltip-max-width: #{$tooltip-max-width};
  --#{$prefix}tooltip-padding-x: #{$tooltip-padding-x};
  --#{$prefix}tooltip-padding-y: #{$tooltip-padding-y};
  --#{$prefix}tooltip-margin: #{$tooltip-margin};
  @include rfs($tooltip-font-size, --#{$prefix}tooltip-font-size);
  --#{$prefix}tooltip-color: #{$tooltip-color};
  --#{$prefix}tooltip-bg: #{$tooltip-bg};
  --#{$prefix}tooltip-border-radius: #{$tooltip-border-radius};
  --#{$prefix}tooltip-opacity: #{$tooltip-opacity};
  --#{$prefix}tooltip-arrow-width: #{$tooltip-arrow-width};
  --#{$prefix}tooltip-arrow-height: #{$tooltip-arrow-height};
  

Variables SSS

$tooltip-font-size:                 $font-size-sm;
$tooltip-max-width:                 200px;
$tooltip-color:                     $white;
$tooltip-bg:                        $black;
$tooltip-border-radius:             $border-radius;
$tooltip-opacity:                   .9;
$tooltip-padding-y:                 $spacer * .25;
$tooltip-padding-x:                 $spacer * .5;
$tooltip-margin:                    null; // TODO: remove this in v6

$tooltip-arrow-width:               .8rem;
$tooltip-arrow-height:              .4rem;
// fusv-disable
$tooltip-arrow-color:               null; // Deprecated in Bootstrap 5.2.0 for CSS variables
// fusv-enable

Usage

Le plug-in d'info-bulle génère du contenu et du balisage à la demande, et place par défaut les info-bulles après leur élément déclencheur.

Déclenchez l'info-bulle via JavaScript :

const exampleEl = document.getElementById('example')
const tooltip = new bootstrap.Tooltip(exampleEl, options)
Débordement autoetscroll

La position de l'info-bulle tente de changer automatiquement lorsqu'un conteneur parent a overflow: autoou overflow: scrollressemble à notre .table-responsive, mais conserve toujours le positionnement de l'emplacement d'origine. Pour résoudre ce problème, définissez l' boundaryoption (pour le modificateur flip utilisant l' popperConfigoption) sur n'importe quel HTMLElement pour remplacer la valeur par défaut, 'clippingParents', telle que document.body:

const tooltip = new bootstrap.Tooltip('#example', {
  boundary: document.body // or document.querySelector('#boundary')
})

Balisage

Le balisage requis pour une info-bulle n'est qu'un dataattribut et titlesur l'élément HTML, vous souhaitez avoir une info-bulle. Le balisage généré d'une info-bulle est assez simple, bien qu'il nécessite une position (par défaut, définie toppar le plugin).

Faire en sorte que les info-bulles fonctionnent pour les utilisateurs de clavier et de technologie d'assistance

Vous ne devez ajouter des info-bulles qu'aux éléments HTML qui sont traditionnellement accessibles au clavier et interactifs (tels que des liens ou des contrôles de formulaire). Bien que des éléments HTML arbitraires (tels que <span>s) puissent être rendus focalisables en ajoutant l' tabindex="0"attribut, cela ajoutera des taquets de tabulation potentiellement gênants et déroutants sur les éléments non interactifs pour les utilisateurs de clavier, et la plupart des technologies d'assistance n'annoncent actuellement pas l'info-bulle dans cette situation. De plus, ne comptez pas uniquement sur hoverle déclencheur de votre info-bulle, car cela rendra vos info-bulles impossibles à déclencher pour les utilisateurs de clavier.

<!-- HTML to write -->
<a href="#" data-bs-toggle="tooltip" data-bs-title="Some tooltip text!">Hover over me</a>

<!-- Generated markup by the plugin -->
<div class="tooltip bs-tooltip-top" role="tooltip">
  <div class="tooltip-arrow"></div>
  <div class="tooltip-inner">
    Some tooltip text!
  </div>
</div>

Éléments désactivés

Les éléments avec l' disabledattribut ne sont pas interactifs, ce qui signifie que les utilisateurs ne peuvent pas se concentrer, survoler ou cliquer dessus pour déclencher une info-bulle (ou popover). Comme solution de contournement, vous souhaiterez déclencher l'info-bulle à partir d'un wrapper <div>ou <span>, idéalement rendu focusable au clavier à l'aide de tabindex="0".

html
<span class="d-inline-block" tabindex="0" data-bs-toggle="tooltip" data-bs-title="Disabled tooltip">
  <button class="btn btn-primary" type="button" disabled>Disabled button</button>
</span>

Choix

Comme les options peuvent être transmises via des attributs de données ou JavaScript, vous pouvez ajouter un nom d'option à data-bs-, comme dans data-bs-animation="{value}". 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, utilisez à la data-bs-custom-class="beautifier"place de data-bs-customClass="beautifier".

Depuis Bootstrap 5.2.0, tous les composants prennent en charge un attribut de données expérimentaldata-bs-config réservé pouvant héberger une configuration de composant simple sous forme de chaîne JSON. Lorsqu'un élément a des attributs data-bs-config='{"delay":0, "title":123}'et , la valeur finale sera et les attributs de données séparés remplaceront les valeurs données sur . De plus, les attributs de données existants peuvent héberger des valeurs JSON telles que .data-bs-title="456"title456data-bs-configdata-bs-delay='{"show":0,"hide":150}'

Notez que pour des raisons de sécurité, les sanitizeoptions , sanitizeFnet ne peuvent pas être fournies à l'aide d'attributs de données.allowList
Nom Taper Défaut La description
allowList objet Valeur par défaut Objet qui contient les attributs et balises autorisés.
animation booléen true Appliquez une transition de fondu CSS à l'info-bulle.
boundary chaîne, élément 'clippingParents' Limite de contrainte de débordement de l'info-bulle (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 .
container chaîne, élément, faux false Ajoute l'info-bulle à un élément spécifique. Exemple : container: 'body'. Cette option est particulièrement utile car elle permet de positionner l'infobulle dans le flux du document à proximité de l'élément déclencheur - ce qui empêchera l'infobulle de s'éloigner de l'élément déclencheur lors d'un redimensionnement de fenêtre.
customClass chaîne, fonction '' Ajoutez des classes à l'info-bulle lorsqu'elle s'affiche. Notez que ces classes seront ajoutées en plus de toutes les classes spécifiées dans le modèle. Pour ajouter plusieurs classes, séparez-les par des espaces : 'class-1 class-2'. Vous pouvez également passer une fonction qui doit renvoyer une seule chaîne contenant des noms de classe supplémentaires.
delay nombre, objet 0 Délai d'affichage et de masquage de l'info-bulle (ms) : ne s'applique pas au type de déclencheur manuel. Si un nombre est fourni, le délai est appliqué à la fois au masquage et à l'affichage. La structure de l'objet est : delay: { "show": 500, "hide": 100 }.
fallbackPlacements déployer ['top', 'right', 'bottom', 'left'] Définissez les emplacements de remplacement en fournissant une liste d'emplacements dans le tableau (par ordre de préférence). Pour plus d'informations, reportez-vous à la documentation sur le comportement de Popper .
html booléen false Autoriser HTML dans l'info-bulle. Si vrai, les balises HTML dans l'info-bulle titleseront rendues dans l'info-bulle. Si false, innerTextla propriété sera utilisée pour insérer du contenu dans le DOM. Utilisez du texte si vous craignez les attaques XSS.
offset tableau, chaîne, fonction [0, 0] Décalage de l'info-bulle par rapport à sa cible. Vous pouvez passer 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 .
placement chaîne, fonction 'top' Comment positionner l'infobulle : auto, haut, bas, gauche, droite. Lorsque autoest spécifié, il réorientera dynamiquement l'info-bulle. Lorsqu'une fonction est utilisée pour déterminer le placement, elle est appelée avec le nœud DOM de l'info-bulle comme premier argument et le nœud DOM de l'élément déclencheur comme second. Le thiscontexte est défini sur l'instance d'info-bulle.
popperConfig null, 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.
sanitize booléen true Activez ou désactivez la désinfection. Si elles sont activées 'template', les options 'content'et 'title'seront désinfectées.
sanitizeFn null, fonction null Ici, vous pouvez fournir votre propre fonction de désinfection. Cela peut être utile si vous préférez utiliser une bibliothèque dédiée pour effectuer la désinfection.
selector chaîne, faux false Si un sélecteur est fourni, les objets d'info-bulle seront délégués aux cibles spécifiées. En pratique, cela est utilisé pour appliquer également des info-bulles aux éléments DOM ajoutés dynamiquement ( jQuery.onsupport). Voir ce numéro et un exemple informatif .
template chaîne de caractères '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' HTML de base à utiliser lors de la création de l'info-bulle. Les info-bulles titleseront injectées dans le fichier .tooltip-inner. .tooltip-arrowdeviendra la flèche de l'info-bulle. L'élément wrapper le plus externe doit avoir la .tooltipclasse et role="tooltip".
title chaîne, élément, fonction '' Valeur de titre par défaut si titlel'attribut n'est pas présent. Si une fonction est donnée, elle sera appelée avec sa thisréférence définie sur l'élément auquel le popover est attaché.
trigger chaîne de caractères 'hover focus' Mode de déclenchement de l'info-bulle : clic, survol, focus, manuel. Vous pouvez passer plusieurs déclencheurs ; séparez-les par un espace. 'manual'indique que l'info-bulle sera déclenchée par programmation via les méthodes et .tooltip('show'); cette valeur ne peut être combinée avec aucun autre déclencheur. à lui seul entraînera des info-bulles qui ne peuvent pas être déclenchées via le clavier et ne doivent être utilisées que si des méthodes alternatives pour transmettre les mêmes informations aux utilisateurs du clavier sont présentes..tooltip('hide').tooltip('toggle')'hover'

Attributs de données pour les info-bulles individuelles

Les options des info-bulles individuelles peuvent également être spécifiées via l'utilisation d'attributs de données, comme expliqué ci-dessus.

Utilisation de la fonction avecpopperConfig

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

Méthodes

Méthodes et transitions asynchrones

Toutes les méthodes API sont asynchrones et démarrent une transition . Ils reviennent à l'appelant dès que la transition est commencée mais avant qu'elle ne se termine . De plus, un appel de méthode sur un composant en transition sera ignoré .

Consultez notre documentation JavaScript pour plus d'informations .

Méthode La description
disable Supprime la possibilité d'afficher l'info-bulle d'un élément. L'info-bulle ne pourra s'afficher que si elle est réactivée.
dispose Masque et détruit l'info-bulle d'un élément (supprime les données stockées sur l'élément DOM). Les info-bulles qui utilisent la délégation (qui sont créées à l'aide de l' selectoroption ) ne peuvent pas être détruites individuellement sur les éléments déclencheurs descendants.
enable Donne à l'info-bulle d'un élément la possibilité d'être affichée. Les info-bulles sont activées par défaut.
getInstance Méthode statique qui vous permet d'obtenir l'instance d'info-bulle associée à un élément DOM, ou d'en créer une nouvelle au cas où elle n'aurait pas été initialisée.
getOrCreateInstance Méthode statique qui vous permet d'obtenir l'instance d'info-bulle associée à un élément DOM, ou d'en créer une nouvelle au cas où elle n'aurait pas été initialisée.
hide Masque l'info-bulle d'un élément. Retourne à l'appelant avant que l'info-bulle n'ait été masquée (c'est-à-dire avant que l' hidden.bs.tooltipévénement ne se produise). Ceci est considéré comme un déclenchement "manuel" de l'info-bulle.
setContent Permet de modifier le contenu de l'info-bulle après son initialisation.
show Révèle l'info-bulle d'un élément. Revient à l'appelant avant que l'info-bulle ne soit réellement affichée (c'est-à-dire avant que l' shown.bs.tooltipévénement ne se produise). Ceci est considéré comme un déclenchement "manuel" de l'info-bulle. Les info-bulles avec des titres de longueur nulle ne sont jamais affichées.
toggle Bascule l'info-bulle d'un élément. Revient à l'appelant avant que l'info-bulle n'ait été réellement affichée ou masquée (c'est-à-dire avant que l' événement shown.bs.tooltipou ne hidden.bs.tooltipse produise). Ceci est considéré comme un déclenchement "manuel" de l'info-bulle.
toggleEnabled Active/désactive la possibilité d'afficher ou de masquer l'info-bulle d'un élément.
update Met à jour la position de l'info-bulle d'un élément.
const tooltip = bootstrap.Tooltip.getInstance('#example') // Returns a Bootstrap tooltip instance

// setContent example
tooltip.setContent({ '.tooltip-inner': 'another title' })
La setContentméthode accepte un objectargument, où chaque clé de propriété est un stringsélecteur valide dans le modèle de popover, et chaque valeur de propriété associée peut être string| element| function| null

Événements

Événement La description
hide.bs.tooltip Cet événement est déclenché immédiatement lorsque la hideméthode d'instance a été appelée.
hidden.bs.tooltip Cet événement est déclenché lorsque le popover a fini d'être caché à l'utilisateur (il attendra que les transitions CSS soient terminées).
inserted.bs.tooltip Cet événement est déclenché après l' show.bs.tooltipévénement lorsque le modèle d'info-bulle a été ajouté au DOM.
show.bs.tooltip Cet événement se déclenche immédiatement lorsque la showméthode d'instance est appelée.
shown.bs.tooltip Cet événement est déclenché lorsque le popover a été rendu visible à l'utilisateur (il attendra que les transitions CSS soient terminées).
const myTooltipEl = document.getElementById('myTooltip')
const tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl)

myTooltipEl.addEventListener('hidden.bs.tooltip', () => {
  // do something...
})

tooltip.hide()