Vés al contingut principal Saltar a la navegació de documents
Check
in English

Alertes

Proporcioneu missatges de comentaris contextuals per a les accions típiques dels usuaris amb un grapat de missatges d'alerta disponibles i flexibles.

Exemples

Les alertes estan disponibles per a qualsevol longitud de text, així com un botó de tancament opcional. Per obtenir un estil adequat, utilitzeu una de les vuit classes contextuals necessàries.alert-success (p. ex., ). Per a l'acomiadament en línia, utilitzeu el connector JavaScript d'alertes .

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>
Transmetre significat a les tecnologies d'assistència

L'ús del color per afegir significat només proporciona una indicació visual, que no es transmetrà als usuaris de tecnologies d'assistència, com ara lectors de pantalla. Assegureu-vos que la informació indicada pel color sigui òbvia des del contingut mateix (per exemple, el text visible) o s'inclogui mitjançant mitjans alternatius, com ara text addicional amagat amb la .visually-hiddenclasse.

Exemple en viu

Feu clic al botó següent per mostrar una alerta (amagada amb estils en línia per començar) i, a continuació, descarteu-la (i destruïu-la) amb el botó de tancament integrat.

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

Utilitzem el següent JavaScript per activar la nostra demostració d'alerta en directe:

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')
  })
}

Utilitzeu la .alert-linkclasse d'utilitat per proporcionar ràpidament enllaços de colors coincidents dins de qualsevol alerta.

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>

Contingut addicional

Les alertes també poden contenir elements HTML addicionals com encapçalaments, paràgrafs i divisors.

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>

Icones

De la mateixa manera, podeu utilitzar les utilitats de flexbox i les icones Bootstrap per crear alertes amb icones. Depenent de les vostres icones i contingut, és possible que vulgueu afegir més utilitats o estils personalitzats.

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>

Necessites més d'una icona per a les teves alertes? Penseu en utilitzar més icones d'arrencada i fer un sprite SVG local com aquest per fer referència fàcilment a les mateixes icones repetidament.

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>

Descartant

Mitjançant el connector d'alerta JavaScript, és possible descartar qualsevol alerta en línia. Així és com:

  • Assegureu-vos que heu carregat el connector d'alerta o el JavaScript Bootstrap compilat.
  • Afegiu un botó de tancament i la .alert-dismissibleclasse, que afegeix un farciment addicional a la dreta de l'alerta i col·loca el botó de tancament.
  • Al botó de tanca, afegiu l' data-bs-dismiss="alert"atribut, que activa la funcionalitat de JavaScript. Assegureu-vos d'utilitzar l' <button>element amb ell per a un comportament adequat en tots els dispositius.
  • Per animar alertes quan les ignoreu, assegureu-vos d'afegir les classes .fadei ..show

Podeu veure això en acció amb una demostració en directe:

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>
Quan es descarta una alerta, l'element s'elimina completament de l'estructura de la pàgina. Si un usuari del teclat ignora l'alerta mitjançant el botó de tancament, el seu focus es perdrà de sobte i, depenent del navegador, es restablirà a l'inici de la pàgina/document. Per aquest motiu, us recomanem incloure JavaScript addicional que escolti l' closed.bs.alertesdeveniment i s'estableixi de manera programàtica focus()a la ubicació més adequada de la pàgina. Si teniu previst moure el focus a un element no interactiu que normalment no rep el focus, assegureu-vos d'afegir tabindex="-1"-lo a l'element.

CSS

Les variables

Afegit a la v5.2.0

Com a part de l'enfocament de variables CSS en evolució de Bootstrap, les alertes ara utilitzen variables CSS locals activades per .alerta una personalització millorada en temps real. Els valors de les variables CSS s'estableixen mitjançant Sass, de manera que la personalització de Sass encara és compatible.

  --#{$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 Sass

$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

S'utilitza en combinació amb $theme-colorsper crear classes de modificadors contextuals per a les nostres 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%);
  }
}

Sass bucle

Bucle que genera les classes modificadores amb el 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);
  }
}

Comportament de JavaScript

Inicialitzar

Inicialitzar elements com a alertes

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

Amb l'únic propòsit de descartar una alerta, no és necessari inicialitzar el component manualment mitjançant l'API JS. Si feu servir data-bs-dismiss="alert", el component s'inicializarà automàticament i s'eliminarà correctament.

Consulteu la secció activadors per obtenir més detalls.

Disparadors

L'acomiadament es pot aconseguir amb l' dataatribut d'un botó dins de l'alerta , tal com es mostra a continuació:

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

o en un botó fora de l'alerta mitjançant el data-bs-targetque es mostra a continuació:

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

Tingueu en compte que tancar una alerta l'eliminarà del DOM.

Mètodes

Podeu crear una instància d'alerta amb el constructor d'alerta, per exemple:

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

Això fa que una alerta escolti els esdeveniments de clic als elements descendents que tenen l' data-bs-dismiss="alert"atribut. (No és necessari quan s'utilitza l'inicialització automàtica de l'api de dades.)

Mètode Descripció
close Tanca una alerta eliminant-la del DOM. Si les classes .fadei .showestan presents a l'element, l'alerta s'esvairà abans que s'elimini.
dispose Destrueix l'alerta d'un element. (Elimina les dades emmagatzemades a l'element DOM)
getInstance Mètode estàtic que permet obtenir la instància d'alerta associada a un element DOM. Per exemple: bootstrap.Alert.getInstance(alert).
getOrCreateInstance Mètode estàtic que retorna una instància d'alerta associada a un element DOM o en crea una de nova en cas que no s'hagi inicialitzat. Podeu utilitzar-lo així: bootstrap.Alert.getOrCreateInstance(element).

Ús bàsic:

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

Esdeveniments

El connector d'alerta de Bootstrap exposa alguns esdeveniments per connectar-se a la funcionalitat d'alerta.

Esdeveniment Descripció
close.bs.alert S'activa immediatament quan closees crida el mètode d'instància.
closed.bs.alert S'activa quan l'alerta s'ha tancat i s'han completat les transicions CSS.
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()
})