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

Alertes

Fournissez des messages de retour contextuels pour les actions utilisateur typiques avec la poignée de messages d'alerte disponibles et flexibles.

Exemples

Les alertes sont disponibles pour n'importe quelle longueur de texte, ainsi qu'un bouton de fermeture facultatif. Pour un style approprié, utilisez l'une des huit classes contextuelles requises.alert-success (par exemple, ). Pour le rejet en ligne, utilisez le plugin JavaScript alerts .

html
<div class="alert alert-primary" role="alert">
  A simple primary alert—check it out!
</div>
<div class="alert alert-secondary" role="alert">
  A simple secondary alert—check it out!
</div>
<div class="alert alert-success" role="alert">
  A simple success alert—check it out!
</div>
<div class="alert alert-danger" role="alert">
  A simple danger alert—check it out!
</div>
<div class="alert alert-warning" role="alert">
  A simple warning alert—check it out!
</div>
<div class="alert alert-info" role="alert">
  A simple info alert—check it out!
</div>
<div class="alert alert-light" role="alert">
  A simple light alert—check it out!
</div>
<div class="alert alert-dark" role="alert">
  A simple dark alert—check it out!
</div>
Donner du sens aux technologies d'assistance

L'utilisation de la couleur pour ajouter du sens ne fournit qu'une indication visuelle, qui ne sera pas transmise aux utilisateurs de technologies d'assistance, telles que les lecteurs d'écran. Assurez-vous que les informations désignées par la couleur sont soit évidentes à partir du contenu lui-même (par exemple, le texte visible), soit incluses par des moyens alternatifs, tels que du texte supplémentaire masqué avec la .visually-hiddenclasse.

Exemple en direct

Cliquez sur le bouton ci-dessous pour afficher une alerte (masquée avec des styles en ligne pour commencer), puis fermez-la (et détruisez-la) avec le bouton de fermeture intégré.

html
<div id="liveAlertPlaceholder"></div>
<button type="button" class="btn btn-primary" id="liveAlertBtn">Show live alert</button>

Nous utilisons le JavaScript suivant pour déclencher notre démo d'alerte en direct :

const alertPlaceholder = document.getElementById('liveAlertPlaceholder')

const alert = (message, type) => {
  const wrapper = document.createElement('div')
  wrapper.innerHTML = [
    `<div class="alert alert-${type} alert-dismissible" role="alert">`,
    `   <div>${message}</div>`,
    '   <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>',
    '</div>'
  ].join('')

  alertPlaceholder.append(wrapper)
}

const alertTrigger = document.getElementById('liveAlertBtn')
if (alertTrigger) {
  alertTrigger.addEventListener('click', () => {
    alert('Nice, you triggered this alert message!', 'success')
  })
}

Utilisez la .alert-linkclasse utilitaire pour fournir rapidement des liens colorés correspondants dans n'importe quelle alerte.

html
<div class="alert alert-primary" role="alert">
  A simple primary alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
</div>
<div class="alert alert-secondary" role="alert">
  A simple secondary alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
</div>
<div class="alert alert-success" role="alert">
  A simple success alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
</div>
<div class="alert alert-danger" role="alert">
  A simple danger alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
</div>
<div class="alert alert-warning" role="alert">
  A simple warning alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
</div>
<div class="alert alert-info" role="alert">
  A simple info alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
</div>
<div class="alert alert-light" role="alert">
  A simple light alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
</div>
<div class="alert alert-dark" role="alert">
  A simple dark alert with <a href="#" class="alert-link">an example link</a>. Give it a click if you like.
</div>

Contenu additionnel

Les alertes peuvent également contenir des éléments HTML supplémentaires tels que des titres, des paragraphes et des séparateurs.

html
<div class="alert alert-success" role="alert">
  <h4 class="alert-heading">Well done!</h4>
  <p>Aww yeah, you successfully read this important alert message. This example text is going to run a bit longer so that you can see how spacing within an alert works with this kind of content.</p>
  <hr>
  <p class="mb-0">Whenever you need to, be sure to use margin utilities to keep things nice and tidy.</p>
</div>

Icônes

De même, vous pouvez utiliser les utilitaires flexbox et les icônes Bootstrap pour créer des alertes avec des icônes. En fonction de vos icônes et de votre contenu, vous souhaiterez peut-être ajouter d'autres utilitaires ou des styles personnalisés.

html
<div class="alert alert-primary d-flex align-items-center" role="alert">
  <svg xmlns="http://www.w3.org/2000/svg" class="bi bi-exclamation-triangle-fill flex-shrink-0 me-2" viewBox="0 0 16 16" role="img" aria-label="Warning:">
    <path d="M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z"/>
  </svg>
  <div>
    An example alert with an icon
  </div>
