Bootstrap - Tooltips

Creating a Basic Tooltip

To create a basic Bootstrap Tooltip, add the data-bs-toggle="tooltip" attribute to an element. The title attribute specifies the content of the Tooltip.

Example: Basic Tooltip

<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" title="Tooltip text">
  Hover over me
</button>

By default, Tooltips are triggered when you hover over the element. You can change this behavior using the data-bs-trigger attribute. The possible values are:

Value Description
hover The Tooltip is triggered when you hover over the element (default).
click The Tooltip is triggered when you click on the element.
focus The Tooltip is triggered when the element receives focus.
manual The Tooltip is triggered manually using JavaScript.

Example: Tooltip Trigger

<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-trigger="click" title="Tooltip text">
  Click me
</button>

You can also specify the placement of the Tooltip relative to the element using the data-bs-placement attribute. The possible values are:

Value Description
top The Tooltip is placed above the element (default).
bottom The Tooltip is placed below the element.
left The Tooltip is placed to the left of the element.
right The Tooltip is placed to the right of the element.

Example: Tooltip Placement

<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Tooltip text">
  Hover over me
</button>

To make the Tooltips work, initialize them using JavaScript. You can do this by calling the tooltip() method on the elements that have the data-bs-toggle="tooltip" attribute.

Example: Initialize Tooltips

$(document).ready(function(){
  $('[data-bs-toggle="tooltip"]').tooltip();
});

This code selects all elements with the data-bs-toggle="tooltip" attribute and initializes the Tooltip functionality on them.

Customizing Tooltips

Bootstrap Tooltips provide several options for customization, allowing you to change the content, style, and behavior of Tooltips to suit your needs.

Changing the Content of a Tooltip

By default, the content of a Tooltip is specified using the title attribute of the element. However, you can also change the content dynamically using JavaScript.

To change the Tooltip content, you can use the data-bs-title attribute instead of the title attribute. This allows you to specify the content using JavaScript or bind it to a dynamic value.

Example: Changing the Content of a Tooltip

<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-title="Dynamic Tooltip content">
  Hover over me
</button>
$(document).ready(function(){
  $('[data-bs-toggle="tooltip"]').tooltip({
    title: function(){
      return "Dynamic Tooltip content: " + $(this).data('bs-title');
    }
  });
});

Styling Tooltips with CSS

Bootstrap Tooltips come with a default style, but you can customize their appearance using CSS. The Tooltip element has the class .tooltip, and the Tooltip arrow has the class .tooltip-arrow.

To style Tooltips, you can target these classes in your CSS:

Example: Styling Tooltips with CSS

.tooltip {
  background-color: #000;
  color: #fff;
  border-radius: 4px;
  padding: 8px;
}

.tooltip-arrow {
  border-top-color: #000;
}

In the example above, the Tooltip background color is set to black, the text color is set to white, the border-radius is adjusted, and the padding is increased. The arrow color is also set to match the Tooltip background color.

Using HTML inside Tooltips

By default, Tooltips only support plain text content. However, you can enable HTML content inside Tooltips by setting the html option to true when initializing the Tooltip.

Example: Using HTML inside Tooltips

<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-html="true" title="<strong>Bold</strong> <em>italic</em> text">
  Hover over me
</button>
$(document).ready(function(){
  $('[data-bs-toggle="tooltip"]').tooltip({
    html: true
  });
});

With these customization options, you can tailor the appearance and behavior of Bootstrap Tooltips to match your project's design and requirements.

Tooltip Options

Bootstrap Tooltips have several options that let you control their behavior and appearance. Let's look at some of these options.

Delay Option for Showing and Hiding Tooltips

By default, Tooltips show right away when the triggering event happens (e.g., hovering over the element). However, you can add a delay before the Tooltip is shown or hidden using the delay option.

The delay option takes an object with two properties: show and hide. These properties set the delay time in milliseconds for showing and hiding the Tooltip.

Example: Setting the delay option

$(document).ready(function(){
  $('[data-bs-toggle="tooltip"]').tooltip({
    delay: { show: 500, hide: 100 }
  });
});

The Tooltip will show after a delay of 500 milliseconds (0.5 seconds) when the triggering event happens, and it will be hidden after a delay of 100 milliseconds (0.1 seconds) when the event ends.

Setting the Container for Tooltips

By default, Tooltips are added to the <body> element. However, you can set a custom container for the Tooltips using the container option. This helps when you want to avoid overlapping issues or make sure Tooltips are positioned right within a specific element.

Example: Setting a custom container for tooltips

$(document).ready(function(){
  $('[data-bs-toggle="tooltip"]').tooltip({
    container: '.my-container'
  });
});

The Tooltips will be added to the element with the class .my-container instead of the <body> element.

Enabling or Disabling Animation

Bootstrap Tooltips have a fade animation by default when they are shown or hidden. If you want to turn off the animation, you can set the animation option to false.

Example: Disabling tooltip animation

$(document).ready(function(){
  $('[data-bs-toggle="tooltip"]').tooltip({
    animation: false
  });
});

With the animation option set to false, the Tooltips will show and hide instantly without any fade animation.

These are just a few of the options you can use to customize Bootstrap Tooltips. By combining these options with the ones talked about in the previous sections, you can change the behavior and appearance of Tooltips to match your project's needs.

Tooltip Methods

Bootstrap Tooltips have several methods that allow you to control their behavior with code. These methods can be used to show, hide, destroy, or toggle Tooltips.

Showing and Hiding Tooltips with Code

