Alerts
Proporciona mensajes de feedback contextuales para acciones típicas del usuario con el puñado de mensajes de alert disponibles y flexibles.
Ejemplos
Los alerts están disponibles para cualquier longitud de texto, así como un botón de cierre
opcional. Para un estilo adecuado, usa una de las ocho clases contextuales requeridas (ej.,
.alert-success). Para el cierre inline, usa el plugin JavaScript de
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>
Transmitir significado a tecnologías de asistencia
Usar color para añadir significado solo proporciona una indicación visual, que no será
transmitida a los usuarios de tecnologías asistivas – como los lectores de pantalla. Asegúrate de que la
información denotada por el color sea evidente desde el contenido mismo (ej. el texto visible), o se incluya
mediante medios alternativos, como texto adicional oculto con la clase .visually-hidden.
Ejemplo en vivo
Haz clic en el botón de abajo para mostrar una alerta (oculta con estilos inline al inicio), luego ciérrala (y destrúyela) con el botón de cierre integrado.
<div id="liveAlertPlaceholder"></div>
<button type="button" class="btn btn-primary" id="liveAlertBtn">Show live alert</button>
Usamos el siguiente JavaScript para activar nuestra demostración de alerta en 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')
})
}
Color de enlace
Usa la clase utilitaria .alert-link para proporcionar rápidamente enlaces de
colores coincidentes dentro de cualquier alert.
<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>
Contenido adicional
Los alerts también pueden contener elementos HTML adicionales como encabezados, párrafos y divisores.
¡Bien hecho!
¡Así es, has leído con éxito este importante mensaje de alert. Este texto de ejemplo va a ser un poco más largo para que puedas ver cómo funciona el espaciado dentro de un alert con este tipo de contenido.
Cuando lo necesites, asegúrate de usar utilidades de margin para mantener todo ordenado y limpio.
<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>
Iconos
De manera similar, puedes usar utilidades de flexbox y Bootstrap Icons para crear alerts con iconos. Dependiendo de tus iconos y contenido, puede que quieras añadir más utilidades o estilos personalizados.
<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>
¿Necesitas más de un icono para tus alerts? Considera usar más Bootstrap Icons y hacer un SVG sprite local así para referenciar fácilmente los mismos iconos repetidamente.
<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>
Cerrar
Usando el plugin JavaScript de alert, es posible cerrar cualquier alert inline. Así es como:
- Asegúrate de haber cargado el plugin de alert, o el JavaScript compilado de Bootstrap.
- Añade un botón de cierre y la clase
.alert-dismissible, que añade padding extra a la derecha del alert y posiciona el botón de cierre. - En el botón de cierre, añade el atributo
data-bs-dismiss="alert", que activa la funcionalidad JavaScript. Asegúrate de usar el elemento<button>con él para un comportamiento adecuado en todos los dispositivos. - Para animar los alerts al cerrarlos, asegúrate de añadir las clases
.fadey.show.
Puedes ver esto en acción con una demo en 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 y establezca programáticamente focus() en la ubicación más apropiada
de la página. Si planeas mover el foco a un elemento no interactivo que normalmente no recibe foco, asegúrate
de añadir tabindex="-1" al elemento.CSS
Variables
Añadido en v5.2.0Como parte del enfoque evolutivo de variables CSS de Bootstrap, las alertas ahora usan
variables CSS locales en .alert para una personalización en tiempo real mejorada. Los valores de
las variables CSS se establecen vía Sass, por lo que la personalización con Sass también sigue siendo
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
Mixin Sass
Usado en combinación con $theme-colors para crear clases modificadoras
contextuales para nuestros alerts.
@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%);
}
}
Bucle Sass
Loop que genera las clases modificadoras con el mixin alert-variant().
// 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);
}
}
Comportamiento de JavaScript
Inicializar
Inicializar elementos como alertas
const alertList = document.querySelectorAll('.alert')
const alerts = [...alertList].map(element => new bootstrap.Alert(element))
Para el único propósito de cerrar una alerta, no es necesario inicializar el componente
manualmente mediante la API de JS. Al usar data-bs-dismiss="alert", el componente se
inicializará automáticamente y se cerrará correctamente.
Consulta la sección de disparadores para más detalles.
Disparadores
El cierre se puede lograr con el atributo data en un botón dentro de
la alerta como se demuestra a continuación:
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
o en un botón fuera de la alerta usando data-bs-target como
se demuestra a continuación:
<button type="button" class="btn-close" data-bs-dismiss="alert" data-bs-target="#my-alert" aria-label="Close"></button>
Ten en cuenta que cerrar una alerta la eliminará del DOM.
Métodos
Puedes crear una instancia de alert con el constructor de alert, por ejemplo:
const bsAlert = new bootstrap.Alert('#myAlert')
Esto hace que un alert escuche eventos de clic en elementos descendientes que tienen el
atributo data-bs-dismiss="alert". (No es necesario cuando se usa la auto-inicialización de la
data-api.)
| Método | Descripción |
|---|---|
close |
Cierra un alert eliminándolo del DOM. Si las clases .fade y
.show están presentes en el elemento, el alert se desvanecerá antes de ser eliminado.
|
dispose |
Destruye la alerta de un elemento. (Elimina los datos almacenados en el elemento DOM) |
getInstance |
Método estático que te permite obtener la instancia de alerta asociada a un
elemento DOM. Por ejemplo: bootstrap.Alert.getInstance(alert). |
getOrCreateInstance |
Método estático que devuelve una instancia de alerta asociada a un elemento DOM o
crea una nueva en caso de que no se haya inicializado. Puedes usarlo así:
bootstrap.Alert.getOrCreateInstance(element). |
Uso básico:
const alert = bootstrap.Alert.getOrCreateInstance('#myAlert')
alert.close()
Eventos
El plugin de alert de Bootstrap expone algunos eventos para conectarse a la funcionalidad de alert.
| Evento | Descripción |
|---|---|
close.bs.alert |
Se dispara inmediatamente cuando se llama al método de instancia
close. |
closed.bs.alert |
Se dispara cuando el alert se ha cerrado y las transiciones CSS han finalizado. |
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()
})