Saltar al contenido principal Saltar a la navegación de la documentación
Check
¡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 que contiene Popper.
  • 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.

¿Entendido todo? Genial, veamos cómo funcionan con algunos ejemplos.

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.

Ejemplos

Habilitar tooltips

Como se mencionó anteriormente, debes inicializar los tooltips antes de poder usarlos. Una forma de inicializar todos los tooltips en una página sería seleccionarlos por su atributo data-bs-toggle, así:

const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))

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.

html
<p class="muted">Placeholder text to demonstrate some <a href="#" data-bs-toggle="tooltip" data-bs-title="Default tooltip">inline links</a> with tooltips. This is now just filler, no killer. Content placed here just to mimic the presence of <a href="#" data-bs-toggle="tooltip" data-bs-title="Another tooltip">real text</a>. And all that just to give you an idea of how tooltips would look when used in real-world situations. So hopefully you've now seen how <a href="#" data-bs-toggle="tooltip" data-bs-title="Another one here too">these tooltips on links</a> can work in practice, once you use them on <a href="#" data-bs-toggle="tooltip" data-bs-title="The last tip!">your own</a> site or project.
</p>
Puedes usar title o data-bs-title en tu HTML. Cuando se usa title, Popper lo reemplazará automáticamente con data-bs-title cuando el elemento se renderice.

Tooltips personalizados

Añadido en v5.2.0

Puedes personalizar la apariencia de los tooltips usando variables CSS. Establecemos una clase personalizada con data-bs-custom-class="custom-tooltip" para delimitar nuestra apariencia personalizada y la usamos para sobrescribir una variable CSS local.

.custom-tooltip {
  --bs-tooltip-bg: var(--bs-primary);
}
html
<button type="button" class="btn btn-secondary"
        data-bs-toggle="tooltip" data-bs-placement="top"
        data-bs-custom-class="custom-tooltip"
        data-bs-title="This top tooltip is themed via CSS variables.">
  Custom tooltip
</button>

Direcciones

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" data-bs-title="Tooltip on top">
  Tooltip on top
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="right" data-bs-title="Tooltip on right">
  Tooltip on right
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="bottom" data-bs-title="Tooltip on bottom">
  Tooltip on bottom
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="left" data-bs-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" data-bs-title="<em>Tooltip</em> <u>with</u> <b>HTML</b>">
  Tooltip with HTML
</button>

Con un SVG:

CSS

Variables

Añadido en v5.2.0

