Información sobre herramientas
Documentación y ejemplos para agregar información sobre herramientas de Bootstrap personalizada con CSS y JavaScript usando CSS3 para animaciones y data-bs-attributes para el almacenamiento local de títulos.
Visión general
Cosas que debe saber al usar el complemento de información sobre herramientas:
- La información sobre herramientas se basa en la biblioteca de terceros Popper para el posicionamiento. Debe incluir popper.min.js antes
bootstrap.js
o usar unobootstrap.bundle.min.js
que contenga Popper. - La información sobre herramientas está habilitada por motivos de rendimiento, por lo que debe inicializarla usted mismo .
- La información sobre herramientas con títulos de longitud cero nunca se muestra.
- Especifique
container: 'body'
para evitar problemas de representación en componentes más complejos (como nuestros grupos de entrada, grupos de botones, etc.). - La activación de información sobre herramientas en elementos ocultos no funcionará.
- La información sobre herramientas para los elementos
.disabled
odisabled
debe activarse en un elemento contenedor. - Cuando se activa desde hipervínculos que abarcan varias líneas, la información sobre herramientas se centrará. Úselo
white-space: nowrap;
en su<a>
s para evitar este comportamiento. - La información sobre herramientas debe ocultarse antes de que sus elementos correspondientes se eliminen del DOM.
- La información sobre herramientas se puede activar gracias a un elemento dentro de un DOM de sombra.
¿Tienes todo eso? Genial, veamos cómo funcionan con algunos ejemplos.
prefers-reduced-motion
consulta de medios. Consulte la
sección de movimiento reducido de nuestra documentación de accesibilidad .
Ejemplos
Habilitar información sobre herramientas
Como se mencionó anteriormente, debe inicializar la información sobre herramientas antes de poder usarla. Una forma de inicializar toda la información sobre herramientas en una página sería seleccionarla por su data-bs-toggle
atributo, así:
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
Información sobre herramientas en enlaces
Pase el cursor sobre los enlaces a continuación para ver información sobre herramientas:
Texto de marcador de posición para demostrar algunos enlaces en línea con información sobre herramientas. Esto ahora es solo un relleno, no un asesino. Contenido colocado aquí solo para imitar la presencia de texto real . Y todo eso solo para darle una idea de cómo se vería la información sobre herramientas cuando se usa en situaciones del mundo real. Espero que ahora haya visto cómo estos consejos sobre herramientas en los enlaces pueden funcionar en la práctica, una vez que los use en su propio sitio o proyecto.
<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>
title
o
data-bs-title
en su HTML. Cuando
title
se usa, Popper lo reemplazará automáticamente
data-bs-title
cuando se represente el elemento.
Información sobre herramientas personalizada
Añadido en v5.2.0Puede personalizar la apariencia de la información sobre herramientas utilizando variables CSS . Establecemos una clase personalizada con data-bs-custom-class="custom-tooltip"
el alcance de nuestra apariencia personalizada y la usamos para anular una variable CSS local.
.custom-tooltip {
--bs-tooltip-bg: var(--bs-primary);
}
<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
Pase el cursor sobre los botones a continuación para ver las cuatro direcciones de información sobre herramientas: arriba, derecha, abajo e izquierda. Las direcciones se reflejan 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 agregado:
<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.0Como parte del enfoque de variables CSS en evolución de Bootstrap, la información sobre herramientas ahora usa variables CSS locales .tooltip
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.
--#{$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};
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: 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 complemento de información sobre herramientas genera contenido y marcado a pedido y, de forma predeterminada, coloca información sobre herramientas después de su elemento desencadenante.
Active la información sobre herramientas a través de JavaScript:
const exampleEl = document.getElementById('example')
const tooltip = new bootstrap.Tooltip(exampleEl, options)
desbordamiento auto
yscroll
La posición de la información sobre herramientas intenta cambiar automáticamente cuando un contenedor principal tiene overflow: auto
o le overflow: scroll
gusta nuestro .table-responsive
, pero aún mantiene el posicionamiento de la ubicación original. Para resolver esto, configure la boundary
opción (para el modificador flip usando la popperConfig
opción) en cualquier HTMLElement para anular el valor predeterminado 'clippingParents'
, como document.body
:
const tooltip = new bootstrap.Tooltip('#example', {
boundary: document.body // or document.querySelector('#boundary')
})
Margen
El marcado requerido para una información sobre herramientas es solo un data
atributo y title
en el elemento HTML que desea tener una información sobre herramientas. El marcado generado de una información sobre herramientas es bastante simple, aunque requiere una posición (de forma predeterminada, establecida top
por el complemento).
Hacer que la información sobre herramientas funcione para los usuarios de teclados y tecnología de asistencia
Solo debe agregar información sobre herramientas a los elementos HTML que tradicionalmente se pueden enfocar con el teclado y son interactivos (como enlaces o controles de formulario). Aunque los elementos HTML arbitrarios (como <span>
s) se pueden enfocar agregando el tabindex="0"
atributo, esto agregará tabulaciones potencialmente molestas y confusas en elementos no interactivos para usuarios de teclado, y la mayoría de las tecnologías de asistencia actualmente no anuncian la información sobre herramientas en esta situación. Además, no confíe únicamente en hover
el activador de la información sobre herramientas, ya que esto hará que la información sobre herramientas sea imposible de activar para los usuarios del 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 disabled
atributo no son interactivos, lo que significa que los usuarios no pueden enfocarlos, desplazarlos o hacer clic en ellos para activar una información sobre herramientas (o una ventana emergente). Como solución alternativa, querrá activar la información sobre herramientas desde un contenedor <div>
o <span>
, idealmente, se puede enfocar con el teclado usando tabindex="0"
.
<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 a través de atributos de datos o JavaScript, puede agregar un nombre de opción a data-bs-
, como en data-bs-animation="{value}"
. Asegúrese de cambiar el tipo de caso del nombre de la opción de " camelCase " a " kebab-case " al pasar las opciones a través de atributos de datos. Por ejemplo, use data-bs-custom-class="beautifier"
en lugar de data-bs-customClass="beautifier"
.
A partir de Bootstrap 5.2.0, todos los componentes admiten un atributo de datos reservados experimentaldata-bs-config
que puede albergar una configuración de componente simple como una cadena JSON. Cuando un elemento tiene atributos data-bs-config='{"delay":0, "title":123}'
y , el valor final será y los atributos de datos separados anularán los valores dados en . Además, los atributos de datos existentes pueden albergar valores JSON como .data-bs-title="456"
title
456
data-bs-config
data-bs-delay='{"show":0,"hide":150}'
sanitize
opciones
sanitizeFn
, y
allowList
no se pueden proporcionar mediante atributos de datos.
Nombre | Escribe | Defecto | Descripción |
---|---|---|---|
allowList |
objeto | Valor por defecto | Objeto que contiene atributos y etiquetas permitidos. |
animation |
booleano | true |
Aplique una transición de fundido CSS a la información sobre herramientas. |
boundary |
cadena, elemento | 'clippingParents' |
Límite de restricción de desbordamiento de la información sobre herramientas (se aplica solo al modificador preventOverflow de Popper). De forma predeterminada, es 'clippingParents' y puede aceptar una referencia HTMLElement (solo a través de JavaScript). Para obtener más información, consulte la documentación de detectOverflow de Popper . |
container |
cadena, elemento, falso | false |
Agrega la información sobre herramientas a un elemento específico. Ejemplo: container: 'body' . Esta opción es particularmente útil porque le permite colocar la información sobre herramientas en el flujo del documento cerca del elemento de activación, lo que evitará que la información sobre herramientas se separe del elemento de activación durante el cambio de tamaño de la ventana. |
customClass |
cadena, función | '' |
Agregue clases a la información sobre herramientas cuando se muestre. Tenga en cuenta que estas clases se agregarán además de las clases especificadas en la plantilla. Para agregar varias clases, sepárelas con espacios: 'class-1 class-2' . También puede pasar una función que debería devolver una sola cadena que contenga nombres de clases adicionales. |
delay |
número, objeto | 0 |
Retraso en mostrar y ocultar la información sobre herramientas (ms): no se aplica al tipo de disparador manual. Si se proporciona un número, se aplica un retraso tanto para ocultar como para mostrar. La estructura del objeto es: delay: { "show": 500, "hide": 100 } . |
fallbackPlacements |
formación | ['top', 'right', 'bottom', 'left'] |
Defina ubicaciones de respaldo proporcionando una lista de ubicaciones en matriz (en orden de preferencia). Para obtener más información, consulte los documentos de comportamiento de Popper . |
html |
booleano | false |
Permitir HTML en la información sobre herramientas. Si es verdadero, las etiquetas HTML en la información sobre herramientas title se representarán en la información sobre herramientas. Si es falso, innerText la propiedad se usará para insertar contenido en el DOM. Use texto si le preocupan los ataques XSS. |
offset |
matriz, cadena, función | [0, 0] |
Desplazamiento de la información sobre herramientas en relación con su destino. Puede pasar una cadena en atributos de datos 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 ubicación del popper, la referencia y los rects del popper como su primer argumento. El nodo DOM del elemento desencadenante se pasa como segundo argumento. La función debe devolver una matriz con dos números: deslizamiento , distancia . Para obtener más información, consulte los documentos de compensación de Popper . |
placement |
cadena, función | 'top' |
Cómo colocar la información sobre herramientas: automático, arriba, abajo, izquierda, derecha. Cuando auto se especifica, reorientará dinámicamente la información sobre herramientas. Cuando se usa una función para determinar la ubicación, se llama con el nodo DOM de información sobre herramientas como primer argumento y el nodo DOM del elemento desencadenante como segundo. El this contexto se establece en la instancia de información sobre herramientas. |
popperConfig |
nulo, objeto, función | null |
Para cambiar la configuración predeterminada de Popper de Bootstrap, consulte Configuración de Popper . Cuando se usa una función para crear la configuración Popper, se llama con un objeto que contiene la configuración Popper predeterminada de Bootstrap. Le ayuda a usar y fusionar el valor predeterminado con su propia configuración. La función debe devolver un objeto de configuración para Popper. |
sanitize |
booleano | true |
Activa o desactiva la desinfección. Si está activado 'template' , 'content' y 'title' las opciones se desinfectarán. |
sanitizeFn |
nulo, función | null |
Aquí puede proporcionar su propia función de desinfección. Esto puede ser útil si prefiere usar una biblioteca dedicada para realizar la desinfección. |
selector |
cadena, falso | false |
Si se proporciona un selector, los objetos de información sobre herramientas se delegarán a los objetivos especificados. En la práctica, esto también se usa para aplicar información sobre herramientas a elementos DOM agregados dinámicamente ( jQuery.on soporte). Consulte este número y un ejemplo informativo . |
template |
cuerda | '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' |
HTML base para usar al crear la información sobre herramientas. La información sobre herramientas title se inyectará en el archivo .tooltip-inner . .tooltip-arrow se convertirá en la flecha de la información sobre herramientas. El elemento contenedor más externo debe tener la .tooltip clase y role="tooltip" . |
title |
cadena, elemento, función | '' |
Valor de título predeterminado si title el atributo no está presente. Si se proporciona una función, se llamará con su this referencia establecida en el elemento al que se adjunta el popover. |
trigger |
cuerda | 'hover focus' |
Cómo se activa la información sobre herramientas: hacer clic, pasar el cursor, enfocar, manual. Puede pasar varios disparadores; sepáralos con un espacio. 'manual' indica que la información sobre herramientas se activará mediante programación mediante 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 dará como resultado información sobre herramientas que no se puede activar a través del teclado, y solo debe usarse si existen métodos alternativos para transmitir la misma información a los usuarios del teclado. |
Atributos de datos para información sobre herramientas individuales
Las opciones para información sobre herramientas individuales se pueden especificar alternativamente mediante el uso de atributos de datos, como se explicó anteriormente.
Uso de la función conpopperConfig
const tooltip = new bootstrap.Tooltip(element, {
popperConfig(defaultBsPopperConfig) {
// const newPopperConfig = {...}
// use defaultBsPopperConfig if needed...
// return newPopperConfig
}
})
Métodos
Transiciones y métodos asíncronos
Todos los métodos de API son asíncronos e inician una transición . Vuelven a la persona que llama tan pronto como se inicia la transición, pero antes de que finalice . Además, se ignorará una llamada de método en un componente en transición .
Consulte nuestra documentación de JavaScript para obtener más información .
Método | Descripción |
---|---|
disable |
Elimina la capacidad de mostrar la información sobre herramientas de un elemento. La información sobre herramientas solo se podrá mostrar si se vuelve a habilitar. |
dispose |
Oculta y destruye la información sobre herramientas de un elemento (elimina los datos almacenados en el elemento DOM). La información sobre herramientas que utiliza la delegación (que se crea con la selector opción ) no se puede destruir individualmente en los elementos desencadenantes descendientes. |
enable |
Le da a la información sobre herramientas de un elemento la capacidad de mostrarse. La información sobre herramientas está habilitada de forma predeterminada. |
getInstance |
Método estático que le permite obtener la instancia de información sobre herramientas asociada con un elemento DOM, o crear uno nuevo en caso de que no se haya inicializado. |
getOrCreateInstance |
Método estático que le permite obtener la instancia de información sobre herramientas asociada con un elemento DOM, o crear uno nuevo en caso de que no se haya inicializado. |
hide |
Oculta la información sobre herramientas de un elemento. Vuelve a la persona que llama antes de que la información sobre herramientas se haya ocultado (es decir, antes de hidden.bs.tooltip que ocurra el evento). Esto se considera una activación "manual" de la información sobre herramientas. |
setContent |
Brinda una forma de cambiar el contenido de la información sobre herramientas después de su inicialización. |
show |
Revela la información sobre herramientas de un elemento. Vuelve a la persona que llama antes de que se muestre la información sobre herramientas (es decir, antes de shown.bs.tooltip que ocurra el evento). Esto se considera una activación "manual" de la información sobre herramientas. La información sobre herramientas con títulos de longitud cero nunca se muestra. |
toggle |
Alterna la información sobre herramientas de un elemento. Vuelve a la persona que llama antes de que se muestre u oculte la información sobre herramientas (es decir, antes de que ocurra el evento shown.bs.tooltip o ). hidden.bs.tooltip Esto se considera una activación "manual" de la información sobre herramientas. |
toggleEnabled |
Alterna la capacidad de mostrar u ocultar la información sobre herramientas de un elemento. |
update |
Actualiza la posición de la información sobre herramientas de un elemento. |
const tooltip = bootstrap.Tooltip.getInstance('#example') // Returns a Bootstrap tooltip instance
// setContent example
tooltip.setContent({ '.tooltip-inner': 'another title' })
setContent
método acepta un
object
argumento, donde cada clave de propiedad es un
string
selector válido dentro de la plantilla emergente, y cada valor de propiedad relacionado puede ser
string
|
element
|
function
|
null
Eventos
Evento | Descripción |
---|---|
hide.bs.tooltip |
Este evento se activa inmediatamente cuando hide se llama al método de instancia. |
hidden.bs.tooltip |
Este evento se activa cuando el popover ha terminado de ocultarse para el usuario (esperará a que se completen las transiciones de CSS). |
inserted.bs.tooltip |
Este evento se activa después del show.bs.tooltip evento cuando la plantilla de información sobre herramientas se ha agregado al DOM. |
show.bs.tooltip |
Este evento se activa inmediatamente cuando show se llama al método de instancia. |
shown.bs.tooltip |
Este evento se activa cuando el popover se hace visible para el usuario (esperará a que se completen las transiciones de CSS). |
const myTooltipEl = document.getElementById('myTooltip')
const tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl)
myTooltipEl.addEventListener('hidden.bs.tooltip', () => {
// do something...
})
tooltip.hide()