Avvisi
Fornisci messaggi di feedback contestuali per le azioni tipiche dell'utente con la manciata di messaggi di avviso disponibili e flessibili.
Esempi
Gli avvisi sono disponibili per qualsiasi lunghezza di testo, nonché un pulsante di chiusura opzionale. Per uno stile corretto, utilizzare una delle otto classi contestuali richieste.alert-success
(ad esempio, ). Per il licenziamento in linea, utilizza il plug-in JavaScript per gli avvisi .
<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>
Trasmettere significato alle tecnologie assistive
L'uso del colore per aggiungere significato fornisce solo un'indicazione visiva, che non verrà trasmessa agli utenti di tecnologie assistive, come i lettori di schermo. Assicurati che le informazioni denotate dal colore siano ovvie dal contenuto stesso (ad esempio il testo visibile), o siano incluse attraverso mezzi alternativi, come testo aggiuntivo nascosto con la .visually-hidden
classe.
Esempio dal vivo
Fai clic sul pulsante in basso per mostrare un avviso (nascosto con stili in linea per iniziare), quindi eliminalo (e distruggilo) con il pulsante di chiusura integrato.
<div id="liveAlertPlaceholder"></div>
<button type="button" class="btn btn-primary" id="liveAlertBtn">Show live alert</button>
Usiamo il seguente JavaScript per attivare la nostra demo di avviso dal vivo:
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')
})
}
Colore collegamento
Utilizza la .alert-link
classe di utilità per fornire rapidamente collegamenti colorati corrispondenti all'interno di qualsiasi avviso.
<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>
Contenuti aggiuntivi
Gli avvisi possono anche contenere elementi HTML aggiuntivi come intestazioni, paragrafi e divisori.
Ben fatto!
Aww sì, hai letto con successo questo importante messaggio di avviso. Questo testo di esempio verrà eseguito un po' più a lungo in modo da poter vedere come funziona la spaziatura all'interno di un avviso con questo tipo di contenuto.
Ogni volta che è necessario, assicurati di utilizzare le utilità di margine per mantenere le cose belle e ordinate.
<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>
Icone
Allo stesso modo, puoi utilizzare le utilità flexbox e le icone Bootstrap per creare avvisi con icone. A seconda delle icone e dei contenuti, potresti voler aggiungere più utilità o stili personalizzati.
<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>
Hai bisogno di più di un'icona per i tuoi avvisi? Prendi in considerazione l'utilizzo di più icone Bootstrap e la creazione di uno sprite SVG locale in questo modo per fare facilmente riferimento alle stesse icone ripetutamente.
<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>
Licenziare
Utilizzando il plug-in JavaScript di avviso, è possibile ignorare qualsiasi avviso in linea. Ecco come:
- Assicurati di aver caricato il plug-in di avviso o il JavaScript Bootstrap compilato.
- Aggiungi un pulsante di chiusura e la
.alert-dismissible
classe, che aggiunge un riempimento aggiuntivo a destra dell'avviso e posiziona il pulsante di chiusura. - Sul pulsante di chiusura, aggiungi l'
data-bs-dismiss="alert"
attributo, che attiva la funzionalità JavaScript. Assicurati di utilizzare l'<button>
elemento con esso per un comportamento corretto su tutti i dispositivi. - Per animare gli avvisi quando li elimini, assicurati di aggiungere le classi
.fade
e ..show
Puoi vederlo in azione con una demo dal vivo:
<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
evento e imposta
focus()
a livello di codice la posizione più appropriata nella pagina. Se hai intenzione di spostare lo stato attivo su un elemento non interattivo che normalmente non riceve lo stato attivo, assicurati di aggiungere
tabindex="-1"
all'elemento.
CSS
Variabili
Aggiunto nella v5.2.0Come parte dell'approccio in evoluzione delle variabili CSS di Bootstrap, gli avvisi ora utilizzano le variabili CSS locali .alert
per una migliore personalizzazione in tempo reale. I valori per le variabili CSS vengono impostati tramite Sass, quindi anche la personalizzazione di Sass è ancora supportata.
--#{$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};
variabili Sas
$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
Sass mixin
Usato in combinazione con $theme-colors
per creare classi di modificatori contestuali per i nostri avvisi.
@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%);
}
}
Ciclo di Sass
Ciclo che genera le classi di modifica con il 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);
}
}
Comportamento JavaScript
Inizializzare
Inizializza gli elementi come avvisi
const alertList = document.querySelectorAll('.alert')
const alerts = [...alertList].map(element => new bootstrap.Alert(element))
Al solo scopo di eliminare un avviso, non è necessario inizializzare il componente manualmente tramite l'API JS. Utilizzando data-bs-dismiss="alert"
, il componente verrà inizializzato automaticamente e correttamente eliminato.
Vedere la sezione trigger per maggiori dettagli.
Trigger
Il licenziamento può essere ottenuto con l' data
attributo su un pulsante all'interno dell'avviso , come illustrato di seguito:
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
o su un pulsante esterno all'avviso utilizzando data-bs-target
come illustrato di seguito:
<button type="button" class="btn-close" data-bs-dismiss="alert" data-bs-target="#my-alert" aria-label="Close"></button>
Tieni presente che la chiusura di un avviso lo rimuoverà dal DOM.
Metodi
È possibile creare un'istanza di avviso con il costruttore di avvisi, ad esempio:
const bsAlert = new bootstrap.Alert('#myAlert')
Questo fa sì che un avviso sia in ascolto per eventi di clic sugli elementi discendenti che hanno l' data-bs-dismiss="alert"
attributo. (Non necessario quando si utilizza l'inizializzazione automatica di data-api.)
Metodo | Descrizione |
---|---|
close |
Chiude un avviso rimuovendolo dal DOM. Se le classi .fade e .show sono presenti sull'elemento, l'avviso svanirà prima di essere rimosso. |
dispose |
Distrugge l'avviso di un elemento. (Rimuove i dati memorizzati sull'elemento DOM) |
getInstance |
Metodo statico che consente di ottenere l'istanza di avviso associata a un elemento DOM. Ad esempio: bootstrap.Alert.getInstance(alert) . |
getOrCreateInstance |
Metodo statico che restituisce un'istanza di avviso associata a un elemento DOM o ne crea una nuova nel caso non sia stata inizializzata. Puoi usarlo in questo modo: bootstrap.Alert.getOrCreateInstance(element) . |
Utilizzo di base:
const alert = bootstrap.Alert.getOrCreateInstance('#myAlert')
alert.close()
Eventi
Il plug-in di avviso di Bootstrap espone alcuni eventi per l'aggancio alla funzionalità di avviso.
Evento | Descrizione |
---|---|
close.bs.alert |
Si attiva immediatamente quando close viene chiamato il metodo di istanza. |
closed.bs.alert |
Attivato quando l'avviso è stato chiuso e le transizioni CSS sono state completate. |
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()
})