Dicas de ferramentas
Documentação e exemplos para adicionar dicas de ferramentas personalizadas do Bootstrap com CSS e JavaScript usando CSS3 para animações e data-bs-attributes para armazenamento local de títulos.
Visão geral
Coisas para saber ao usar o plug-in de dica de ferramenta:
- As dicas de ferramentas contam com a biblioteca de terceiros Popper para posicionamento. Você deve incluir popper.min.js antes
bootstrap.js
de , ou usar umbootstrap.bundle.min.js
que contenha Popper. - As dicas de ferramentas são opcionais por motivos de desempenho, portanto, você deve inicializá-las .
- Dicas de ferramentas com títulos de comprimento zero nunca são exibidas.
- Especifique
container: 'body'
para evitar problemas de renderização em componentes mais complexos (como nossos grupos de entrada, grupos de botões etc.). - Acionar dicas de ferramentas em elementos ocultos não funcionará.
- As dicas de ferramentas para
.disabled
oudisabled
elementos devem ser acionadas em um elemento wrapper. - Quando acionado a partir de hiperlinks que abrangem várias linhas, as dicas de ferramentas serão centralizadas. Use
white-space: nowrap;
em seus<a>
s para evitar esse comportamento. - As dicas de ferramentas devem ser ocultadas antes que seus elementos correspondentes sejam removidos do DOM.
- As dicas de ferramentas podem ser acionadas graças a um elemento dentro de um shadow DOM.
Tem tudo isso? Ótimo, vamos ver como eles funcionam com alguns exemplos.
prefers-reduced-motion
consulta de mídia. Consulte a
seção de movimento reduzido de nossa documentação de acessibilidade .
Exemplos
Ativar dicas de ferramentas
Conforme mencionado acima, você deve inicializar as dicas de ferramentas antes que elas possam ser usadas. Uma maneira de inicializar todas as dicas de ferramentas em uma página seria selecioná-las por seu data-bs-toggle
atributo, assim:
const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]')
const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl))
Dicas de ferramentas sobre links
Passe o mouse sobre os links abaixo para ver dicas de ferramentas:
Texto de espaço reservado para demonstrar alguns links embutidos com dicas de ferramentas. Isso agora é apenas enchimento, não assassino. Conteúdo colocado aqui apenas para imitar a presença de texto real . E tudo isso apenas para dar uma ideia de como as dicas de ferramentas ficariam quando usadas em situações do mundo real. Espero que você já tenha visto como essas dicas de ferramentas em links podem funcionar na prática, uma vez que você as use em seu próprio site ou projeto.
<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
ou
data-bs-title
em seu HTML. Quando
title
é usado, o Popper irá substituí-lo automaticamente
data-bs-title
quando o elemento for renderizado.
Dicas de ferramentas personalizadas
Adicionado na v5.2.0Você pode personalizar a aparência das dicas de ferramentas usando variáveis CSS . Definimos uma classe personalizada com data-bs-custom-class="custom-tooltip"
o escopo de nossa aparência personalizada e a usamos para substituir uma variável 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>
instruções
Passe o mouse sobre os botões abaixo para ver as quatro direções das dicas de ferramentas: superior, direita, inferior e esquerda. As direções são espelhadas ao usar o Bootstrap em 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>
E com HTML personalizado adicionado:
<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>
Com um SVG:
CSS
Variáveis
Adicionado na v5.2.0Como parte da abordagem de variáveis CSS em evolução do Bootstrap, as dicas de ferramentas agora usam variáveis CSS locais .tooltip
para personalização aprimorada em tempo real. Os valores das variáveis CSS são definidos por meio do Sass, portanto, a personalização do Sass também é suportada.
--#{$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};
Variáveis atrevidas
$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
O plug-in de dica de ferramenta gera conteúdo e marcação sob demanda e, por padrão, coloca dicas de ferramenta após o elemento de acionamento.
Acione a dica de ferramenta via JavaScript:
const exampleEl = document.getElementById('example')
const tooltip = new bootstrap.Tooltip(exampleEl, options)
Estouro auto
escroll
A posição da dica de ferramenta tenta mudar automaticamente quando um contêiner pai tem overflow: auto
ou overflow: scroll
gosta de nosso .table-responsive
, mas ainda mantém o posicionamento do posicionamento original. Para resolver isso, defina a boundary
opção (para o modificador flip usando a popperConfig
opção) para qualquer HTMLElement para substituir o valor padrão, 'clippingParents'
, como document.body
:
const tooltip = new bootstrap.Tooltip('#example', {
boundary: document.body // or document.querySelector('#boundary')
})
Marcação
A marcação necessária para uma dica de ferramenta é apenas um data
atributo e title
no elemento HTML você deseja ter uma dica de ferramenta. A marcação gerada de uma dica de ferramenta é bastante simples, embora exija uma posição (por padrão, definida top
pelo plug-in).
Como fazer com que as dicas de ferramentas funcionem para usuários de teclado e tecnologia assistiva
Você só deve adicionar dicas de ferramentas a elementos HTML que são tradicionalmente focados no teclado e interativos (como links ou controles de formulário). Embora elementos HTML arbitrários (como <span>
s) possam ser focalizados adicionando o tabindex="0"
atributo, isso adicionará paradas de tabulação potencialmente irritantes e confusas em elementos não interativos para usuários de teclado, e a maioria das tecnologias assistivas atualmente não anuncia a dica de ferramenta nessa situação. Além disso, não confie apenas no hover
gatilho para sua dica de ferramenta, pois isso tornará suas dicas de ferramenta impossíveis de serem acionadas para usuários 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 desativados
Os elementos com o disabled
atributo não são interativos, o que significa que os usuários não podem focar, passar o mouse ou clicar neles para acionar uma dica de ferramenta (ou popover). Como solução alternativa, você desejará acionar a dica de ferramenta de um wrapper <div>
ou <span>
, idealmente focado no 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>
Opções
Como as opções podem ser passadas por meio de atributos de dados ou JavaScript, você pode anexar um nome de opção a data-bs-
, como em data-bs-animation="{value}"
. Certifique-se de alterar o tipo de caso do nome da opção de “ camelCase ” para “ kebab-case ” ao passar as opções por meio de atributos de dados. Por exemplo, use data-bs-custom-class="beautifier"
em vez de data-bs-customClass="beautifier"
.
A partir do Bootstrap 5.2.0, todos os componentes oferecem suporte a um atributo experimental de dados reservados data-bs-config
que pode abrigar a configuração simples do componente como uma string JSON. Quando um elemento tem atributos data-bs-config='{"delay":0, "title":123}'
e data-bs-title="456"
, o valor final title
será 456
e os atributos de dados separados substituirão os valores fornecidos em data-bs-config
. Além disso, os atributos de dados existentes podem hospedar valores JSON como data-bs-delay='{"show":0,"hide":150}'
.
sanitize
opções
sanitizeFn
, e
allowList
não podem ser fornecidas usando atributos de dados.
Nome | Modelo | Predefinição | Descrição |
---|---|---|---|
allowList |
objeto | Valor padrão | Objeto que contém atributos e tags permitidos. |
animation |
boleano | true |
Aplique uma transição de fade CSS à dica de ferramenta. |
boundary |
corda, elemento | 'clippingParents' |
Limite de restrição de estouro da dica de ferramenta (aplica-se apenas ao modificador preventOverflow de Popper). Por padrão, é 'clippingParents' e pode aceitar uma referência HTMLElement (somente via JavaScript). Para obter mais informações, consulte os documentos detectOverflow do Popper . |
container |
string, elemento, falso | false |
Acrescenta a dica de ferramenta a um elemento específico. Exemplo: container: 'body' . Esta opção é particularmente útil porque permite que você posicione a dica de ferramenta no fluxo do documento próximo ao elemento acionador - o que impedirá que a dica de ferramenta flutue para longe do elemento acionador durante o redimensionamento da janela. |
customClass |
corda, função | '' |
Adicione classes à dica de ferramenta quando ela for exibida. Observe que essas classes serão adicionadas além de quaisquer classes especificadas no modelo. Para adicionar várias classes, separe-as com espaços: 'class-1 class-2' . Você também pode passar uma função que deve retornar uma única string contendo nomes de classes adicionais. |
delay |
número, objeto | 0 |
Atraso na exibição e ocultação da dica de ferramenta (ms) — não se aplica ao tipo de acionamento manual. Se um número for fornecido, o atraso será aplicado a ocultar/exibir. A estrutura do objeto é: delay: { "show": 500, "hide": 100 } . |
fallbackPlacements |
variedade | ['top', 'right', 'bottom', 'left'] |
Defina as veiculações de fallback fornecendo uma lista de veiculações na matriz (em ordem de preferência). Para obter mais informações, consulte os documentos de comportamento de Popper . |
html |
boleano | false |
Permitir HTML na dica de ferramenta. Se true, as tags HTML na dica de ferramenta title serão renderizadas na dica de ferramenta. Se false, innerText a propriedade será usada para inserir conteúdo no DOM. Use texto se estiver preocupado com ataques XSS. |
offset |
array, string, função | [0, 0] |
Deslocamento da dica de ferramenta em relação ao seu destino. Você pode passar uma string em atributos de dados com valores separados por vírgulas como: data-bs-offset="10,20" . Quando uma função é usada para determinar o deslocamento, ela é chamada com um objeto contendo o posicionamento do popper, a referência e os retos do popper como seu primeiro argumento. O nó DOM do elemento acionador é passado como o segundo argumento. A função deve retornar um array com dois números: skidding , distance . Para obter mais informações, consulte os documentos de deslocamento de Popper . |
placement |
corda, função | 'top' |
Como posicionar a dica de ferramenta: auto, superior, inferior, esquerda, direita. Quando auto for especificado, ele reorientará dinamicamente a dica de ferramenta. Quando uma função é usada para determinar o posicionamento, ela é chamada com o nó DOM da dica de ferramenta como seu primeiro argumento e o nó DOM do elemento acionador como seu segundo. O this contexto é definido para a instância da dica de ferramenta. |
popperConfig |
nulo, objeto, função | null |
Para alterar a configuração padrão do Popper do Bootstrap, consulte a configuração do Popper . Quando uma função é usada para criar a configuração do Popper, ela é chamada com um objeto que contém a configuração padrão do Popper do Bootstrap. Ele ajuda você a usar e mesclar o padrão com sua própria configuração. A função deve retornar um objeto de configuração para Popper. |
sanitize |
boleano | true |
Habilite ou desabilite a higienização. Se ativado 'template' , 'content' as 'title' opções serão higienizadas. |
sanitizeFn |
nulo, função | null |
Aqui você pode fornecer sua própria função de higienização. Isso pode ser útil se você preferir usar uma biblioteca dedicada para realizar a higienização. |
selector |
corda, falso | false |
Se um seletor for fornecido, os objetos de dica de ferramenta serão delegados aos destinos especificados. Na prática, isso também é usado para aplicar dicas de ferramentas a elementos DOM adicionados dinamicamente ( jQuery.on suporte). Veja esta edição e um exemplo informativo . |
template |
corda | '<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' |
HTML base a ser usado ao criar a dica de ferramenta. As dicas de ferramentas title serão injetadas no arquivo .tooltip-inner . .tooltip-arrow se tornará a seta da dica de ferramenta. O elemento wrapper mais externo deve ter a .tooltip classe e role="tooltip" . |
title |
string, elemento, função | '' |
Valor de título padrão se o title atributo não estiver presente. Se uma função for fornecida, ela será chamada com sua this referência definida para o elemento ao qual o popover está anexado. |
trigger |
corda | 'hover focus' |
Como a dica de ferramenta é acionada: clique, passe o mouse, foco, manual. Você pode passar vários gatilhos; separe-os com um espaço. 'manual' indica que a dica de ferramenta será acionada programaticamente por meio dos métodos .tooltip('show') , .tooltip('hide') e ; .tooltip('toggle') este valor não pode ser combinado com nenhum outro acionador. 'hover' por si só resultará em dicas de ferramentas que não podem ser acionadas pelo teclado e só devem ser usadas se houver métodos alternativos para transmitir as mesmas informações para usuários de teclado. |
Atributos de dados para dicas de ferramentas individuais
Opções para dicas de ferramentas individuais podem ser especificadas alternativamente por meio do uso de atributos de dados, conforme explicado acima.
Usando a função compopperConfig
const tooltip = new bootstrap.Tooltip(element, {
popperConfig(defaultBsPopperConfig) {
// const newPopperConfig = {...}
// use defaultBsPopperConfig if needed...
// return newPopperConfig
}
})
Métodos
Métodos e transições assíncronas
Todos os métodos de API são assíncronos e iniciam uma transição . Eles retornam ao chamador assim que a transição é iniciada, mas antes que ela termine . Além disso, uma chamada de método em um componente de transição será ignorada .
Consulte nossa documentação JavaScript para obter mais informações .
Método | Descrição |
---|---|
disable |
Remove a capacidade de mostrar a dica de ferramenta de um elemento. A dica de ferramenta só poderá ser exibida se for reativada. |
dispose |
Oculta e destrói a dica de ferramenta de um elemento (remove os dados armazenados no elemento DOM). As dicas de ferramentas que usam delegação (que são criadas usando a selector opção ) não podem ser destruídas individualmente em elementos acionadores descendentes. |
enable |
Dá à dica de ferramenta de um elemento a capacidade de ser mostrada. As dicas de ferramentas são habilitadas por padrão. |
getInstance |
Método estático que permite obter a instância da dica de ferramenta associada a um elemento DOM ou criar uma nova caso não tenha sido inicializada. |
getOrCreateInstance |
Método estático que permite obter a instância da dica de ferramenta associada a um elemento DOM ou criar uma nova caso não tenha sido inicializada. |
hide |
Oculta a dica de ferramenta de um elemento. Retorna ao chamador antes que a dica de ferramenta tenha sido ocultada (ou seja, antes que o hidden.bs.tooltip evento ocorra). Isso é considerado um acionamento “manual” da dica de ferramenta. |
setContent |
Fornece uma maneira de alterar o conteúdo da dica de ferramenta após sua inicialização. |
show |
Revela a dica de ferramenta de um elemento. Retorna ao chamador antes que a dica de ferramenta tenha sido mostrada (ou seja, antes que o shown.bs.tooltip evento ocorra). Isso é considerado um acionamento “manual” da dica de ferramenta. Dicas de ferramentas com títulos de comprimento zero nunca são exibidas. |
toggle |
Alterna a dica de ferramenta de um elemento. Retorna ao chamador antes que a dica de ferramenta tenha sido mostrada ou ocultada (ou seja, antes que o evento shown.bs.tooltip ou hidden.bs.tooltip ocorra). Isso é considerado um acionamento “manual” da dica de ferramenta. |
toggleEnabled |
Alterna a capacidade de mostrar ou ocultar a dica de ferramenta de um elemento. |
update |
Atualiza a posição da dica de ferramenta de um elemento. |
const tooltip = bootstrap.Tooltip.getInstance('#example') // Returns a Bootstrap tooltip instance
// setContent example
tooltip.setContent({ '.tooltip-inner': 'another title' })
setContent
método aceita um
object
argumento, em que cada chave de propriedade é um
string
seletor válido dentro do modelo popover e cada valor de propriedade relacionado pode ser
string
|
element
|
function
|
null
Eventos
Evento | Descrição |
---|---|
hide.bs.tooltip |
Este evento é acionado imediatamente quando o hide método de instância é chamado. |
hidden.bs.tooltip |
Este evento é acionado quando o popover termina de ser ocultado do usuário (aguardará a conclusão das transições CSS). |
inserted.bs.tooltip |
Este evento é acionado após o show.bs.tooltip evento quando o modelo de dica de ferramenta foi adicionado ao DOM. |
show.bs.tooltip |
Este evento é acionado imediatamente quando o show método de instância é chamado. |
shown.bs.tooltip |
Este evento é acionado quando o popover se torna visível para o usuário (aguardará a conclusão das transições CSS). |
const myTooltipEl = document.getElementById('myTooltip')
const tooltip = bootstrap.Tooltip.getOrCreateInstance(myTooltipEl)
myTooltipEl.addEventListener('hidden.bs.tooltip', () => {
// do something...
})
tooltip.hide()