</div>

Besoin de plusieurs icônes pour vos alertes ? Envisagez d'utiliser plus d'icônes Bootstrap et de créer un sprite SVG local pour référencer facilement les mêmes icônes à plusieurs reprises.

html
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
  <symbol id="check-circle-fill" viewBox="0 0 16 16">
    <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z"/>
  </symbol>
  <symbol id="info-fill" viewBox="0 0 16 16">
    <path d="M8 16A8 8 0 1 0 8 0a8 8 0 0 0 0 16zm.93-9.412-1 4.705c-.07.34.029.533.304.533.194 0 .487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703 0-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381 2.29-.287zM8 5.5a1 1 0 1 1 0-2 1 1 0 0 1 0 2z"/>
  </symbol>
  <symbol id="exclamation-triangle-fill" viewBox="0 0 16 16">
    <path d="M8.982 1.566a1.13 1.13 0 0 0-1.96 0L.165 13.233c-.457.778.091 1.767.98 1.767h13.713c.889 0 1.438-.99.98-1.767L8.982 1.566zM8 5c.535 0 .954.462.9.995l-.35 3.507a.552.552 0 0 1-1.1 0L7.1 5.995A.905.905 0 0 1 8 5zm.002 6a1 1 0 1 1 0 2 1 1 0 0 1 0-2z"/>
  </symbol>
</svg>

<div class="alert alert-primary d-flex align-items-center" role="alert">
  <svg class="bi flex-shrink-0 me-2" role="img" aria-label="Info:"><use xlink:href="#info-fill"/></svg>
  <div>
    An example alert with an icon
  </div>
</div>
<div class="alert alert-success d-flex align-items-center" role="alert">
  <svg class="bi flex-shrink-0 me-2" role="img" aria-label="Success:"><use xlink:href="#check-circle-fill"/></svg>
  <div>
    An example success alert with an icon
  </div>
</div>
<div class="alert alert-warning d-flex align-items-center" role="alert">
  <svg class="bi flex-shrink-0 me-2" role="img" aria-label="Warning:"><use xlink:href="#exclamation-triangle-fill"/></svg>
  <div>
    An example warning alert with an icon
  </div>
</div>
<div class="alert alert-danger d-flex align-items-center" role="alert">
  <svg class="bi flex-shrink-0 me-2" role="img" aria-label="Danger:"><use xlink:href="#exclamation-triangle-fill"/></svg>
  <div>
    An example danger alert with an icon
  </div>
</div>

Licenciement

À l'aide du plugin JavaScript d'alerte, il est possible de rejeter toute alerte en ligne. Voici comment:

  • Assurez-vous d'avoir chargé le plugin d'alerte ou le JavaScript Bootstrap compilé.
  • Ajoutez un bouton de fermeture et la .alert-dismissibleclasse, ce qui ajoute un rembourrage supplémentaire à droite de l'alerte et positionne le bouton de fermeture.
  • Sur le bouton de fermeture, ajoutez l' data-bs-dismiss="alert"attribut, qui déclenche la fonctionnalité JavaScript. Assurez-vous d'utiliser l' <button>élément avec lui pour un comportement correct sur tous les appareils.
  • Pour animer les alertes lors de leur rejet, assurez-vous d'ajouter les classes .fadeet ..show

Vous pouvez voir cela en action avec une démo en direct :

html
<div class="alert alert-warning alert-dismissible fade show" role="alert">
  <strong>Holy guacamole!</strong> You should check in on some of those fields below.
  <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
Lorsqu'une alerte est ignorée, l'élément est complètement supprimé de la structure de la page. Si un utilisateur du clavier rejette l'alerte à l'aide du bouton de fermeture, son focus sera soudainement perdu et, selon le navigateur, réinitialisé au début de la page/du document. Pour cette raison, nous vous recommandons d'inclure un code JavaScript supplémentaire qui écoute l' closed.bs.alertévénement et définit par programmation focus()l'emplacement le plus approprié sur la page. Si vous envisagez de déplacer le focus vers un élément non interactif qui ne reçoit normalement pas le focus, assurez-vous d'ajouter tabindex="-1"à l'élément.

CSS

variables

Ajouté dans v5.2.0

