Saltar al contenido principal Saltar a la navegación de la documentación
¡Hay una versión más nueva de Bootstrap!
Ver en GitHub

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.js que 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 .disabled o disabled deben 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.
Por defecto, este componente usa el sanitizador de contenido integrado, que elimina cualquier elemento HTML que no esté explícitamente permitido. Consulta la sección del sanitizador en nuestra documentación de JavaScript para más detalles.
El efecto de animación de este componente depende de la media query 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".

Ten en cuenta que por razones de seguridad las opciones 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: container: 'body'. Esta opción es particularmente útil ya que te permite posicionar el tooltip en el flujo del documento cerca del elemento disparador, lo que evitará que el tooltip se aleje del elemento disparador durante un redimensionamiento de la ventana.

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: delay: { "show": 500, "hide": 100 }

html boolean false

Permite HTML en el tooltip.

Si es true, las etiquetas HTML en el title del tooltip se renderizarán en el tooltip. Si es false, se usará la propiedad innerText para insertar contenido en el DOM.

Usa texto si te preocupan los ataques XSS.

placement string | function 'top'

Cómo posicionar el tooltip - auto | top | bottom | left | right.
Cuando se especifica auto, reorientará dinámicamente el tooltip.

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 this se establece en la instancia del tooltip.

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 title del tooltip se inyectará en el .tooltip-inner.

.tooltip-arrow se convertirá en la flecha del tooltip.

El elemento contenedor más externo debe tener la clase .tooltip y role="tooltip".

title string | element | function ''

Valor de título por defecto si el atributo title no está presente.

Si se proporciona una función, se llamará con su referencia this establecida en el elemento al que está adjunto el tooltip.

trigger string 'hover focus'

Cómo se activa el tooltip - click | hover | focus | manual. Puedes pasar múltiples disparadores; sepáralos con un espacio.

'manual' indica que el tooltip se activará programáticamente mediante los métodos .show(), .hide() y .toggle(); este valor no se puede combinar con ningún otro disparador.

'hover' por sí solo resultará en tooltips que no pueden activarse mediante el teclado, y solo debería usarse si existen métodos alternativos para transmitir la misma información a los usuarios de teclado.

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: 'class-1 class-2'.

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: data-bs-offset="10,20"

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: [skidding, distance].

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()
Traducción mantenida por Esdocu. Visita esdocu.com para ver más documentaciones traducidas.