You can show or hide Tooltips using JavaScript methods. To show a Tooltip, call the show() method on the element that has the Tooltip. To hide a Tooltip, call the hide() method.

Example: HTML for Tooltip Buttons

<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" title="Tooltip text" id="myTooltip">
  Hover over me
</button>

<button type="button" class="btn btn-primary" id="showTooltip">Show Tooltip</button>
<button type="button" class="btn btn-danger" id="hideTooltip">Hide Tooltip</button>

Example: JavaScript for Showing and Hiding Tooltips

$(document).ready(function(){
  $('#myTooltip').tooltip();

  $('#showTooltip').click(function(){
    $('#myTooltip').tooltip('show');
  });

  $('#hideTooltip').click(function(){
    $('#myTooltip').tooltip('hide');
  });
});

Clicking the "Show Tooltip" button will show the Tooltip with code, and clicking the "Hide Tooltip" button will hide it.

Destroying Tooltips

If you no longer need a Tooltip, you can destroy it using the dispose() method. This will remove the Tooltip from the element and clean up any event listeners.

Example: HTML for Destroy Tooltip Button

<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" title="Tooltip text" id="myTooltip">
  Hover over me
</button>

<button type="button" class="btn btn-danger" id="destroyTooltip">Destroy Tooltip</button>

Example: JavaScript for Destroying Tooltips

$(document).ready(function(){
  $('#myTooltip').tooltip();

  $('#destroyTooltip').click(function(){
    $('#myTooltip').tooltip('dispose');
  });
});

After calling the dispose() method, the Tooltip will be removed, and hovering over the element will no longer show the Tooltip.

Toggling Tooltips

You can toggle the visibility of a Tooltip using the toggle() method. If the Tooltip is currently hidden, calling toggle() will show it, and if the Tooltip is currently visible, calling toggle() will hide it.

Example: HTML for Toggling Tooltip Button

<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" title="Tooltip text" id="myTooltip">
  Hover over me
</button>

<button type="button" class="btn btn-primary" id="toggleTooltip">Toggle Tooltip</button>

Example: JavaScript for Toggling Tooltips

$(document).ready(function(){
  $('#myTooltip').tooltip();

  $('#toggleTooltip').click(function(){
    $('#myTooltip').tooltip('toggle');
  });
});

Clicking the "Toggle Tooltip" button will show and hide the Tooltip each time it is clicked.

These methods give you full control over the behavior of Bootstrap Tooltips, allowing you to show, hide, destroy, or toggle them based on your application's needs.

Tooltip Events

Bootstrap Tooltips fire several events that you can listen to and handle with JavaScript. These events let you react to changes in the state of a Tooltip and perform actions based on those changes.

Events Fired by Tooltips

Bootstrap Tooltips fire these events:

Event Description
show.bs.tooltip Fired when the show method is called.
shown.bs.tooltip Fired when the Tooltip has been made visible to the user.
hide.bs.tooltip Fired when the hide method is called.
hidden.bs.tooltip Fired when the Tooltip has finished being hidden from the user.
inserted.bs.tooltip Fired after the show.bs.tooltip event when the Tooltip template has been added to the DOM.

These events provide hooks for you to run your own code at specific points in the Tooltip's lifecycle.

Listening to Tooltip Events

To listen to Tooltip events, you can use the on() method in jQuery and attach event handlers to the events you want.

Example: Listening to Tooltip Events

<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" title="Tooltip text" id="myTooltip">
  Hover over me
</button>
$(document).ready(function(){
  $('#myTooltip').tooltip();

  $('#myTooltip').on('show.bs.tooltip', function () {
    console.log('Tooltip is about to be shown');
  });

  $('#myTooltip').on('shown.bs.tooltip', function () {
    console.log('Tooltip is fully visible');
  });

  $('#myTooltip').on('hide.bs.tooltip', function () {
    console.log('Tooltip is about to be hidden');
  });

  $('#myTooltip').on('hidden.bs.tooltip', function () {
    console.log('Tooltip is fully hidden');
  });

  $('#myTooltip').on('inserted.bs.tooltip', function () {
    console.log('Tooltip template has been added to the DOM');
  });
});

In the example above, we attach event handlers to the various Tooltip events using the on() method. Each event handler logs a message to the console when the event is fired.

Handling Tooltip Events with JavaScript

By handling Tooltip events with JavaScript, you can perform actions based on the state of the Tooltip. For example, you can update the content of the Tooltip when it is shown or perform some cleanup when the Tooltip is hidden.

Example: Handling Tooltip Events with JavaScript

<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" title="Initial Tooltip text" id="myTooltip">
  Hover over me
</button>
$(document).ready(function(){
  $('#myTooltip').tooltip();

  $('#myTooltip').on('shown.bs.tooltip', function () {
    // Update the Tooltip content when it is shown
    $(this).attr('data-bs-original-title', 'Updated Tooltip text');
    $(this).tooltip('show');
  });

  $('#myTooltip').on('hidden.bs.tooltip', function () {
    // Reset the Tooltip content when it is hidden
    $(this).attr('data-bs-original-title', 'Initial Tooltip text');
  });
});

In this example, we handle the shown.bs.tooltip event to update the content of the Tooltip when it is shown. We change the data-bs-original-title attribute to a new value and call the show() method to update the displayed Tooltip.

We also handle the hidden.bs.tooltip event to reset the Tooltip content back to its initial value when the Tooltip is hidden.

By using Tooltip events, you can create interactive and dynamic Tooltips that respond to user actions and changes in the state of the Tooltip. This allows for a more engaging user experience and provides opportunities to display relevant information based on the user's interaction with the Tooltip.