Alertas
Proporciona mensajes de retroalimentación contextuales para las acciones típicas del usuario con los útiles y flexibles mensajes de alerta disponibles.
Ejemplos
Las alertas están disponibles para cualquier longitud de texto, así como un botón de cierre opcional. Para
lograr un estilo adecuado, utiliza una de las ocho clases contextuales obligatorias (por
ejemplo, .alert-success
). Para el cierre en línea, utiliza el complemento
JavaScript de alertas.
alert-variant()
está
obsoleto. Las variantes de alerta ahora tienen sus variables CSS sobrescritas en un un
bucle Sass.
<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>
.visually-hidden
.
Ejemplo en vivo
Haz clic en el botón a continuación para mostrar una alerta (inicialmente oculta con estilos en línea), luego deséchala (y destrúyela) con el botón de cierre incorporado.
<div id="liveAlertPlaceholder"></div>
<button type="button" class="btn btn-primary" id="liveAlertBtn">Show live alert</button>
Utilizamos el siguiente JavaScript para activar nuestra demostración de alerta en vivo:
const alertPlaceholder = document.getElementById('liveAlertPlaceholder')
const appendAlert = (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', () => {
appendAlert('Nice, you triggered this alert message!', 'success')
})
}
Color del enlace
Utiliza la clase de utilidad .alert-link
para proporcionar rápidamente enlaces de colores
coincidentes dentro de cualquier alerta.
<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
Las alertas también pueden contener elementos HTML adicionales como encabezados, párrafos y divisores.
¡Bien hecho!
Ah sí, leíste correctamente este importante mensaje de alerta. Este texto de ejemplo se extenderá un poco más para que puedas ver cómo funciona el espaciado dentro de una alerta con este tipo de contenido.
Siempre que lo necesites, asegúrate de usar utilidades de margen para mantener todo limpio y ordenado.
<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>
Íconos
Del mismo modo, puedes usar utilidades flexbox y Bootstrap Icons para crear alertas con iconos. Dependiendo de tus íconos y contenido, es posible que desees agregar 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 ícono para tus alertas? Considera usar más íconos Bootstrap y crear un objeto SVG local como este para hacer referencia fácilmente a los mismos íconos repetidamente.
<svg xmlns="http://www.w3.org/2000/svg" class="d-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>
Descartando
Usando el complemento JavaScript de alerta, es posible descartar cualquier alerta en línea. Así es cómo:
- Asegúrate de haber cargado el complemento de alerta o el JavaScript Bootstrap compilado.
- Agrega un botón de cerrar y la clase
.alert-dismissible
, que agrega padding adicional a la derecha de la alerta y coloca el botón de cierre. - En el botón de cerrar, agrega el atributo
data-bs-dismiss="alert"
, que activa la funcionalidad de JavaScript. Asegúrate de utilizar el elemento<button>
para lograr un comportamiento adecuado en todos los dispositivos. - Para animar las alertas cuando las descartes, asegúrate de agregar las clases
.fade
y.show
.
Puedes ver esto en acción con una demostración 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 establezcas mediante programación focus()
en la ubicación más
adecuada de la página. Si planeas mover el foco a un elemento no interactivo que normalmente no recibe el
foco, asegúrate de agregar tabindex="-1"
al elemento.
CSS
Variables
Agregado en v5.2.0Como parte del enfoque de variables CSS en evolución de Bootstrap, las alertas ahora usan variables CSS
locales en .alert
para una personalización mejorada en tiempo real. Los valores de las variables
CSS se establecen a través de Sass, por lo que la personalización de Sass también es 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};
--#{$prefix}alert-link-color: inherit;
Variables Sass
$alert-padding-y: $spacer;
$alert-padding-x: $spacer;
$alert-margin-bottom: 1rem;
$alert-border-radius: var(--#{$prefix}border-radius);
$alert-link-font-weight: $font-weight-bold;
$alert-border-width: var(--#{$prefix}border-width);
$alert-dismissible-padding-r: $alert-padding-x * 3; // 3x covers width of x plus default padding on either side
Sass mixins
Obsoleto en v5.3.0Se usa en combinación con $theme-colors
para crear clases de modificadores contextuales para
nuestras alertas.
@mixin alert-variant($background, $border, $color) {
--#{$prefix}alert-color: #{$color};
--#{$prefix}alert-bg: #{$background};
--#{$prefix}alert-border-color: #{$border};
--#{$prefix}alert-link-color: #{shade-color($color, 20%)};
@if $enable-gradients {
background-image: var(--#{$prefix}gradient);
}
.alert-link {
color: var(--#{$prefix}alert-link-color);
}
}
Sass loops
Bucle que genera las clases modificadoras con el mixin alert-variant()
.
// Generate contextual modifier classes for colorizing the alert
@each $state in map-keys($theme-colors) {
.alert-#{$state} {
--#{$prefix}alert-color: var(--#{$prefix}#{$state}-text-emphasis);
--#{$prefix}alert-bg: var(--#{$prefix}#{$state}-bg-subtle);
--#{$prefix}alert-border-color: var(--#{$prefix}#{$state}-border-subtle);
--#{$prefix}alert-link-color: var(--#{$prefix}#{$state}-text-emphasis);
}
}
Comportamiento de JavaScript
Inicializar
Inicializar elementos como alertas
const alertList = document.querySelectorAll('.alert')
const alerts = [...alertList].map(element => new bootstrap.Alert(element))
Con el único propósito de descartar una alerta, no es necesario inicializar el componente manualmente a
través de la API JS. Al utilizar data-bs-dismiss="alert"
, el componente se inicializará
automáticamente y se descartará correctamente.
Consulta la sección desencadenantes para obtener más detalles.
Desencadenantes
El despido (cierre) se puede lograr con el atributo data-bs-dismiss
en un botón dentro
de la alerta como se muestra 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 el data-bs-target
adicional como se
muestra 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 alerta con el constructor de alertas, por ejemplo:
const bsAlert = new bootstrap.Alert('#myAlert')
Esto hace que una alerta escuche eventos de clic en elementos descendientes que tienen el atributo
data-bs-dismiss="alert"
. (No es necesario cuando se utiliza la inicialización automática de la
API de datos).
Método | Descripción |
---|---|
close |
Cierra una alerta eliminándola del DOM. Si las clases .fade y .show están
presentes en el elemento, la alerta desaparecerá antes de eliminarse. |
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 haya sido inicializada. Puedes usarlo así:
bootstrap.Alert.getOrCreateInstance(element) .
|
Uso básico:
const alert = bootstrap.Alert.getOrCreateInstance('#myAlert')
alert.close()
Eventos
El complemento de alerta de Bootstrap expone algunos eventos para conectarse a la funcionalidad de alerta.
Evento | Descripción |
---|---|
close.bs.alert |
Se activa inmediatamente cuando se llama al método de instancia close . |
closed.bs.alert |
Se activa cuando se cierra la alerta y se completan las transiciones 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()
})