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-1773829020694-413e879d2957?auto=format&fit=crop&w=1200&h=800&q=70" class="card-img-top" alt="">
<div class="card-body">
<h3 class="h6 card-title">Ticketing</h3>
<p class="card-text small">Early bird tickets save you up to forty percent until the end of the month.</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">case study</span>
<h3 class="h6"><a href="#" class="stretched-link link-body-emphasis text-decoration-none">How to get the most out of a conference</a></h3>
<p class="small text-body-secondary mb-0">Nov 26, 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
More than eighty speakers share what they have learned the hard way.
Continue reading<div class="d-flex position-relative gap-3 hp-hit p-2 rounded">
<img src="https://images.unsplash.com/photo-1769798643655-e0f10f62c3fd?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">More than eighty speakers share what they have learned the hard way.</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
We listen first, then build a plan around what you actually need.
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-1560523159-94c9d18bcf27?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">We listen first, then build a plan around what you actually need.</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-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">Student pass</a></h3>
<span class="fw-semibold">$161.00</span>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card h-100 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 text-decoration-none">Early bird pass</a></h3>
<span class="fw-semibold">$301.99</span>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card h-100 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 text-decoration-none">Workshop ticket</a></h3>
<span class="fw-semibold">$144.99</span>
</div>
</div>
</div>
</div>6Notification rows
List group items are already positioned, so each row is clickable with one stretched link.
6 days ago
1 hours ago
3 hours ago
<div class="list-group">
<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">Behind the scenes: building the stage</a>
<p class="small text-body-secondary mb-0">6 days 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">Announcing our first keynote speakers</a>
<p class="small text-body-secondary mb-0">1 hours ago</p>
</div>
</div>
<div class="list-group-item d-flex gap-3">
<span class="text-primary"><i class="bi bi-chat-left-dots" aria-hidden="true"></i></span>
<div>
<a href="#" class="stretched-link link-body-emphasis text-decoration-none fw-semibold small">Our favourite tips for busy weeks</a>
<p class="small text-body-secondary mb-0">3 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-100">
<div class="card-body">
<img src="../assets/img/avatar-12.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">Ivy Delgado</a></h3>
<small class="text-body-secondary">Operations Manager</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-10.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">Kenji Patel</a></h3>
<small class="text-body-secondary">Data Analyst</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-5.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">Arjun Larsen</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.
A beginner's guide to getting started
We measure success by how many attendees come back and tell their friends.
<div class="card overflow-hidden hp-hit">
<div class="row g-0">
<div class="col-4">
<img src="https://images.unsplash.com/photo-1560523159-fbe43c0b465f?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">A beginner's guide to getting started</a></h3>
<p class="small mb-0 d-none d-sm-block">We measure success by how many attendees come back and tell their friends.</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">$5.74</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">Networking lounges</h3>
<p class="small mb-0">The venue is a short walk from the station and fully accessible.</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">Hands-on workshops</h3>
<p class="small mb-0">Every detail is handled by people who care about getting it right.</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">World-class speakers</h3>
<p class="small mb-0">Every session is recorded, so you can catch up on anything you missed.</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.
Joining online: how the virtual pass works
Start in minutes and get help from a real person whenever you need it.
Highlights from last year's workshops
The networking app helps you meet the right people before you arrive.
Behind the scenes: building the stage
Friendly people answer your questions quickly, by phone, chat or email.
<div class="vstack gap-3">
<div class="position-relative">
<small class="text-success">novaium-flow.example/dashboard</small>
<h3 class="h6 mb-1"><a href="#" class="stretched-link">Joining online: how the virtual pass works</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">novaium-flow.example/project</small>
<h3 class="h6 mb-1"><a href="#" class="stretched-link">Highlights from last year's workshops</a></h3>
<p class="small text-body-secondary mb-0">The networking app helps you meet the right people before you arrive.</p>
</div>
<div class="position-relative">
<small class="text-success">novaium-flow.example/team</small>
<h3 class="h6 mb-1"><a href="#" class="stretched-link">Behind the scenes: building the stage</a></h3>
<p class="small text-body-secondary mb-0">Friendly people answer your questions quickly, by phone, chat or email.</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">routine-6</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">team-9</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">goal-5</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">process-32</a>
</div>
</div>
</div>13Event card with date block
A date badge, title and place in one clickable card.
What our attendees asked us most
Austin · 16: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">10</strong>
</div>
<div>
<h3 class="h6 mb-1"><a href="#" class="stretched-link link-body-emphasis text-decoration-none">What our attendees asked us most</a></h3>
<small class="text-body-secondary"><i class="bi bi-geo-alt" aria-hidden="true"></i> Austin · 16:00</small>
</div>
</div>
</div>14Inbox rows
Message rows where the sender link stretches across the full row.
- Priya Rossi10:30
A guide to the city for visiting attendees
- Aria Lindqvist13:15
How to choose the right ticket
- Ella Sato10:15
What makes a panel worth watching
<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-8.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">Priya Rossi</a><p class="small text-body-secondary mb-0">A guide to the city for visiting attendees</p></div><small class="text-body-secondary text-nowrap">10:30</small></li>
<li class="list-group-item list-group-item-action d-flex gap-3 align-items-start"><img src="../assets/img/avatar-9.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">Aria Lindqvist</a><p class="small text-body-secondary mb-0">How to choose the right ticket</p></div><small class="text-body-secondary text-nowrap">13:15</small></li>
<li class="list-group-item list-group-item-action d-flex gap-3 align-items-start"><img src="../assets/img/avatar-8.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">Ella Sato</a><p class="small text-body-secondary mb-0">What makes a panel worth watching</p></div><small class="text-body-secondary text-nowrap">10:15</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">Speaker management</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-1560439514-0fc9d2cd5e1b?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">Panel</a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="position-relative rounded-3 overflow-hidden">
<img src="https://images.unsplash.com/photo-1560523159-fbe43c0b465f?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">Workshop</a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="position-relative rounded-3 overflow-hidden">
<img src="https://images.unsplash.com/photo-1780413462971-e245268a13d2?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">Keynote</a>
</div>
</div>
</div>
</div>17Course card with progress
A learning card that resumes the course from anywhere on the card.
Networking app
<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">Networking app</a></h3>
<div class="progress mb-1" role="progressbar" aria-label="Course progress" aria-valuenow="42" aria-valuemin="0" aria-valuemax="100" style="--ui-progress-height:.5rem">
<div class="progress-bar" style="width:42%">
</div>
</div>
<small class="text-body-secondary">42% 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">
7.3k
</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">
6.3k
</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">
5.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">Part time</span>
</div>
<small class="text-body-secondary">Human Resources · Melbourne</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">Finance Lead</a><span class="badge text-bg-light border">Remote</span>
</div>
<small class="text-body-secondary">Operations · Toronto</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">Support Specialist</a><span class="badge text-bg-light border">Remote</span>
</div>
<small class="text-body-secondary">Design · 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.
The small habits that make a big difference
We listen first, then build a plan around what you actually need.
#product<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">The small habits that make a big difference</a></h3>
<p class="small">We listen first, then build a plan around what you actually need.</p>
<a href="#" class="badge text-bg-primary text-decoration-none position-relative z-2">#product</a>
</div>
</div>