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 .
<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-hidden
classe.
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é.
<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')
})
}
Couleur du lien
Utilisez la .alert-link
classe utilitaire pour fournir rapidement des liens colorés correspondants dans n'importe quelle alerte.
<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.
Bien fait!
Aww ouais, vous avez lu avec succès cet important message d'alerte. Cet exemple de texte va durer un peu plus longtemps afin que vous puissiez voir comment l'espacement dans une alerte fonctionne avec ce type de contenu.
Chaque fois que vous en avez besoin, assurez-vous d'utiliser des utilitaires de marge pour garder les choses bien rangées.
<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.
<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.
<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-dismissible
classe, 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
.fade
et ..show
Vous pouvez voir cela en action avec une démo en direct :
<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>
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.0Dans le cadre de l'approche évolutive des variables CSS de Bootstrap, les alertes utilisent désormais des variables CSS locales .alert
pour 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-colors
pour 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' data
attribut 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-target
comme 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 .fade et .show sont 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 close mé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()
})