Dans le cadre de l'approche évolutive des variables CSS de Bootstrap, les alertes utilisent désormais des variables CSS locales .alertpour 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}alert-bg: transparent;
  --#{$prefix}alert-padding-x: #{$alert-padding-x};
  --#{$prefix}alert-padding-y: #{$alert-padding-y};
  --#{$prefix}alert-margin-bottom: #{$alert-margin-bottom};
  --#{$prefix}alert-color: inherit;
  --#{$prefix}alert-border-color: transparent;
  --#{$prefix}alert-border: #{$alert-border-width} solid var(--#{$prefix}alert-border-color);
  --#{$prefix}alert-border-radius: #{$alert-border-radius};
  

Variables SSS

$alert-padding-y:               $spacer;
$alert-padding-x:               $spacer;
$alert-margin-bottom:           1rem;
$alert-border-radius:           $border-radius;
$alert-link-font-weight:        $font-weight-bold;
$alert-border-width:            $border-width;
$alert-bg-scale:                -80%;
$alert-border-scale:            -70%;
$alert-color-scale:             40%;
$alert-dismissible-padding-r:   $alert-padding-x * 3; // 3x covers width of x plus default padding on either side

Mélange impertinent

Utilisé en combinaison avec $theme-colorspour créer des classes de modificateurs contextuels pour nos alertes.

@mixin alert-variant($background, $border, $color) {
  --#{$prefix}alert-color: #{$color};
  --#{$prefix}alert-bg: #{$background};
  --#{$prefix}alert-border-color: #{$border};

  @if $enable-gradients {
    background-image: var(--#{$prefix}gradient);
  }

  .alert-link {
    color: shade-color($color, 20%);
  }
}

Boucle impertinente

Boucle qui génère les classes de modificateur avec le alert-variant()mixin.

// Generate contextual modifier classes for colorizing the alert.

@each $state, $value in $theme-colors {
  $alert-background: shift-color($value, $alert-bg-scale);
  $alert-border: shift-color($value, $alert-border-scale);
  $alert-color: shift-color($value, $alert-color-scale);

  @if (contrast-ratio($alert-background, $alert-color) < $min-contrast-ratio) {
    $alert-color: mix($value, color-contrast($alert-background), abs($alert-color-scale));
  }
  .alert-#{$state} {
    @include alert-variant($alert-background, $alert-border, $alert-color);
  }
}

Comportement JavaScript

Initialiser

Initialiser les éléments en tant qu'alertes

const alertList = document.querySelectorAll('.alert')
const alerts = [...alertList].map(element => new bootstrap.Alert(element))

Dans le seul but de rejeter une alerte, il n'est pas nécessaire d'initialiser manuellement le composant via l'API JS. En utilisant data-bs-dismiss="alert", le composant sera initialisé automatiquement et correctement rejeté.

Voir la section déclencheurs pour plus de détails.

Déclencheurs

Le rejet peut être réalisé avec l' dataattribut sur un bouton dans l'alerte , comme illustré ci-dessous :

<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>

ou sur un bouton en dehors de l'alerte à l'aide de data-bs-targetcomme illustré ci-dessous :

<button type="button" class="btn-close" data-bs-dismiss="alert" data-bs-target="#my-alert" aria-label="Close"></button>

Notez que la fermeture d'une alerte la supprimera du DOM.

Méthodes

Vous pouvez créer une instance d'alerte avec le constructeur d'alerte, par exemple :

const bsAlert = new bootstrap.Alert('#myAlert')

Cela fait qu'une alerte écoute les événements de clic sur les éléments descendants qui ont l' data-bs-dismiss="alert"attribut. (Pas nécessaire lors de l'utilisation de l'initialisation automatique de l'API de données.)

Méthode La description
close Ferme une alerte en la supprimant du DOM. Si les classes .fadeet .showsont présentes sur l'élément, l'alerte disparaîtra avant d'être supprimée.
dispose Détruit l'alerte 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 d'alerte associée à un élément DOM. Par exemple : bootstrap.Alert.getInstance(alert).
getOrCreateInstance Méthode statique qui renvoie une instance d'alerte 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.Alert.getOrCreateInstance(element).

Utilisation de base :

const alert = bootstrap.Alert.getOrCreateInstance('#myAlert')
alert.close()

Événements

Le plugin d'alerte de Bootstrap expose quelques événements pour se connecter à la fonctionnalité d'alerte.

Événement La description
close.bs.alert Se déclenche immédiatement lorsque la closeméthode d'instance est appelée.
closed.bs.alert Déclenché lorsque l'alerte a été fermée et que les transitions CSS sont terminées.
const myAlert = document.getElementById('myAlert')
myAlert.addEventListener('closed.bs.alert', event => {
  // do something, for instance, explicitly move focus to the most appropriate element,
  // so it doesn't get lost/reset to the start of the page
  // document.getElementById('...').focus()
})