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-1565895405140-6b9830a88c19?auto=format&fit=crop&w=1200&h=800&q=70" class="card-img-top" alt="">
<div class="card-body">
<h3 class="h6 card-title">Dine-in</h3>
<p class="card-text small">Start in minutes and get help from a real person whenever you need it.</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 no-underline">Three pasta shapes to make at home</a></h3>
<p class="small text-muted mb-0">Dec 30, 2025</p>
</div>
</div>3Media object
A d-flex row with position-relative so the link covers the image and the text.
The small habits that make a big difference
Every dish is cooked to order, so tell us if you would like anything changed.
Continue reading<div class="flex relative gap-4 hp-hit p-2 rounded-md">
<img src="https://images.unsplash.com/photo-1625862692743-3f57873bb37c?auto=format&fit=crop&w=1200&h=800&q=70" alt="" width="120" height="80" class="rounded-md shrink-0 object-cover">
<div>
<h3 class="h6 mb-1">The small habits that make a big difference</h3>
<p class="small mb-1">Every dish is cooked to order, so tell us if you would like anything changed.</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
Vegan, vegetarian and gluten-free dishes are marked clearly on every menu.
Open article<div class="row g-0 bg-surface-3 rounded-md overflow-hidden">
<div class="col-md-5">
<img src="https://images.unsplash.com/photo-1579631542761-d7c4e913f8d4?auto=format&fit=crop&w=1200&h=800&q=70" 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">Vegan, vegetarian and gluten-free dishes are marked clearly on every menu.</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">Truffle pasta</a></h3>
<span class="font-semibold">$24.00</span>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card h-full 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 no-underline">Lemon tiramisu</a></h3>
<span class="font-semibold">$10.00</span>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card h-full hp-hit">
<img src="../assets/img/product-6.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">House lemonade</a></h3>
<span class="font-semibold">$5.00</span>
</div>
</div>
</div>
</div>6Notification rows
List group items are already positioned, so each row is clickable with one stretched link.
2 days ago
1 days ago
<div class="list-group">
<div class="list-group-item flex gap-4">
<span class="text-primary-ink"><i class="bi bi-bag-check-fill" aria-hidden="true"></i></span>
<div>
<a href="#" class="stretched-link link-body-emphasis no-underline font-semibold small">Our favourite tips for busy weeks</a>
<p class="small text-muted mb-0">2 days ago</p>
</div>
</div>
<div class="list-group-item flex gap-4">
<span class="text-primary-ink"><i class="bi bi-bag-check-fill" aria-hidden="true"></i></span>
<div>
<a href="#" class="stretched-link link-body-emphasis no-underline font-semibold small">A beginner's guide to getting started</a>
<p class="small text-muted mb-0">just now</p>
</div>
</div>
<div class="list-group-item flex gap-4">
<span class="text-primary-ink"><i class="bi bi-bell-fill" aria-hidden="true"></i></span>
<div>
<a href="#" class="stretched-link link-body-emphasis no-underline font-semibold small">Five wines to pair with a summer dinner</a>
<p class="small text-muted mb-0">1 days 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-8.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">Hana Sato</a></h3>
<small class="text-muted">Marketing 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">Mia Varga</a></h3>
<small class="text-muted">Customer Success</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-12.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">Aria Lindqvist</a></h3>
<small class="text-muted">Sales Executive</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="https://images.unsplash.com/photo-1682264933304-1943bfa8df38?auto=format&fit=crop&w=1200&h=800&q=70" 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">Our chef's guide to seasonal autumn produce</a></h3>
<p class="small mb-0 hidden sm:block">Our menu changes with the seasons and the best produce from nearby farms.</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-ink">Starter</h3>
<p class="display-6 mb-0">$16.15</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-ink"><i class="bi bi-lightning-charge-fill" aria-hidden="true"></i></span>
<h3 class="h6 mt-2">Online reservations</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="relative border rounded-lg p-4 h-full">
<span class="text-2xl text-primary-ink"><i class="bi bi-shield-check" aria-hidden="true"></i></span>
<h3 class="h6 mt-2">Kid friendly</h3>
<p class="small mb-0">Book a table online in seconds, or call us for groups of eight or more.</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-ink"><i class="bi bi-graph-up-arrow" aria-hidden="true"></i></span>
<h3 class="h6 mt-2">Local ingredients</h3>
<p class="small mb-0">Order for pickup or delivery and enjoy the same dishes at home.</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.
Meet the farmers behind our menu
Our sommelier has paired each dish with wines from small family vineyards.
How we make our sourdough every morning
Our terrace is open from spring to autumn, with heaters for cooler evenings.
The story of our wood-fired oven
Bread is baked every morning and pasta is rolled by hand in our kitchen.
<div class="vstack gap-4">
<div class="relative">
<small class="text-success-emphasis">yaraly-labs.example/update</small>
<h3 class="h6 mb-1"><a href="#" class="stretched-link">Meet the farmers behind our menu</a></h3>
<p class="small text-muted mb-0">Our sommelier has paired each dish with wines from small family vineyards.</p>
</div>
<div class="relative">
<small class="text-success-emphasis">yaraly-labs.example/community</small>
<h3 class="h6 mb-1"><a href="#" class="stretched-link">How we make our sourdough every morning</a></h3>
<p class="small text-muted mb-0">Our terrace is open from spring to autumn, with heaters for cooler evenings.</p>
</div>
<div class="relative">
<small class="text-success-emphasis">yaraly-labs.example/release</small>
<h3 class="h6 mb-1"><a href="#" class="stretched-link">The story of our wood-fired oven</a></h3>
<p class="small text-muted mb-0">Bread is baked every morning and pasta is rolled by hand in our kitchen.</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-emphasis"><i class="bi bi-filetype-pdf" aria-hidden="true"></i></span><a href="#" class="stretched-link block small truncate link-body-emphasis no-underline">update-14</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-emphasis"><i class="bi bi-filetype-xlsx" aria-hidden="true"></i></span><a href="#" class="stretched-link block small truncate link-body-emphasis no-underline">workflow-7</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-emphasis"><i class="bi bi-filetype-pptx" aria-hidden="true"></i></span><a href="#" class="stretched-link block small truncate link-body-emphasis no-underline">story-11</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-emphasis"><i class="bi bi-file-earmark-image-fill" aria-hidden="true"></i></span><a href="#" class="stretched-link block small truncate link-body-emphasis no-underline">workflow-14</a>
</div>
</div>
</div>13Event card with date block
A date badge, title and place in one clickable card.
How to choose the right dish
Oslo · 17:30<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">4</strong>
</div>
<div>
<h3 class="h6 mb-1"><a href="#" class="stretched-link link-body-emphasis no-underline">How to choose the right dish</a></h3>
<small class="text-muted"><i class="bi bi-geo-alt-fill" aria-hidden="true"></i> Oslo · 17:30</small>
</div>
</div>
</div>14Inbox rows
Message rows where the sender link stretches across the full row.
- Theo Ashford10:30
Three pasta shapes to make at home
- Lucas Fischer12:00
What our guests asked us most
- Ruby Patel15:00
Looking back at a busy season
<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">Theo Ashford</a><p class="small text-muted mb-0">Three pasta shapes to make at home</p></div><small class="text-muted whitespace-nowrap">10:30</small></li>
<li class="list-group-item list-group-item-action flex gap-4 items-start"><img src="../assets/img/avatar-6.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">Lucas Fischer</a><p class="small text-muted mb-0">What our guests asked us most</p></div><small class="text-muted whitespace-nowrap">12:00</small></li>
<li class="list-group-item list-group-item-action flex gap-4 items-start"><img src="../assets/img/avatar-5.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">Ruby Patel</a><p class="small text-muted mb-0">Looking back at a busy season</p></div><small class="text-muted whitespace-nowrap">15:00</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">Takeaway</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="https://images.unsplash.com/photo-1494346480775-936a9f0d0877?auto=format&fit=crop&w=800&h=800&q=70" 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">Drinks</a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="relative rounded-lg overflow-hidden">
<img src="https://images.unsplash.com/photo-1682264933304-1943bfa8df38?auto=format&fit=crop&w=800&h=800&q=70" 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">Mains</a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="relative rounded-lg overflow-hidden">
<img src="https://images.unsplash.com/photo-1538333581680-29dd4752ddf2?auto=format&fit=crop&w=800&h=800&q=70" 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">Specials</a>
</div>
</div>
</div>
</div>17Course card with progress
A learning card that resumes the course from anywhere on the card.
Catering
<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">Catering</a></h3>
<div class="progress mb-1" role="progressbar" aria-label="Course progress" aria-valuenow="73" aria-valuemin="0" aria-valuemax="100" style="--ui-progress-height:.5rem">
<div class="progress-bar" style="width:73%">
</div>
</div>
<small class="text-muted">73% 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-ink"><i class="bi bi-cart-fill" aria-hidden="true"></i></span>
<div>
<div class="text-lg font-bold">
8.1k
</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-ink"><i class="bi bi-people-fill" aria-hidden="true"></i></span>
<div>
<div class="text-lg font-bold">
8.8k
</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-ink"><i class="bi bi-chat-square-text-fill" aria-hidden="true"></i></span>
<div>
<div class="text-lg font-bold">
6.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-4">
<div class="flex flex-wrap justify-between gap-2">
<a href="#" class="stretched-link font-semibold no-underline">Support Specialist</a><span class="badge text-bg-light border">Remote</span>
</div>
<small class="text-muted">Marketing · Austin</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">Project Manager</a><span class="badge text-bg-light border">Part time</span>
</div>
<small class="text-muted">Marketing · Prague</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">Backend Engineer</a><span class="badge text-bg-light border">Remote</span>
</div>
<small class="text-muted">Engineering · Seoul</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
Clear prices, honest advice and no surprises along the way.
#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 no-underline">The small habits that make a big difference</a></h3>
<p class="small">Clear prices, honest advice and no surprises along the way.</p>
<a href="#" class="badge text-bg-primary no-underline relative z-2">#product</a>
</div>
</div>