Como parte del enfoque evolutivo de variables CSS de Bootstrap, los tooltips ahora usan variables CSS locales en .tooltip 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}tooltip-zindex: #{$zindex-tooltip};
  --#{$prefix}tooltip-max-width: #{$tooltip-max-width};
  --#{$prefix}tooltip-padding-x: #{$tooltip-padding-x};
  --#{$prefix}tooltip-padding-y: #{$tooltip-padding-y};
  --#{$prefix}tooltip-margin: #{$tooltip-margin};
  @include rfs($tooltip-font-size, --#{$prefix}tooltip-font-size);
  --#{$prefix}tooltip-color: #{$tooltip-color};
  --#{$prefix}tooltip-bg: #{$tooltip-bg};
  --#{$prefix}tooltip-border-radius: #{$tooltip-border-radius};
  --#{$prefix}tooltip-opacity: #{$tooltip-opacity};
  --#{$prefix}tooltip-arrow-width: #{$tooltip-arrow-width};
  --#{$prefix}tooltip-arrow-height: #{$tooltip-arrow-height};
  

Variables Sass

$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:                    null; // TODO: remove this in v6

$tooltip-arrow-width:               .8rem;
$tooltip-arrow-height:              .4rem;
// fusv-disable
$tooltip-arrow-color:               null; // Deprecated in Bootstrap 5.2.0 for CSS variables
// fusv-enable

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:

const exampleEl = document.getElementById('example')
const 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:

const tooltip = new bootstrap.Tooltip('#example', {
  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ía 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" data-bs-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".

html
<span class="d-inline-block" tabindex="0" data-bs-toggle="tooltip" data-bs-title="Disabled tooltip">
  <button class="btn btn-primary" type="button" disabled>Disabled button</button>
</span>

Opciones

Como las opciones se pueden pasar vía atributos data o JavaScript, puedes añadir un nombre de opción a data-bs-, como en data-bs-animation="{value}". Asegúrate de cambiar el tipo de capitalización del nombre de la opción de “camelCase” a “kebab-case” al pasar las opciones vía atributos data. Por ejemplo, usa data-bs-custom-class="beautifier" en lugar de data-bs-customClass="beautifier".

A partir de Bootstrap 5.2.0, todos los componentes soportan un atributo data reservado experimental data-bs-config que puede albergar una configuración simple del componente como una cadena JSON. Cuando un elemento tiene los atributos data-bs-config='{"delay":0, "title":123}' y data-bs-title="456", el valor final de title será 456 y los atributos data separados sobrescribirán los valores dados en data-bs-config. Además, los atributos data existentes pueden albergar valores JSON como data-bs-delay='{"show":0,"hide":150}'.

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
allowList object Valor por defecto Objeto que contiene atributos y etiquetas permitidos.
animation boolean true Aplica una transición CSS de fundido al tooltip.
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.
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.
customClass string, function '' Añade clases al tooltip cuando se muestra. Ten en cuenta que estas clases se añadirán además de las clases especificadas en la plantilla. Para añadir múltiples clases, sepáralas con espacios: 'class-1 class-2'. También puedes pasar una función que devuelva una sola cadena con los nombres de clase adicionales.
delay number, object 0 Retrasa la muestra y ocultamiento del tooltip (ms)—no se aplica al tipo de disparo manual. Si se proporciona un número, el retardo se aplica tanto a ocultar/mostrar. La estructura del objeto es: delay: { "show": 500, "hide": 100 }.
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 behavior de Popper.
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.
offset array, string, function [0, 0] Desplazamiento del tooltip relativo a su objetivo. Puedes pasar una cadena en 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 del popper, la referencia y los rects del 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.
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 colocació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.
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.
sanitize boolean true Habilita o deshabilita la sanitización. Si se activa, las opciones 'template', 'content' y 'title' se sanitizarán.
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.
selector string, false false Si se proporciona un selector, los objetos tooltip se delegarán a los objetivos especificados. En la práctica, esto se usa para aplicar también tooltips a elementos DOM añadidos dinámicamente (soporte de jQuery.on). Consulta este issue y un ejemplo informativo. Nota: el atributo title no debe usarse como selector.
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 predeterminado 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 popover.
trigger string 'hover focus' Cómo se dispara el tooltip: click, hover, focus, manual. Puedes pasar múltiples disparadores; sepáralos con un espacio. 'manual' indica que el tooltip se disparará programáticamente vía los métodos .tooltip('show'), .tooltip('hide') y .tooltip('toggle'); este valor no se puede combinar con ningún otro disparador. 'hover' por sí solo resultará en tooltips que no pueden ser disparados vía teclado, y solo debe usarse si existen métodos alternativos para transmitir la misma información a los usuarios de teclado.

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.

Usando una función con popperConfig

const tooltip = new bootstrap.Tooltip(element, {
  popperConfig(defaultBsPopperConfig) {
    // const 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.

Método Descripción
disable Elimina la capacidad de mostrar el tooltip de un elemento. El tooltip solo podrá mostrarse si se vuelve a habilitar.
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.
enable Le da al tooltip de un elemento la capacidad de mostrarse. Los tooltips están habilitados por defecto.
getInstance Método estático que te permite obtener la instancia de tooltip asociada con un elemento del DOM, o crear una nueva en caso de que no estuviera inicializada.
getOrCreateInstance Método estático que te permite obtener la instancia de tooltip asociada con un elemento del DOM, o crear una nueva en caso de que no estuviera inicializada.
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.
setContent Permite cambiar el contenido del tooltip después de su inicializació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.
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.
toggleEnabled Alterna la capacidad de mostrar u ocultar el tooltip de un elemento.
update Actualiza la posición del tooltip de un elemento.
const tooltip = bootstrap.Tooltip.getInstance('#example') // Returns a Bootstrap tooltip instance

// setContent example
tooltip.setContent({ '.tooltip-inner': 'another title' })
El método setContent acepta un argumento object, donde cada clave de propiedad es un selector string válido dentro de la plantilla del popover, y cada valor de propiedad relacionado puede ser string | element | function | null

Eventos

Evento Descripción
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 popover ha terminado de ocultarse al 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.
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 popover se ha hecho visible al usuario (esperará a que se completen las transiciones CSS).
const myTooltipEl = document.getElementById('myTooltip')
const tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl)

myTooltipEl.addEventListener('hidden.bs.tooltip', () => {
  // do something...
})

tooltip.hide()
Traducción mantenida por Esdocu. Visita esdocu.com para ver más documentaciones traducidas.