Popovers
Popovers are small overlays with a title and a few lines of content, opened by click, hover or focus. Use them for hints, definitions and details that do not deserve a whole dialog; the examples cover placements, triggers, disabled elements, custom styles and real interface spots.
1Basic popover
Click the button to toggle a popover with a title and content.
<button type="button" class="btn btn-lg btn-danger" data-bs-toggle="popover" data-bs-title="About Nimbus Labs" data-bs-content="Mentors review your projects and give feedback within two days.">Click to toggle popover</button>2Four directions
<code>data-bs-placement</code> chooses top, right, bottom or left.
<div class="d-flex flex-wrap gap-2">
<button type="button" class="btn btn-secondary" data-bs-toggle="popover" data-bs-content="Popover on the top." data-bs-placement="top">Popover on top</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="popover" data-bs-content="Popover on the right." data-bs-placement="right">Popover on right</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="popover" data-bs-content="Popover on the bottom." data-bs-placement="bottom">Popover on bottom</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="popover" data-bs-content="Popover on the left." data-bs-placement="left">Popover on left</button>
</div>3Dismiss on next click
<code>data-bs-trigger="focus"</code> closes the popover when the user clicks anywhere else. Use an <code>a</code> with <code>tabindex</code>.
<a tabindex="0" class="btn btn-outline-danger" role="button" data-bs-toggle="popover" data-bs-title="Dismissible popover" data-bs-content="Click anywhere to close me." data-bs-trigger="focus">Dismissible popover</a>4Hover trigger
<code>data-bs-trigger="hover focus"</code> opens on mouse hover and on keyboard focus.
<button type="button" class="btn btn-outline-primary" data-bs-toggle="popover" data-bs-title="Quick facts" data-bs-content="Expert mentors is included in every plan." data-bs-trigger="hover focus"><i class="bi bi-cursor" aria-hidden="true"></i> Hover me</button>5Disabled element
Disabled buttons do not fire events, so wrap them in a focusable span that carries the popover.
<span class="d-inline-block" tabindex="0" data-bs-toggle="popover" data-bs-trigger="hover focus" data-bs-content="Finish your profile to unlock this.">
<button class="btn btn-primary" type="button" disabled>Disabled button</button>
</span>6In running text
A popover on an inline link explains a term without leaving the sentence.
Every order includes certificates at no extra cost, and you can cancel at any time.
<p class="mb-0">Every order includes <a tabindex="0" class="link-primary text-decoration-underline" role="button" data-bs-toggle="popover" data-bs-title="Study groups" data-bs-content="Every course is built around hands-on projects you can add to your portfolio." data-bs-trigger="focus">certificates</a> at no extra cost, and you can cancel at any time.</p>7Help icon
A small round icon button next to a heading opens a hint.
Monthly budget
<div class="d-flex align-items-center gap-2">
<h3 class="h6 mb-0">Monthly budget</h3>
<button type="button" class="btn btn-link p-0 link-secondary" data-bs-toggle="popover" data-bs-title="How it works" data-bs-content="We sum all invoices that are due this month." data-bs-placement="right" aria-label="Help"><i class="bi bi-question-circle" aria-hidden="true"></i></button>
</div>8Content only
Leave out <code>data-bs-title</code> for a popover without a header.
<button type="button" class="btn btn-outline-secondary" data-bs-toggle="popover" data-bs-content="Short quizzes after each lesson help new knowledge stick." data-bs-placement="bottom">No title</button>9Custom style
<code>data-bs-custom-class</code> adds a class to the popover so you can theme it.
<button type="button" class="btn btn-primary" data-bs-toggle="popover" data-bs-title="Branded popover" data-bs-content="Uses the template primary colour." data-bs-custom-class="cb-popover">Custom popover</button>10Status buttons
Small outline buttons whose popovers explain each status.
<div class="d-flex flex-wrap gap-2">
<button type="button" class="btn btn-sm btn-outline-success" data-bs-toggle="popover" data-bs-title="Paid" data-bs-content="Received on Jun 11, 2026" data-bs-placement="top">Paid</button>
<button type="button" class="btn btn-sm btn-outline-warning" data-bs-toggle="popover" data-bs-title="Pending" data-bs-content="Waiting for approval" data-bs-placement="top">Pending</button>
<button type="button" class="btn btn-sm btn-outline-danger" data-bs-toggle="popover" data-bs-title="Overdue" data-bs-content="Was due on Dec 1, 2025" data-bs-placement="top">Overdue</button>
<button type="button" class="btn btn-sm btn-outline-info" data-bs-toggle="popover" data-bs-title="Draft" data-bs-content="Not sent yet" data-bs-placement="top">Draft</button>
</div>11Form label hint
An info icon in a label explains what to enter.
<div style="max-width:360px">
<label for="pop-field-1115" class="form-label d-flex align-items-center gap-1">Tax number <a tabindex="0" class="link-secondary" role="button" data-bs-toggle="popover" data-bs-content="You find it on the top right of your last tax notice." data-bs-trigger="focus" aria-label="About the tax number"><i class="bi bi-info-circle" aria-hidden="true"></i></a></label>
<input type="text" class="form-control" id="pop-field-1115">
</div>12In a table
Status badges in a table reveal details in a popover.
<div class="table-responsive">
<table class="table align-middle mb-0">
<thead>
<tr>
<th scope="col">Order</th>
<th scope="col">Total</th>
<th scope="col">Status</th>
</tr>
</thead>
<tbody>
<tr>
<td>#INV-3417</td>
<td>$560.80</td>
<td><a tabindex="0" class="badge text-bg-light border text-decoration-none" role="button" data-bs-toggle="popover" data-bs-title="Approved" data-bs-content="Last change 12 hours ago by Jonah." data-bs-trigger="focus" data-bs-placement="left">Approved</a></td>
</tr>
<tr>
<td>#TX-5465</td>
<td>$34.66</td>
<td><a tabindex="0" class="badge text-bg-light border text-decoration-none" role="button" data-bs-toggle="popover" data-bs-title="In review" data-bs-content="Last change 32 min ago by Ravi." data-bs-trigger="focus" data-bs-placement="left">In review</a></td>
</tr>
<tr>
<td>#INV-8667</td>
<td>$74.13</td>
<td><a tabindex="0" class="badge text-bg-light border text-decoration-none" role="button" data-bs-toggle="popover" data-bs-title="Pending" data-bs-content="Last change just now by Nadia." data-bs-trigger="focus" data-bs-placement="left">Pending</a></td>
</tr>
</tbody>
</table>
</div>13User card
Clicking an avatar shows the person's name, role and city.
<button type="button" class="btn p-0 border-0 rounded-circle" data-bs-toggle="popover" data-bs-placement="right" data-bs-title="Mia Kowalski" data-bs-content="HR Partner in Edinburgh" aria-label="About Mia Kowalski"><img src="../assets/img/avatar-4.svg" class="rounded-circle" width="48" height="48" alt="Mia Kowalski"></button>14Long content
Popovers wrap longer text up to their maximum width.
<button type="button" class="btn btn-outline-dark" data-bs-toggle="popover" data-bs-title="Release notes" data-bs-content="Thousands of students already trust us, and we work hard to keep it that way. We listen first, then build a plan around what you actually need. Our team has done this many times, so you never have to guess."><i class="bi bi-journal-text" aria-hidden="true"></i> What's new</button>15Auto placement
<code>data-bs-placement="auto"</code> lets the popover pick the side with the most room.
<button type="button" class="btn btn-info" data-bs-toggle="popover" data-bs-title="Auto" data-bs-content="I chose the best side for the current viewport." data-bs-placement="auto">Auto placed</button>16Offset
<code>data-bs-offset="0,16"</code> moves the popover further from its trigger.
<button type="button" class="btn btn-warning" data-bs-toggle="popover" data-bs-content="Sixteen pixels away from the button." data-bs-offset="0,16">Offset popover</button>17Feature list
Info icons in a pricing list explain each feature.
<div class="card" style="max-width:340px">
<div class="card-body">
<h3 class="h6">Pro plan</h3>
<ul class="list-unstyled mb-0">
<li class="d-flex align-items-center gap-2 mb-2"><span class="text-success"><i class="bi bi-check-lg" aria-hidden="true"></i></span>Mobile learning<a tabindex="0" class="link-secondary ms-auto" role="button" data-bs-toggle="popover" data-bs-title="Mobile learning" data-bs-content="Friendly people answer your questions quickly, by phone, chat or email." data-bs-trigger="focus" data-bs-placement="left" aria-label="About Mobile learning"><i class="bi bi-info-circle" aria-hidden="true"></i></a></li>
<li class="d-flex align-items-center gap-2 mb-2"><span class="text-success"><i class="bi bi-check-lg" aria-hidden="true"></i></span>Community forum<a tabindex="0" class="link-secondary ms-auto" role="button" data-bs-toggle="popover" data-bs-title="Community forum" data-bs-content="The mobile app downloads lessons, so you can learn on the train." data-bs-trigger="focus" data-bs-placement="left" aria-label="About Community forum"><i class="bi bi-info-circle" aria-hidden="true"></i></a></li>
<li class="d-flex align-items-center gap-2 mb-2"><span class="text-success"><i class="bi bi-check-lg" aria-hidden="true"></i></span>Lifetime access<a tabindex="0" class="link-secondary ms-auto" role="button" data-bs-toggle="popover" data-bs-title="Lifetime access" data-bs-content="Career coaches help with your CV, portfolio and interview practice." data-bs-trigger="focus" data-bs-placement="left" aria-label="About Lifetime access"><i class="bi bi-info-circle" aria-hidden="true"></i></a></li>
<li class="d-flex align-items-center gap-2 mb-2"><span class="text-success"><i class="bi bi-check-lg" aria-hidden="true"></i></span>Hands-on projects<a tabindex="0" class="link-secondary ms-auto" role="button" data-bs-toggle="popover" data-bs-title="Hands-on projects" data-bs-content="Learn on your schedule, with lessons that fit into a lunch break." data-bs-trigger="focus" data-bs-placement="left" aria-label="About Hands-on projects"><i class="bi bi-info-circle" aria-hidden="true"></i></a></li>
</ul>
</div>
</div>18Toolbar
Popovers on buttons of a button group give each tool a short explanation.
<div class="btn-group" role="group" aria-label="Editor tools">
<button type="button" class="btn btn-outline-secondary" data-bs-toggle="popover" data-bs-title="Bold" data-bs-content="Make the selected text bold." data-bs-placement="bottom" data-bs-trigger="hover focus" aria-label="Bold"><i class="bi bi-type-bold" aria-hidden="true"></i></button>
<button type="button" class="btn btn-outline-secondary" data-bs-toggle="popover" data-bs-title="Italic" data-bs-content="Slant the selected text." data-bs-placement="bottom" data-bs-trigger="hover focus" aria-label="Italic"><i class="bi bi-type-italic" aria-hidden="true"></i></button>
<button type="button" class="btn btn-outline-secondary" data-bs-toggle="popover" data-bs-title="Link" data-bs-content="Turn the text into a link." data-bs-placement="bottom" data-bs-trigger="hover focus" aria-label="Link"><i class="bi bi-link-45deg" aria-hidden="true"></i></button>
</div>19Escape a scrolling box
<code>data-bs-container="body"</code> renders the popover outside an <code>overflow</code> container so it is not cut off.
Earn a certificate at the end of each course and share it with employers.
We measure success by how many students come back and tell their friends.
<div class="border rounded p-3 overflow-auto" style="max-height:90px">
<p class="small">Earn a certificate at the end of each course and share it with employers.</p>
<button type="button" class="btn btn-sm btn-primary" data-bs-toggle="popover" data-bs-title="Not clipped" data-bs-content="Attached to the body element." data-bs-container="body">Open popover</button>
<p class="small mt-2 mb-0">We measure success by how many students come back and tell their friends.</p>
</div>20Input focus hint
A focus-triggered popover on an input lists the password rules while typing.
<div style="max-width:320px">
<label for="pop-pass-1116" class="form-label">New password</label>
<input type="password" class="form-control" id="pop-pass-1116" data-bs-toggle="popover" data-bs-trigger="focus" data-bs-placement="right" data-bs-title="Password rules" data-bs-content="At least 10 characters, one number and one symbol." autocomplete="new-password">
</div>