Bootstrap 4 tooltips provide small pop-up messages that appear when users hover over or focus on an element.
Tooltips are useful for displaying additional information about an element without cluttering the UI.
What This Tutorial Covers:
- Basic Bootstrap 4 tooltip usage
- Tooltip positions
- Tooltip triggers (hover, click, focus)
- Customizing tooltip colors and styles
- Adding HTML content inside tooltips
- JavaScript methods to control tooltips
1. Basic Bootstrap 4 Tooltip
Example:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Bootstrap 4 Tooltip</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
</head>
<body>
<div class="container mt-4">
<button type="button" class="btn btn-primary" data-toggle="tooltip" title="This is a tooltip">
Hover over me
</button>
</div>
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"></script>
<script>
$(function () {
$('[data-toggle="tooltip"]').tooltip();
});
</script>
</body>
</html>
Explanation:
- The data-toggle=”tooltip” attribute activates the tooltip.
- title=”This is a tooltip” specifies the tooltip text.
- The JavaScript function initializes the tooltip on all elements with data-toggle=”tooltip”.
2. Tooltip Positions
Tooltips can be positioned top, bottom, left, or right using data-placement.
Example:
<button class="btn btn-secondary" data-toggle="tooltip" data-placement="top" title="Tooltip on top">
Top
</button>
<button class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom" title="Tooltip on bottom">
Bottom
</button>
<button class="btn btn-secondary" data-toggle="tooltip" data-placement="left" title="Tooltip on left">
Left
</button>
<button class="btn btn-secondary" data-toggle="tooltip" data-placement="right" title="Tooltip on right">
Right
</button>
Explanation:
- data-placement=”top” places the tooltip above the button.
- data-placement=”bottom” places it below.
- data-placement=”left” and data-placement=”right” position it accordingly.
3. Tooltip Triggers
By default, tooltips appear on hover. You can change this behavior using data-trigger.
Available Triggers:
| Trigger | Description |
|---|---|
| hover | Default, shows on mouse hover |
| click | Shows when clicked |
| focus | Shows when element gains focus (useful for form inputs) |
| manual | Tooltip appears only when triggered via JavaScript |
Example: Click to Show Tooltip
<button class="btn btn-warning" data-toggle="tooltip" data-trigger="click" title="Click to see tooltip">
Click me
</button>
Example: Focus on Input Field
<input type="text" class="form-control" data-toggle="tooltip" data-trigger="focus" title="Enter your name">
Explanation:
- data-trigger=”click” makes the tooltip appear only when clicked.
- data-trigger=”focus” ensures tooltips appear when focusing on an input.
4. Customizing Tooltip Colors
Bootstrap 4 does not provide built-in styling for tooltip colors, but you can customize it using CSS.
Example: Custom Tooltip Background
<style>
.custom-tooltip .tooltip-inner {
background-color: #ff5733;
color: white;
font-size: 14px;
}
.custom-tooltip .arrow::before {
border-top-color: #ff5733 !important;
}
</style>
<button class="btn btn-dark custom-tooltip" data-toggle="tooltip" title="Custom styled tooltip">
Hover over me
</button>
Explanation:
- .tooltip-inner customizes the tooltip background color, text color, and font size.
- .arrow::before changes the tooltip arrow color.
5. Adding HTML Content Inside Tooltips
By default, tooltips support plain text only. To enable HTML inside tooltips, use data-html=”true”.
Example:
<button class="btn btn-info" data-toggle="tooltip" data-html="true" title="<b>Bold text</b> <br> New line">
Hover for HTML tooltip
</button>
Explanation:
- data-html=”true” allows formatting like <b>Bold text</b> and <br> for new lines.
6. Using JavaScript to Control Tooltips
You can manually show, hide, toggle, or destroy tooltips using JavaScript.
Example: Show and Hide Tooltip
<button id="showTooltip" class="btn btn-success">Show Tooltip</button>
<button id="hideTooltip" class="btn btn-danger">Hide Tooltip</button>
<button id="tooltipElement" class="btn btn-primary" data-toggle="tooltip" title="Tooltip controlled with JavaScript">
Tooltip Target
</button>
<script>
$(document).ready(function () {
$('#showTooltip').click(function () {
$('#tooltipElement').tooltip('show');
});
$('#hideTooltip').click(function () {
$('#tooltipElement').tooltip('hide');
});
});
</script>
Explanation:
- .tooltip(‘show’) manually displays the tooltip.
- .tooltip(‘hide’) hides the tooltip when clicked.
7. Initializing Tooltips for Dynamic Elements
If elements are dynamically added to the page, they need tooltips initialized manually.
Example:
<button id="addButton" class="btn btn-warning">Add Tooltip Button</button>
<div id="dynamicContainer"></div>
<script>
$(document).ready(function () {
$('#addButton').click(function () {
$('#dynamicContainer').append('<button class="btn btn-primary new-tooltip" data-toggle="tooltip" title="New Tooltip">New Button</button>');
$('.new-tooltip').tooltip();
});
});
</script>
Explanation:
- A new button with a tooltip is dynamically added to the page.
- .tooltip() initializes tooltips on the new element.
8. Tooltip Inside a Modal
Tooltips do not work inside Bootstrap modals by default because modals use z-index. The fix is to initialize tooltips when the modal is opened.
Example:
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#tooltipModal">
Open Modal
</button>
<div class="modal fade" id="tooltipModal">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Tooltip in Modal</h5>
<button type="button" class="close" data-dismiss="modal">×</button>
</div>
<div class="modal-body">
<button class="btn btn-secondary" data-toggle="tooltip" title="Tooltip inside modal">
Hover here
</button>
</div>
</div>
</div>
</div>
<script>
$('#tooltipModal').on('shown.bs.modal', function () {
$('[data-toggle="tooltip"]').tooltip();
});
</script>
Explanation:
- Tooltips inside modals must be initialized when the modal is opened.
Conclusion
Bootstrap 4 tooltips enhance UX by displaying small pop-up messages on hover, click, or focus. They can be controlled dynamically using JavaScript.