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="https://images.unsplash.com/photo-1560220604-1985ebfe28b1?auto=format&fit=crop&w=1200&h=800&q=70" class="card-img-top" alt="">
<div class="card-body">
<h3 class="h6 card-title">Food relief</h3>
<p class="card-text small">Leave a gift in your will and help future generations.</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">design</span>
<h3 class="h6"><a href="#" class="stretched-link link-body-emphasis text-decoration-none">Inside the shelter: from rescue to new home</a></h3>
<p class="small text-body-secondary mb-0">Sep 16, 2025</p>
</div>
</div>3Media object
A d-flex row with position-relative so the link covers the image and the text.
Five things we learned this year
Monthly gifts let us plan ahead and respond quickly when disaster strikes.
Continue reading<div class="d-flex position-relative gap-3 hp-hit p-2 rounded">
<img src="https://images.unsplash.com/photo-1778864875183-9a89ea0ac26f?auto=format&fit=crop&w=1200&h=800&q=70" alt="" width="120" height="80" class="rounded flex-shrink-0 object-fit-cover">
<div>
<h3 class="h6 mb-1">Five things we learned this year</h3>
<p class="small mb-1">Monthly gifts let us plan ahead and respond quickly when disaster strikes.</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
Thousands of donors already trust us, and we work hard to keep it that way.
Open article<div class="row g-0 bg-body-tertiary rounded overflow-hidden">
<div class="col-md-5">
<img src="https://images.unsplash.com/photo-1706806595136-5afefb45da1a?auto=format&fit=crop&w=1200&h=800&q=70" alt="" class="w-100 h-100 object-fit-cover" style="min-height:10rem">
</div>
<div class="col-md-7 p-3 position-relative hp-hit">
<h3 class="h6">Only this column is clickable</h3>
<p class="small">Thousands of donors already trust us, and we work hard to keep it that way.</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-100 hp-hit">
<img src="../assets/img/product-9.svg" class="card-img-top" alt="">
<div class="card-body">
<h3 class="h6 mb-1"><a href="#" class="stretched-link link-body-emphasis text-decoration-none">Vet care</a></h3>
<span class="fw-semibold">$58.00</span>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card h-100 hp-hit">
<img src="../assets/img/product-8.svg" class="card-img-top" alt="">
<div class="card-body">
<h3 class="h6 mb-1"><a href="#" class="stretched-link link-body-emphasis text-decoration-none">Teacher training</a></h3>
<span class="fw-semibold">$121.00</span>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card h-100 hp-hit">
<img src="../assets/img/product-12.svg" class="card-img-top" alt="">
<div class="card-body">
<h3 class="h6 mb-1"><a href="#" class="stretched-link link-body-emphasis text-decoration-none">Library books</a></h3>
<span class="fw-semibold">$48.99</span>
</div>
</div>
</div>
</div>6Notification rows
List group items are already positioned, so each row is clickable with one stretched link.
47 min ago
just now
<div class="list-group">
<div class="list-group-item d-flex gap-3">
<span class="text-primary"><i class="bi bi-bell" aria-hidden="true"></i></span>
<div>
<a href="#" class="stretched-link link-body-emphasis text-decoration-none fw-semibold small">Looking back at a busy season</a>
<p class="small text-body-secondary mb-0">47 min ago</p>
</div>
</div>
<div class="list-group-item d-flex gap-3">
<span class="text-primary"><i class="bi bi-bell" aria-hidden="true"></i></span>
<div>
<a href="#" class="stretched-link link-body-emphasis text-decoration-none fw-semibold small">Why monthly giving makes such a difference</a>
<p class="small text-body-secondary mb-0">48 min ago</p>
</div>
</div>
<div class="list-group-item d-flex gap-3">
<span class="text-primary"><i class="bi bi-bag-check" aria-hidden="true"></i></span>
<div>
<a href="#" class="stretched-link link-body-emphasis text-decoration-none fw-semibold small">Looking back at a busy season</a>
<p class="small text-body-secondary mb-0">just now</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-100">
<div class="card-body">
<img src="../assets/img/avatar-4.svg" alt="" width="72" height="72" class="rounded-circle mb-2">
<h3 class="h6 mb-0"><a href="#" class="stretched-link link-body-emphasis text-decoration-none">Elena Quinn</a></h3>
<small class="text-body-secondary">Art Director</small>
</div>
</div>
</div>
<div class="col-6 col-md-4">
<div class="card text-center h-100">
<div class="card-body">
<img src="../assets/img/avatar-4.svg" alt="" width="72" height="72" class="rounded-circle mb-2">
<h3 class="h6 mb-0"><a href="#" class="stretched-link link-body-emphasis text-decoration-none">Chloe Ortega</a></h3>
<small class="text-body-secondary">Art Director</small>
</div>
</div>
</div>
<div class="col-6 col-md-4">
<div class="card text-center h-100">
<div class="card-body">
<img src="../assets/img/avatar-9.svg" alt="" width="72" height="72" class="rounded-circle mb-2">
<h3 class="h6 mb-0"><a href="#" class="stretched-link link-body-emphasis text-decoration-none">Ravi Carter</a></h3>
<small class="text-body-secondary">HR Partner</small>
</div>
</div>
</div>
</div>8Horizontal blog card
A horizontal card layout with the stretched link in the body.
Five things we learned this year
Friendly people answer your questions quickly, by phone, chat or email.
<div class="card overflow-hidden hp-hit">
<div class="row g-0">
<div class="col-4">
<img src="https://images.unsplash.com/photo-1778864875166-92a5c1adf24a?auto=format&fit=crop&w=1200&h=800&q=70" alt="" class="w-100 h-100 object-fit-cover">
</div>
<div class="col-8">
<div class="card-body">
<h3 class="h6"><a href="#" class="stretched-link link-body-emphasis">Five things we learned this year</a></h3>
<p class="small mb-0 d-none d-sm-block">Friendly people answer your questions quickly, by phone, chat or email.</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 text-uppercase text-primary">Starter</h3>
<p class="display-6 mb-0">$10.98</p>
<p class="small text-body-secondary">per month</p>
<a href="#" class="btn btn-outline-primary w-100 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="position-relative border rounded-3 p-3 h-100">
<span class="fs-3 text-primary"><i class="bi bi-lightning-charge" aria-hidden="true"></i></span>
<h3 class="h6 mt-2">Tax receipts</h3>
<p class="small mb-0">We listen first, then build a plan around what you actually need.</p>
<a href="#" class="stretched-link" aria-label="Learn more about this feature"></a>
</div>
</div>
<div class="col-md-4">
<div class="position-relative border rounded-3 p-3 h-100">
<span class="fs-3 text-primary"><i class="bi bi-shield-check" aria-hidden="true"></i></span>
<h3 class="h6 mt-2">Local partners</h3>
<p class="small mb-0">Clear prices, honest advice and no surprises along the way.</p>
<a href="#" class="stretched-link" aria-label="Learn more about this feature"></a>
</div>
</div>
<div class="col-md-4">
<div class="position-relative border rounded-3 p-3 h-100">
<span class="fs-3 text-primary"><i class="bi bi-graph-up-arrow" aria-hidden="true"></i></span>
<h3 class="h6 mt-2">Tax receipts</h3>
<p class="small mb-0">Local partners know their communities and make sure help arrives where it matters.</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.
Our favourite tips for busy weeks
Ninety cents of every dollar goes directly to the projects you support.
Ten ways to fundraise with friends
Start in minutes and get help from a real person whenever you need it.
Stories from the families we support
You receive photos and updates showing exactly what your donation achieved.
<div class="vstack gap-3">
<div class="position-relative">
<small class="text-success">rallyium.example/goal</small>
<h3 class="h6 mb-1"><a href="#" class="stretched-link">Our favourite tips for busy weeks</a></h3>
<p class="small text-body-secondary mb-0">Ninety cents of every dollar goes directly to the projects you support.</p>
</div>
<div class="position-relative">
<small class="text-success">rallyium.example/goal</small>
<h3 class="h6 mb-1"><a href="#" class="stretched-link">Ten ways to fundraise with friends</a></h3>
<p class="small text-body-secondary mb-0">Start in minutes and get help from a real person whenever you need it.</p>
</div>
<div class="position-relative">
<small class="text-success">rallyium.example/idea</small>
<h3 class="h6 mb-1"><a href="#" class="stretched-link">Stories from the families we support</a></h3>
<p class="small text-body-secondary mb-0">You receive photos and updates showing exactly what your donation achieved.</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="position-relative border rounded p-3 text-center">
<span class="fs-2 text-danger"><i class="bi bi-filetype-pdf" aria-hidden="true"></i></span><a href="#" class="stretched-link d-block small text-truncate link-body-emphasis text-decoration-none">journey-36</a>
</div>
</div>
<div class="col-6 col-md-3">
<div class="position-relative border rounded p-3 text-center">
<span class="fs-2 text-success"><i class="bi bi-filetype-xlsx" aria-hidden="true"></i></span><a href="#" class="stretched-link d-block small text-truncate link-body-emphasis text-decoration-none">journey-8</a>
</div>
</div>
<div class="col-6 col-md-3">
<div class="position-relative border rounded p-3 text-center">
<span class="fs-2 text-warning"><i class="bi bi-filetype-pptx" aria-hidden="true"></i></span><a href="#" class="stretched-link d-block small text-truncate link-body-emphasis text-decoration-none">experience-18</a>
</div>
</div>
<div class="col-6 col-md-3">
<div class="position-relative border rounded p-3 text-center">
<span class="fs-2 text-info"><i class="bi bi-file-earmark-image" aria-hidden="true"></i></span><a href="#" class="stretched-link d-block small text-truncate link-body-emphasis text-decoration-none">workflow-8</a>
</div>
</div>
</div>13Event card with date block
A date badge, title and place in one clickable card.
Why we plant trees with the schools we build
Cape Town · 20:00<div class="card hp-hit" style="max-width:24rem">
<div class="card-body d-flex gap-3">
<div class="text-bg-primary rounded text-center px-3 py-2">
<small class="d-block">NOV</small><strong class="fs-4">4</strong>
</div>
<div>
<h3 class="h6 mb-1"><a href="#" class="stretched-link link-body-emphasis text-decoration-none">Why we plant trees with the schools we build</a></h3>
<small class="text-body-secondary"><i class="bi bi-geo-alt" aria-hidden="true"></i> Cape Town · 20:00</small>
</div>
</div>
</div>14Inbox rows
Message rows where the sender link stretches across the full row.
- Nora Sato20:30
What our donors asked us most
- Finn Larsen11:15
Our yearly impact report, explained
- Jonah Duarte19:30
Meet the partners behind our water projects
<ul class="list-group">
<li class="list-group-item list-group-item-action d-flex gap-3 align-items-start"><img src="../assets/img/avatar-12.svg" alt="" width="36" height="36" class="rounded-circle"><div class="flex-grow-1"><a href="#" class="stretched-link text-decoration-none link-body-emphasis fw-semibold small">Nora Sato</a><p class="small text-body-secondary mb-0">What our donors asked us most</p></div><small class="text-body-secondary text-nowrap">20:30</small></li>
<li class="list-group-item list-group-item-action d-flex gap-3 align-items-start"><img src="../assets/img/avatar-12.svg" alt="" width="36" height="36" class="rounded-circle"><div class="flex-grow-1"><a href="#" class="stretched-link text-decoration-none link-body-emphasis fw-semibold small">Finn Larsen</a><p class="small text-body-secondary mb-0">Our yearly impact report, explained</p></div><small class="text-body-secondary text-nowrap">11:15</small></li>
<li class="list-group-item list-group-item-action d-flex gap-3 align-items-start"><img src="../assets/img/avatar-3.svg" alt="" width="36" height="36" class="rounded-circle"><div class="flex-grow-1"><a href="#" class="stretched-link text-decoration-none link-body-emphasis fw-semibold small">Jonah Duarte</a><p class="small text-body-secondary mb-0">Meet the partners behind our water projects</p></div><small class="text-body-secondary text-nowrap">19: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-body-secondary">This text is outside the clickable area.</p>
<div class="position-relative bg-body-tertiary rounded p-3 hp-hit">
<strong class="d-block">Food relief</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="position-relative rounded-3 overflow-hidden">
<img src="https://images.unsplash.com/photo-1758599668338-4c55a3bd0ce0?auto=format&fit=crop&w=800&h=800&q=70" alt="" class="w-100 object-fit-cover" style="height:9rem">
<div class="position-absolute bottom-0 start-0 end-0 p-2" style="background:rgba(0,0,0,.5)">
<a href="#" class="stretched-link link-light fw-semibold text-decoration-none">Health</a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="position-relative rounded-3 overflow-hidden">
<img src="https://images.unsplash.com/photo-1778864875166-92a5c1adf24a?auto=format&fit=crop&w=800&h=800&q=70" alt="" class="w-100 object-fit-cover" style="height:9rem">
<div class="position-absolute bottom-0 start-0 end-0 p-2" style="background:rgba(0,0,0,.5)">
<a href="#" class="stretched-link link-light fw-semibold text-decoration-none">Relief</a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="position-relative rounded-3 overflow-hidden">
<img src="https://images.unsplash.com/photo-1758599668360-48ba8ba71b47?auto=format&fit=crop&w=800&h=800&q=70" alt="" class="w-100 object-fit-cover" style="height:9rem">
<div class="position-absolute bottom-0 start-0 end-0 p-2" style="background:rgba(0,0,0,.5)">
<a href="#" class="stretched-link link-light fw-semibold text-decoration-none">Animals</a>
</div>
</div>
</div>
</div>17Course card with progress
A learning card that resumes the course from anywhere on the card.
Disaster response
<div class="card hp-hit" style="max-width:20rem">
<div class="card-body">
<h3 class="h6"><a href="#" class="stretched-link link-body-emphasis text-decoration-none">Disaster response</a></h3>
<div class="progress mb-1" role="progressbar" aria-label="Course progress" aria-valuenow="38" aria-valuemin="0" aria-valuemax="100" style="--ui-progress-height:.5rem">
<div class="progress-bar" style="width:38%">
</div>
</div>
<small class="text-body-secondary">38% 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 d-flex align-items-center gap-3">
<span class="fs-3 text-primary"><i class="bi bi-cart" aria-hidden="true"></i></span>
<div>
<div class="fs-5 fw-bold">
1.0k
</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 d-flex align-items-center gap-3">
<span class="fs-3 text-primary"><i class="bi bi-people" aria-hidden="true"></i></span>
<div>
<div class="fs-5 fw-bold">
520
</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 d-flex align-items-center gap-3">
<span class="fs-3 text-primary"><i class="bi bi-chat-square-text" aria-hidden="true"></i></span>
<div>
<div class="fs-5 fw-bold">
7.0k
</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-3">
<div class="d-flex flex-wrap justify-content-between gap-2">
<a href="#" class="stretched-link fw-semibold text-decoration-none">Customer Success</a><span class="badge text-bg-light border">Remote</span>
</div>
<small class="text-body-secondary">Engineering · Seoul</small>
</div>
<div class="list-group-item py-3">
<div class="d-flex flex-wrap justify-content-between gap-2">
<a href="#" class="stretched-link fw-semibold text-decoration-none">Data Analyst</a><span class="badge text-bg-light border">Remote</span>
</div>
<small class="text-body-secondary">Operations · Kyoto</small>
</div>
<div class="list-group-item py-3">
<div class="d-flex flex-wrap justify-content-between gap-2">
<a href="#" class="stretched-link fw-semibold text-decoration-none">QA Engineer</a><span class="badge text-bg-light border">Remote</span>
</div>
<small class="text-body-secondary">Customer Support · Dublin</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.
What happens after a disaster appeal
Our team has done this many times, so you never have to guess.
#update<div class="card hp-hit" style="max-width:22rem">
<div class="card-body">
<h3 class="h6"><a href="#" class="stretched-link link-body-emphasis text-decoration-none">What happens after a disaster appeal</a></h3>
<p class="small">Our team has done this many times, so you never have to guess.</p>
<a href="#" class="badge text-bg-primary text-decoration-none position-relative z-2">#update</a>
</div>
</div>