Stretched Link
A stretched link makes its whole containing block clickable, so a card, list row or tile behaves like one big link. The nearest parent with position: relative (such as a card or position-relative) decides how far the clickable area reaches.
1Card with a stretched button
The button link stretches over the whole card; the dashed outline marks the clickable area.
<div class="card hp-hit" style="max-width:18rem">
<img src="../assets/img/photo-2.svg" class="card-img-top" alt="">
<div class="card-body">
<h3 class="h6 card-title">Dental care</h3>
<p class="card-text small">This elegant goal brings decisions quicker and clearer for teams of every size.</p>
<a href="#" class="btn btn-primary btn-sm stretched-link">Explore</a>
</div>
</div>2Card title as the link
Putting stretched-link on the title link makes the heading the accessible name of the whole card.
<div class="card hp-hit" style="max-width:22rem">
<div class="card-body">
<span class="badge text-bg-light border mb-2">insights</span>
<h3 class="h6"><a href="#" class="stretched-link link-body-emphasis no-underline">The flexible process checklist</a></h3>
<p class="small text-muted mb-0">Oct 22, 2025</p>
</div>
</div>3Media object
A d-flex row with position-relative so the link covers the image and the text.
Inside the bright team
The new reminders helps results you can measure all year round.
Continue reading<div class="flex relative gap-4 hp-hit p-2 rounded-md">
<img src="../assets/img/photo-4.svg" alt="" width="120" height="80" class="rounded-md shrink-0 object-cover">
<div>
<h3 class="h6 mb-1">Inside the bright team</h3>
<p class="small mb-1">The new reminders helps results you can measure all year round.</p>
<a href="#" class="stretched-link small">Continue reading</a>
</div>
</div>4Column as the containing block
Grid columns are not positioned, so add position-relative to the column you want to be clickable.
Only this column is clickable
Our health check-ups helps projects moving forward without extra tools.
Open article<div class="row g-0 bg-surface-3 rounded-md overflow-hidden">
<div class="col-md-5">
<img src="../assets/img/photo-6.svg" alt="" class="w-full h-full object-cover" style="min-height:10rem">
</div>
<div class="col-md-7 p-4 relative hp-hit">
<h3 class="h6">Only this column is clickable</h3>
<p class="small">Our health check-ups helps projects moving forward without extra tools.</p>
<a href="#" class="stretched-link">Open article</a>
</div>
</div>5Product tiles
Shop tiles where the whole card opens the product page.
<div class="row g-3">
<div class="col-md-4">
<div class="card h-full hp-hit">
<img src="../assets/img/product-1.svg" class="card-img-top" alt="">
<div class="card-body">
<h3 class="h6 mb-1"><a href="#" class="stretched-link link-body-emphasis no-underline">Annual check-up</a></h3>
<span class="font-semibold">$63.00</span>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card h-full hp-hit">
<img src="../assets/img/product-2.svg" class="card-img-top" alt="">
<div class="card-body">
<h3 class="h6 mb-1"><a href="#" class="stretched-link link-body-emphasis no-underline">Vaccination</a></h3>
<span class="font-semibold">$167.99</span>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card h-full hp-hit">
<img src="../assets/img/product-3.svg" class="card-img-top" alt="">
<div class="card-body">
<h3 class="h6 mb-1"><a href="#" class="stretched-link link-body-emphasis no-underline">Video consult</a></h3>
<span class="font-semibold">$190.99</span>
</div>
</div>
</div>
</div>6Notification rows
List group items are already positioned, so each row is clickable with one stretched link.
yesterday
20 hours ago
1 hours ago
<div class="list-group">
<div class="list-group-item flex gap-4">
<span class="text-primary"><i class="bi bi-bag-check" aria-hidden="true"></i></span>
<div>
<a href="#" class="stretched-link link-body-emphasis no-underline font-semibold small">A guide to physiotherapy</a>
<p class="small text-muted mb-0">yesterday</p>
</div>
</div>
<div class="list-group-item flex gap-4">
<span class="text-primary"><i class="bi bi-bag-check" aria-hidden="true"></i></span>
<div>
<a href="#" class="stretched-link link-body-emphasis no-underline font-semibold small">How we rebuilt our workflow</a>
<p class="small text-muted mb-0">20 hours ago</p>
</div>
</div>
<div class="list-group-item flex gap-4">
<span class="text-primary"><i class="bi bi-bell" aria-hidden="true"></i></span>
<div>
<a href="#" class="stretched-link link-body-emphasis no-underline font-semibold small">How we rebuilt our community</a>
<p class="small text-muted mb-0">1 hours ago</p>
</div>
</div>
</div>7Team member cards
Profile cards that open the member page from anywhere on the card.
<div class="row g-3">
<div class="col-6 col-md-4">
<div class="card text-center h-full">
<div class="card-body">
<img src="../assets/img/avatar-10.svg" alt="" width="72" height="72" class="rounded-full mb-2">
<h3 class="h6 mb-0"><a href="#" class="stretched-link link-body-emphasis no-underline">Ava Brennan</a></h3>
<small class="text-muted">Finance Lead</small>
</div>
</div>
</div>
<div class="col-6 col-md-4">
<div class="card text-center h-full">
<div class="card-body">
<img src="../assets/img/avatar-4.svg" alt="" width="72" height="72" class="rounded-full mb-2">
<h3 class="h6 mb-0"><a href="#" class="stretched-link link-body-emphasis no-underline">Elena Nguyen</a></h3>
<small class="text-muted">Sales Executive</small>
</div>
</div>
</div>
<div class="col-6 col-md-4">
<div class="card text-center h-full">
<div class="card-body">
<img src="../assets/img/avatar-6.svg" alt="" width="72" height="72" class="rounded-full mb-2">
<h3 class="h6 mb-0"><a href="#" class="stretched-link link-body-emphasis no-underline">Elena Mensah</a></h3>
<small class="text-muted">Frontend Engineer</small>
</div>
</div>
</div>
</div>8Horizontal blog card
A horizontal card layout with the stretched link in the body.
<div class="card overflow-hidden hp-hit">
<div class="row g-0">
<div class="col-4">
<img src="../assets/img/photo-8.svg" alt="" class="w-full h-full object-cover">
</div>
<div class="col-8">
<div class="card-body">
<h3 class="h6"><a href="#" class="stretched-link link-body-emphasis">9 lessons from our story</a></h3>
<p class="small mb-0 hidden sm:block">Our health check-ups helps decisions quicker and clearer from the very first day.</p>
</div>
</div>
</div>
</div>9Pricing card
The plan card selects the plan wherever you click.
<div class="card border-primary hp-hit" style="max-width:18rem">
<div class="card-body text-center">
<h3 class="h6 uppercase text-primary">Starter</h3>
<p class="display-6 mb-0">$16.90</p>
<p class="small text-muted">per month</p>
<a href="#" class="btn btn-outline-primary w-full stretched-link">Select Starter</a>
</div>
</div>10Feature tiles
Bordered feature tiles made clickable with a position-relative wrapper.
<div class="row g-3">
<div class="col-md-4">
<div class="relative border rounded-lg p-4 h-full">
<span class="text-2xl text-primary"><i class="bi bi-lightning-charge" aria-hidden="true"></i></span>
<h3 class="h6 mt-2">Insurance friendly</h3>
<p class="small mb-0">A flexible project brings the whole team on the same page without extra tools.</p>
<a href="#" class="stretched-link" aria-label="Learn more about this feature"></a>
</div>
</div>
<div class="col-md-4">
<div class="relative border rounded-lg p-4 h-full">
<span class="text-2xl text-primary"><i class="bi bi-shield-check" aria-hidden="true"></i></span>
<h3 class="h6 mt-2">Family plans</h3>
<p class="small mb-0">A powerful community gives new ideas to life in just a few clicks.</p>
<a href="#" class="stretched-link" aria-label="Learn more about this feature"></a>
</div>
</div>
<div class="col-md-4">
<div class="relative border rounded-lg p-4 h-full">
<span class="text-2xl text-primary"><i class="bi bi-graph-up-arrow" aria-hidden="true"></i></span>
<h3 class="h6 mt-2">Same-day appointments</h3>
<p class="small mb-0">The new same-day appointments shows your work organised without the usual hassle.</p>
<a href="#" class="stretched-link" aria-label="Learn more about this feature"></a>
</div>
</div>
</div>11Search results
Each result block is one large target, handy on touch screens.
A guide to telehealth
Our physiotherapy brings the whole team on the same page for teams of every size.
Project notes for patients
The new reminders lets projects moving forward without the usual hassle.
The bright project checklist
Our telehealth lets decisions quicker and clearer wherever you are.
<div class="vstack gap-4">
<div class="relative">
<small class="text-success">brand-name-15.example/plan</small>
<h3 class="h6 mb-1"><a href="#" class="stretched-link">A guide to telehealth</a></h3>
<p class="small text-muted mb-0">Our physiotherapy brings the whole team on the same page for teams of every size.</p>
</div>
<div class="relative">
<small class="text-success">brand-name-15.example/launch</small>
<h3 class="h6 mb-1"><a href="#" class="stretched-link">Project notes for patients</a></h3>
<p class="small text-muted mb-0">The new reminders lets projects moving forward without the usual hassle.</p>
</div>
<div class="relative">
<small class="text-success">brand-name-15.example/plan</small>
<h3 class="h6 mb-1"><a href="#" class="stretched-link">The bright project checklist</a></h3>
<p class="small text-muted mb-0">Our telehealth lets decisions quicker and clearer wherever you are.</p>
</div>
</div>12File tiles
File cards in a drive view open the file from anywhere on the tile.
<div class="row g-2">
<div class="col-6 col-md-3">
<div class="relative border rounded-md p-4 text-center">
<span class="text-3xl text-danger"><i class="bi bi-filetype-pdf" aria-hidden="true"></i></span><a href="#" class="stretched-link block small truncate link-body-emphasis no-underline">launch-26</a>
</div>
</div>
<div class="col-6 col-md-3">
<div class="relative border rounded-md p-4 text-center">
<span class="text-3xl text-success"><i class="bi bi-filetype-xlsx" aria-hidden="true"></i></span><a href="#" class="stretched-link block small truncate link-body-emphasis no-underline">community-22</a>
</div>
</div>
<div class="col-6 col-md-3">
<div class="relative border rounded-md p-4 text-center">
<span class="text-3xl text-warning"><i class="bi bi-filetype-pptx" aria-hidden="true"></i></span><a href="#" class="stretched-link block small truncate link-body-emphasis no-underline">goal-12</a>
</div>
</div>
<div class="col-6 col-md-3">
<div class="relative border rounded-md p-4 text-center">
<span class="text-3xl text-info"><i class="bi bi-file-earmark-image" aria-hidden="true"></i></span><a href="#" class="stretched-link block small truncate link-body-emphasis no-underline">plan-11</a>
</div>
</div>
</div>13Event card with date block
A date badge, title and place in one clickable card.
8 lessons from our workflow
Seoul · 20:00<div class="card hp-hit" style="max-width:24rem">
<div class="card-body flex gap-4">
<div class="text-bg-primary rounded-md text-center px-4 py-2">
<small class="block">NOV</small><strong class="text-xl">22</strong>
</div>
<div>
<h3 class="h6 mb-1"><a href="#" class="stretched-link link-body-emphasis no-underline">8 lessons from our workflow</a></h3>
<small class="text-muted"><i class="bi bi-geo-alt" aria-hidden="true"></i> Seoul · 20:00</small>
</div>
</div>
</div>14Inbox rows
Message rows where the sender link stretches across the full row.
- Isla Delgado07:45
Fast ways to improve your project
- Liam Rossi12:45
What's new in dermatology
- Lea Lindqvist13:30
A guide to lab tests
<ul class="list-group">
<li class="list-group-item list-group-item-action flex gap-4 items-start"><img src="../assets/img/avatar-3.svg" alt="" width="36" height="36" class="rounded-full"><div class="grow"><a href="#" class="stretched-link no-underline link-body-emphasis font-semibold small">Isla Delgado</a><p class="small text-muted mb-0">Fast ways to improve your project</p></div><small class="text-muted whitespace-nowrap">07:45</small></li>
<li class="list-group-item list-group-item-action flex gap-4 items-start"><img src="../assets/img/avatar-3.svg" alt="" width="36" height="36" class="rounded-full"><div class="grow"><a href="#" class="stretched-link no-underline link-body-emphasis font-semibold small">Liam Rossi</a><p class="small text-muted mb-0">What's new in dermatology</p></div><small class="text-muted whitespace-nowrap">12:45</small></li>
<li class="list-group-item list-group-item-action flex gap-4 items-start"><img src="../assets/img/avatar-9.svg" alt="" width="36" height="36" class="rounded-full"><div class="grow"><a href="#" class="stretched-link no-underline link-body-emphasis font-semibold small">Lea Lindqvist</a><p class="small text-muted mb-0">A guide to lab tests</p></div><small class="text-muted whitespace-nowrap">13:30</small></li>
</ul>15Limiting the clickable area
Only the inner box has position-relative, so the stretched link covers it and not the outer card.
This text is outside the clickable area.
<div class="card">
<div class="card-body">
<p class="small text-muted">This text is outside the clickable area.</p>
<div class="relative bg-surface-3 rounded-md p-4 hp-hit">
<strong class="block">Physiotherapy</strong> <a href="#" class="stretched-link small">Open</a>
</div>
</div>
</div>16Category image tiles
Image tiles with an overlay caption; the caption link opens the category.
<div class="row g-2">
<div class="col-md-4">
<div class="relative rounded-lg overflow-hidden">
<img src="../assets/img/square-1.svg" alt="" class="w-full object-cover" style="height:9rem">
<div class="absolute bottom-0 start-0 end-0 p-2" style="background:rgba(0,0,0,.5)">
<a href="#" class="stretched-link link-light font-semibold no-underline">Dermatology</a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="relative rounded-lg overflow-hidden">
<img src="../assets/img/square-2.svg" alt="" class="w-full object-cover" style="height:9rem">
<div class="absolute bottom-0 start-0 end-0 p-2" style="background:rgba(0,0,0,.5)">
<a href="#" class="stretched-link link-light font-semibold no-underline">Dental</a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="relative rounded-lg overflow-hidden">
<img src="../assets/img/square-3.svg" alt="" class="w-full object-cover" style="height:9rem">
<div class="absolute bottom-0 start-0 end-0 p-2" style="background:rgba(0,0,0,.5)">
<a href="#" class="stretched-link link-light font-semibold no-underline">Orthopedics</a>
</div>
</div>
</div>
</div>17Course card with progress
A learning card that resumes the course from anywhere on the card.
Physiotherapy
<div class="card hp-hit" style="max-width:20rem">
<div class="card-body">
<h3 class="h6"><a href="#" class="stretched-link link-body-emphasis no-underline">Physiotherapy</a></h3>
<div class="progress mb-1" role="progressbar" aria-label="Course progress" aria-valuenow="70" aria-valuemin="0" aria-valuemax="100" style="--ui-progress-height:.5rem">
<div class="progress-bar" style="width:70%">
</div>
</div>
<small class="text-muted">70% complete</small>
</div>
</div>18Clickable dashboard tiles
Metric tiles that open the matching report.
<div class="row g-2">
<div class="col-md-4">
<div class="card">
<div class="card-body flex items-center gap-4">
<span class="text-2xl text-primary"><i class="bi bi-cart" aria-hidden="true"></i></span>
<div>
<div class="text-lg font-bold">
5.7k
</div>
<a href="#" class="stretched-link small link-secondary">Orders</a>
</div>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-body flex items-center gap-4">
<span class="text-2xl text-primary"><i class="bi bi-people" aria-hidden="true"></i></span>
<div>
<div class="text-lg font-bold">
3.1k
</div>
<a href="#" class="stretched-link small link-secondary">Visitors</a>
</div>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card">
<div class="card-body flex items-center gap-4">
<span class="text-2xl text-primary"><i class="bi bi-chat-square-text" aria-hidden="true"></i></span>
<div>
<div class="text-lg font-bold">
7.5k
</div>
<a href="#" class="stretched-link small link-secondary">Tickets</a>
</div>
</div>
</div>
</div>
</div>19Job listings
Job rows with the title as the stretched link and the details as plain text.
<div class="list-group">
<div class="list-group-item py-4">
<div class="flex flex-wrap justify-between gap-2">
<a href="#" class="stretched-link font-semibold no-underline">Content Writer</a><span class="badge text-bg-light border">Remote</span>
</div>
<small class="text-muted">Research · Toronto</small>
</div>
<div class="list-group-item py-4">
<div class="flex flex-wrap justify-between gap-2">
<a href="#" class="stretched-link font-semibold no-underline">Marketing Lead</a><span class="badge text-bg-light border">Part time</span>
</div>
<small class="text-muted">Marketing · Denver</small>
</div>
<div class="list-group-item py-4">
<div class="flex flex-wrap justify-between gap-2">
<a href="#" class="stretched-link font-semibold no-underline">Product Designer</a><span class="badge text-bg-light border">Remote</span>
</div>
<small class="text-muted">Finance · Cape Town</small>
</div>
</div>20Extra link above the stretched link
Give a second link position-relative and z-2 so it sits above the stretched area and stays clickable on its own.
8 lessons from our idea
Our telehealth connects decisions quicker and clearer all year round.
#how-to<div class="card hp-hit" style="max-width:22rem">
<div class="card-body">
<h3 class="h6"><a href="#" class="stretched-link link-body-emphasis no-underline">8 lessons from our idea</a></h3>
<p class="small">Our telehealth connects decisions quicker and clearer all year round.</p>
<a href="#" class="badge text-bg-primary no-underline relative z-2">#how-to</a>
</div>
</div>