Tooltips
Documentación y ejemplos para agregar tooltips personalizados de Bootstrap con CSS y JavaScript usando CSS3 para animaciones y atributos data-bs- para almacenamiento local de títulos.
Descripción general
Cosas a saber cuando usas el plugin tooltip:
- Los tooltips dependen de la librería de terceros Popper para el posicionamiento. Debes incluir popper.min.js antes de
bootstrap.js o usar
bootstrap.bundle.min.js/bootstrap.bundle.jsque contiene Popper para que los tooltips funcionen. - Los tooltips son opt-in por motivos de rendimiento, así que debes inicializarlos tú mismo.
- Los tooltips con títulos de longitud cero nunca se muestran.
- Especifica
container: 'body'para evitar problemas de renderizado en componentes más complejos (como nuestros grupos de entrada, grupos de botones, etc). - Activar tooltips en elementos ocultos no funcionará.
- Los tooltips para elementos
.disabledodisableddeben activarse en un elemento contenedor. - Cuando se activan desde hipervínculos que abarcan múltiples líneas, los tooltips se
centrarán. Usa
white-space: nowrap;en tus<a>s para evitar este comportamiento. - Los tooltips deben ocultarse antes de que sus elementos correspondientes hayan sido eliminados del DOM.
- Los tooltips pueden activarse gracias a un elemento dentro de un shadow DOM.
prefers-reduced-motion. Consulta la sección de movimiento reducido de nuestra
documentación de accesibilidad.¿Entendido todo? Genial, veamos cómo funcionan con algunos ejemplos.
Ejemplo: Habilitar tooltips en todas partes
Una forma de inicializar todos los tooltips en una página sería seleccionarlos por su
atributo data-bs-toggle:
var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
return new bootstrap.Tooltip(tooltipTriggerEl)
})
Ejemplos
Pasa el cursor sobre los enlaces de abajo para ver los tooltips:
Texto de marcador de posición para demostrar algunos enlaces inline con tooltips. Esto es ahora solo relleno, nada extraordinario. Contenido colocado aquí solo para imitar la presencia de texto real. Y todo eso solo para darte una idea de cómo se verían los tooltips cuando se usan en situaciones del mundo real. Así que esperamos que ahora hayas visto cómo estos tooltips en enlaces pueden funcionar en la práctica, una vez que los uses en tu propio sitio o proyecto.
Pasa el cursor sobre los botones de abajo para ver las cuatro direcciones de tooltips: top, right, bottom y left. Las direcciones se invierten cuando se usa Bootstrap en RTL.
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="top" title="Tooltip on top">
Tooltip on top
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="right" title="Tooltip on right">
Tooltip on right
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Tooltip on bottom">
Tooltip on bottom
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="left" title="Tooltip on left">
Tooltip on left
</button>
Y con HTML personalizado añadido:
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-html="true" title="<em>Tooltip</em> <u>with</u> <b>HTML</b>">
Tooltip with HTML
</button>
Con un SVG:
Sass
Variables
$tooltip-font-size: $font-size-sm;
$tooltip-max-width: 200px;
$tooltip-color: $white;
$tooltip-bg: $black;
$tooltip-border-radius: $border-radius;
$tooltip-opacity: .9;
$tooltip-padding-y: $spacer * .25;
$tooltip-padding-x: $spacer * .5;
$tooltip-margin: 0;
$tooltip-arrow-width: .8rem;
$tooltip-arrow-height: .4rem;
$tooltip-arrow-color: $tooltip-bg;
Uso
El plugin tooltip genera contenido y markup bajo demanda, y por defecto coloca los tooltips después de su elemento disparador.
Activa el tooltip vía JavaScript:
var exampleEl = document.getElementById('example')
var tooltip = new bootstrap.Tooltip(exampleEl, options)
Overflow auto y scroll
La posición del tooltip intenta cambiarse automáticamente cuando un contenedor
padre tiene overflow: auto o overflow: scroll como nuestro
.table-responsive, pero aún mantiene el posicionamiento de la ubicación original. Para resolver
esto, establece la opción
boundary (para el modificador flip usando la opción popperConfig) en
cualquier HTMLElement para sobrescribir el valor por defecto, 'clippingParents', como por
ejemplo document.body:
var exampleEl = document.getElementById('example')
var tooltip = new bootstrap.Tooltip(exampleEl, {
boundary: document.body // or document.querySelector('#boundary')
})
Markup
El markup requerido para un tooltip es solo un atributo data y un
title en el elemento HTML al que le quieres poner un tooltip. El markup generado de un tooltip es
bastante simple, aunque sí requiere una posición (por defecto, establecida en top por el plugin).
Hacer que los tooltips funcionen para usuarios de teclado y tecnologías de asistencia
Solo deberías agregar tooltips a elementos HTML que sean tradicionalmente enfocables por
teclado e interactivos (como enlaces o controles de formulario). Aunque elementos HTML arbitrarios (como
<span>s) pueden hacerse enfocables agregando el atributo tabindex="0", esto
añadirá paradas de tabulación potencialmente molestas y confusas en elementos no interactivos para los
usuarios de teclado, y la mayoría de las tecnologías de asistencia actualmente no anuncian el tooltip en
esta situación. Además, no confíes únicamente en hover como disparador de tu tooltip, ya que
esto hará que tus tooltips sean imposibles de activar para los usuarios de teclado.
<!-- HTML to write -->
<a href="#" data-bs-toggle="tooltip" title="Some tooltip text!">Hover over me</a>
<!-- Generated markup by the plugin -->
<div class="tooltip bs-tooltip-top" role="tooltip">
<div class="tooltip-arrow"></div>
<div class="tooltip-inner">
Some tooltip text!
</div>
</div>
Elementos deshabilitados
Los elementos con el atributo disabled no son interactivos, lo que significa
que los usuarios no pueden enfocarlos, pasar el cursor por encima ni hacer clic en ellos para activar un
tooltip (o popover). Como solución alternativa, querrás activar el tooltip desde un <div> o
<span> contenedor, idealmente hecho enfocable por teclado usando tabindex="0".
<span class="d-inline-block" tabindex="0" data-bs-toggle="tooltip" title="Disabled tooltip">
<button class="btn btn-primary" type="button" disabled>Disabled button</button>
</span>
Opciones
Las opciones se pueden pasar vía atributos data o JavaScript. Para los atributos data,
añade el nombre de la opción a data-bs-, como en data-bs-animation="". Asegúrate de
cambiar el tipo de capitalización del nombre de la opción de camelCase a kebab-case cuando pases las opciones
vía atributos data. Por ejemplo, en lugar de usar data-bs-customClass="beautifier", usa
data-bs-custom-class="beautifier".
sanitize, sanitizeFn, y allowList no se pueden proporcionar
usando atributos data.| Nombre | Tipo | Predeterminado | Descripción |
|---|---|---|---|
animation |
boolean | true |
Aplica una transición de desvanecimiento CSS al tooltip |
container |
string | element | false | false |
Agrega el tooltip a un elemento específico. Ejemplo:
|
delay |
number | object | 0 |
Retrasar la muestra y el ocultamiento del tooltip (ms) - no se aplica al tipo de disparador manual Si se proporciona un número, el retraso se aplica tanto a ocultar/mostrar La estructura del objeto es: |
html |
boolean | false |
Permite HTML en el tooltip. Si es true, las etiquetas HTML en el Usa texto si te preocupan los ataques XSS. |
placement |
string | function | 'top' |
Cómo posicionar el tooltip - auto | top | bottom | left | right. Cuando se usa una función para determinar la ubicación, se llama con el nodo DOM
del tooltip como primer argumento y el nodo DOM del elemento disparador como segundo. El contexto
|
selector |
string | false | false |
Si se proporciona un selector, los objetos tooltip se delegarán a los destinos
especificados. En la práctica, esto se usa para también aplicar tooltips a elementos del DOM añadidos
dinámicamente (soporte de jQuery.on). Ver esto y un ejemplo informativo. |
template |
string |
'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
|
HTML base a usar al crear el tooltip. El
El elemento contenedor más externo debe tener la clase |
title |
string | element | function | '' |
Valor de título por defecto si el atributo Si se proporciona una función, se llamará con su referencia |
trigger |
string | 'hover focus' |
Cómo se activa el tooltip - click | hover | focus | manual. Puedes pasar múltiples disparadores; sepáralos con un espacio.
|
fallbackPlacements |
array | ['top', 'right', 'bottom', 'left'] |
Define ubicaciones de respaldo proporcionando una lista de ubicaciones en un array (en orden de preferencia). Para más información consulta la documentación de comportamiento de Popper |
boundary |
string | element | 'clippingParents' |
Límite de restricción de overflow del tooltip (se aplica solo al modificador
preventOverflow de Popper). Por defecto es 'clippingParents' y puede aceptar una referencia
HTMLElement (solo vía JavaScript). Para más información consulta la documentación de
detectOverflow de Popper. |
customClass |
string | function | '' |
Agrega clases al tooltip cuando se muestra. Ten en cuenta que estas clases se
añadirán además de cualquier clase especificada en la plantilla. Para agregar múltiples clases,
sepáralas con espacios: También puedes pasar una función que devuelva una sola cadena que contenga nombres de clases adicionales. |
sanitize |
boolean | true |
Habilita o deshabilita el saneamiento. Si está activado, las opciones
'template' y 'title' serán saneadas. Consulta la sección del sanitizer en nuestra documentación
de JavaScript. |
allowList |
object | Valor por defecto | Objeto que contiene las etiquetas y atributos permitidos |
sanitizeFn |
null | function | null |
Aquí puedes proporcionar tu propia función de sanitización. Esto puede ser útil si prefieres usar una librería dedicada para realizar la sanitización. |
offset |
array | string | function | [0, 0] |
Desplazamiento del tooltip relativo a su destino. Puedes pasar una cadena en los
atributos data con valores separados por comas como: Cuando se usa una función para determinar el desplazamiento, se llama con un objeto
que contiene la colocación de popper, la referencia y los rects de popper como primer argumento. El
nodo DOM del elemento disparador se pasa como segundo argumento. La función debe devolver un array con
dos números:
Para más información consulta la documentación de offset de Popper. |
popperConfig |
null | object | function | null |
Para cambiar la configuración predeterminada de Popper de Bootstrap, consulta la configuración de Popper. Cuando se usa una función para crear la configuración de Popper, se llama con un objeto que contiene la configuración predeterminada de Popper de Bootstrap. Te ayuda a usar y fusionar la configuración predeterminada con tu propia configuración. La función debe devolver un objeto de configuración para Popper. |
Atributos data para tooltips individuales
Las opciones para tooltips individuales también se pueden especificar mediante el uso de atributos data, como se explicó anteriormente.
Usar una función con popperConfig
var tooltip = new bootstrap.Tooltip(element, {
popperConfig: function (defaultBsPopperConfig) {
// var newPopperConfig = {...}
// use defaultBsPopperConfig if needed...
// return newPopperConfig
}
})
Métodos
Métodos asíncronos y transiciones
Todos los métodos de la API son asíncronos e inician una transición. Vuelven al llamador tan pronto como se inicia la transición pero antes de que termine. Además, una llamada a un método en un componente en transición será ignorada.
Consulta nuestra documentación de JavaScript para más información.
show
Muestra el tooltip de un elemento. Retorna al llamador antes de que el tooltip se
haya mostrado realmente (es decir, antes de que ocurra el evento shown.bs.tooltip).
Esto se considera una activación “manual” del tooltip. Los tooltips con títulos de longitud cero nunca se
muestran.
tooltip.show()
hide
Oculta el tooltip de un elemento. Retorna al llamador antes de que el tooltip se
haya ocultado realmente (es decir, antes de que ocurra el evento hidden.bs.tooltip).
Esto se considera una activación “manual” del tooltip.
tooltip.hide()
toggle
Alterna el tooltip de un elemento. Retorna al llamador antes de que el tooltip se
haya mostrado u ocultado realmente (es decir, antes de que ocurra el evento
shown.bs.tooltip o hidden.bs.tooltip). Esto se considera una activación “manual” del
tooltip.
tooltip.toggle()
dispose
Oculta y destruye el tooltip de un elemento (Elimina los datos almacenados en el elemento
del DOM). Los tooltips que usan delegación (que se crean usando la opción
selector) no pueden destruirse individualmente en los elementos disparadores descendientes.
tooltip.dispose()
enable
Le da al tooltip de un elemento la capacidad de mostrarse. Los tooltips están habilitados por defecto.
tooltip.enable()
disable
Elimina la capacidad de mostrar el tooltip de un elemento. El tooltip solo podrá mostrarse si se vuelve a habilitar.
tooltip.disable()
toggleEnabled
Alterna la capacidad de mostrar u ocultar el tooltip de un elemento.
tooltip.toggleEnabled()
update
Actualiza la posición del tooltip de un elemento.
tooltip.update()
getInstance
Método estático que te permite obtener la instancia de tooltip asociada a un elemento del DOM
var exampleTriggerEl = document.getElementById('example')
var tooltip = bootstrap.Tooltip.getInstance(exampleTriggerEl) // Returns a Bootstrap tooltip instance
getOrCreateInstance
Método estático que te permite obtener la instancia de tooltip asociada a un elemento del DOM, o crear una nueva en caso de que no haya sido inicializada
var exampleTriggerEl = document.getElementById('example')
var tooltip = bootstrap.Tooltip.getOrCreateInstance(exampleTriggerEl) // Returns a Bootstrap tooltip instance
Eventos
| Tipo de evento | Descripción |
|---|---|
show.bs.tooltip |
Este evento se dispara inmediatamente cuando se llama al método de instancia
show. |
shown.bs.tooltip |
Este evento se dispara cuando el tooltip se ha hecho visible al usuario (esperará a que se completen las transiciones CSS). |
hide.bs.tooltip |
Este evento se dispara inmediatamente cuando se ha llamado al método de instancia
hide. |
hidden.bs.tooltip |
Este evento se dispara cuando el tooltip ha terminado de ocultarse del usuario (esperará a que se completen las transiciones CSS). |
inserted.bs.tooltip |
Este evento se dispara después del evento show.bs.tooltip cuando la
plantilla del tooltip se ha añadido al DOM. |
var myTooltipEl = document.getElementById('myTooltip')
var tooltip = new bootstrap.Tooltip(myTooltipEl)
myTooltipEl.addEventListener('hidden.bs.tooltip', function () {
// do something...
})
tooltip.hide()