Alerts
Proporciona mensajes de retroalimentación contextuales para las acciones típicas de los usuarios con mensajes de alerta disponibles y flexibles.
😎 Esta traducción es parte del proyecto esdocu.com.
Ejemplos
Las alertas 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 obligatorias (por ejemplo,
.alert-success
). Para el botón de cierre en línea, usa el complemento
JavaScript de alertas.
<div class="alert alert-primary" role="alert">
Una simple alerta primary: ¡échale un vistazo!
</div>
<div class="alert alert-secondary" role="alert">
Una simple alerta secondary: ¡échale un vistazo!
</div>
<div class="alert alert-success" role="alert">
Una simple alerta success: ¡échale un vistazo!
</div>
<div class="alert alert-danger" role="alert">
Una simple alerta danger: ¡échale un vistazo!
</div>
<div class="alert alert-warning" role="alert">
Una simple alerta warning: ¡échale un vistazo!
</div>
<div class="alert alert-info" role="alert">
Una simple alerta info: ¡échale un vistazo!
</div>
<div class="alert alert-light" role="alert">
Una simple alerta light: ¡échale un vistazo!
</div>
<div class="alert alert-dark" role="alert">
Una simple alerta dark: ¡échale un vistazo!
</div>
Transmitir significado a las tecnologías de asistencia
El uso del color para agregar significado solo proporciona una indicación visual, que no se transmitirá a
los usuarios de tecnologías de asistencia, como los lectores de pantalla. Asegúrate de que la información
denotada por el color sea obvia a partir del contenido mismo (por ejemplo, el texto visible) o se incluya a
través de medios alternativos, como texto adicional oculto con la clase .visually-hidden
.
Ejemplo en vivo
Haz clic en el botón a continuación para mostrar una alerta (oculta con estilos en línea para comenzar), luego deséchela (y destrúyala) con el botón de cierre incorporado.
<div id="liveAlertPlaceholder"></div>
<button type="button" class="btn btn-primary" id="liveAlertBtn">Mostrar alerta en vivo</button>
Usamos el siguiente JavaScript para activar nuestra demostración de alerta en vivo:
var alertPlaceholder = document.getElementById('liveAlertPlaceholder')
var alertTrigger = document.getElementById('liveAlertBtn')
function alert(message, type) {
var wrapper = document.createElement('div')
wrapper.innerHTML = '<div class="alert alert-' + type + ' alert-dismissible" role="alert">' + message + '<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button></div>'
alertPlaceholder.append(wrapper)
}
if (alertTrigger) {
alertTrigger.addEventListener('click', function () {
alert('Genial, activaste este mensaje de alerta.', 'success')
})
}
Color de 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">
Una simple alerta primary con <a href="#" class="alert-link">un enlace de ejemplo</a>. Dale un clic si quieres.
</div>
<div class="alert alert-secondary" role="alert">
Una simple alerta secondary con <a href="#" class="alert-link">un enlace de ejemplo</a>. Dale un clic si quieres.
</div>
<div class="alert alert-success" role="alert">
Una simple alerta success con <a href="#" class="alert-link">un enlace de ejemplo</a>. Dale un clic si quieres.
</div>
<div class="alert alert-danger" role="alert">
Una simple alerta danger con <a href="#" class="alert-link">un enlace de ejemplo</a>. Dale un clic si quieres.
</div>
<div class="alert alert-warning" role="alert">
Una simple alerta warning con <a href="#" class="alert-link">un enlace de ejemplo</a>. Dale un clic si quieres.
</div>
<div class="alert alert-info" role="alert">
Una simple alerta info con <a href="#" class="alert-link">un enlace de ejemplo</a>. Dale un clic si quieres.
</div>
<div class="alert alert-light" role="alert">
Una simple alerta light con <a href="#" class="alert-link">un enlace de ejemplo</a>. Dale un clic si quieres.
</div>
<div class="alert alert-dark" role="alert">
Una simple alerta dark con <a href="#" class="alert-link">un enlace de ejemplo</a>. Dale un clic si quieres.
</div>
Contenido adicional
Las alertas también pueden contener elementos HTML adicionales como encabezados, párrafos y divisores.
¡Bien hecho!
Oh, sí, leísto con éxito 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 las cosas ordenadas y ordenadas.
<div class="alert alert-success" role="alert">
<h4 class="alert-heading">¡Bien hecho!</h4>
<p>Oh, sí, leísto con éxito 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.</p>
<hr>
<p class="mb-0">Siempre que lo necesites, asegúrate de usar utilidades de margen para mantener las cosas ordenadas y ordenadas.</p>
</div>
Iconos
De manera similar, puedes usar utilidades flexbox y Bootstrap Icons para crear alertas con íconos. 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" width="24" height="24" fill="currentColor" 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>
Un ejemplo de alerta con un icono
</div>
</div>
¿Necesitas más de un ícono para tus alertas? Considera usar más íconos de Bootstrap y hacer un sprite SVG local para hacer referencia fácilmente a los mismos íconos repetidamente.
<svg xmlns="http://www.w3.org/2000/svg" style="display: none;">
<symbol id="check-circle-fill" fill="currentColor" 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" fill="currentColor" 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" fill="currentColor" 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" width="24" height="24" role="img" aria-label="Info:"><use xlink:href="#info-fill"/></svg>
<div>
Un ejemplo de alerta con un icono
</div>
</div>
<div class="alert alert-success d-flex align-items-center" role="alert">
<svg class="bi flex-shrink-0 me-2" width="24" height="24" role="img" aria-label="Success:"><use xlink:href="#check-circle-fill"/></svg>
<div>
Un ejemplo de alerta success con un icono
</div>
</div>
<div class="alert alert-warning d-flex align-items-center" role="alert">
<svg class="bi flex-shrink-0 me-2" width="24" height="24" role="img" aria-label="Warning:"><use xlink:href="#exclamation-triangle-fill"/></svg>
<div>
Un ejemplo de alerta warning con un icono
</div>
</div>
<div class="alert alert-danger d-flex align-items-center" role="alert">
<svg class="bi flex-shrink-0 me-2" width="24" height="24" role="img" aria-label="Danger:"><use xlink:href="#exclamation-triangle-fill"/></svg>
<div>
Un ejemplo de alerta danger con un icono
</div>
</div>
Descartar
Con el complemento JavaScript de alerta, es posible descartar cualquier alerta. Así es cómo:
- Asegúrate de haber cargado el complemento de alerta o el JavaScript de Bootstrap compilado.
- Agrega un botón de cierre y la clase
.alert-dismissible
, que agrega padding adicional a la derecha de la alerta y posiciona 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 usar el elemento<button>
para un comportamiento adecuado en todos los dispositivos. - Para animar alertas al descartarlas, 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> Debes verificar algunos de esos campos a continuación.
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>
closed.bs.alert
y programáticamente establecer 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
Added in v5.2.0
Como parte del enfoque de variables CSS en evolución de Bootstrap, las alertas ahora usan variables CSS
locales en .alert
para mejorar la personalización en tiempo real. Los valores para las variables
CSS se establecen a través de Sass, por lo que también se admite la personalización de Sass.
--#{$variable-prefix}alert-bg: transparent;
--#{$variable-prefix}alert-padding: #{$alert-padding-y $alert-padding-x};
--#{$variable-prefix}alert-margin-bottom: #{$alert-margin-bottom};
--#{$variable-prefix}alert-color: inherit;
--#{$variable-prefix}alert-border-color: transparent;
--#{$variable-prefix}alert-border: #{$alert-border-width} solid var(--#{$variable-prefix}alert-border-color);
--#{$variable-prefix}alert-border-radius: #{$alert-border-radius};
Sass variables
$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
Se usa en combinación con $theme-colors
para crear clases de modificadores contextuales para
nuestras alertas.
@mixin alert-variant($background, $border, $color) {
--#{$variable-prefix}alert-color: #{$color};
--#{$variable-prefix}alert-bg: #{$background};
--#{$variable-prefix}alert-border-color: #{$border};
@if $enable-gradients {
background-image: var(--#{$variable-prefix}gradient);
}
.alert-link {
color: shade-color($color, 20%);
}
}
Sass loop
Bucle 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
var alertList = document.querySelectorAll('.alert')
var alerts = Array.prototype.slice.call(alertList).map(function (element) {
return 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 de JS. Al hacer uso de data-bs-dismiss="alert"
, el componente se inicializará
automáticamente y se descartará correctamente.
Consulta la sección triggers para obtener más detalles.
Triggers
El descarte (cierre) se puede lograr con el atributo data
en un botón dentro de
alert 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 alert usando data-bs-target
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
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 se desvanecerá antes de que se elimine.
|
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, puedes usarlo
así: 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 inicializado.
Puedes usarlo así: bootstrap.Alert.getOrCreateInstance(element)
|
var alertNode = document.querySelector('.alert')
var alert = bootstrap.Alert.getInstance(alertNode)
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 ha cerrado la alerta y se han completado las transiciones de CSS. |
var myAlert = document.getElementById('myAlert')
myAlert.addEventListener('closed.bs.alert', function () {
// hacer algo, por ejemplo, mover explícitamente el foco al elemento más apropiado,
// para que no se pierda/restablezca al inicio de la página
// document.getElementById('...').focus()
})
😎 Esta traducción es parte del proyecto esdocu.com.