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-1441984904996-e0b6ba687e04?auto=format&fit=crop&w=1200&h=800&q=70" class="card-img-top" alt="">
<div class="card-body">
<h3 class="h6 card-title">Gift wrapping</h3>
<p class="card-text small">We keep things simple, so you can focus on what matters to you.</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">tutorial</span>
<h3 class="h6"><a href="#" class="stretched-link link-body-emphasis no-underline">How to choose the right product</a></h3>
<p class="small text-muted mb-0">Sep 20, 2025</p>
</div>
</div>3Media object
A d-flex row with position-relative so the link covers the image and the text.
Looking back at a busy season
Not sure about the size? Our fit guide and live chat help you choose.
Continue reading<div class="flex relative gap-4 hp-hit p-2 rounded-md">
<img src="https://images.unsplash.com/photo-1567958451986-2de427a4a0be?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">Looking back at a busy season</h3>
<p class="small mb-1">Not sure about the size? Our fit guide and live chat help you choose.</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
Start in minutes and get help from a real person whenever you need it.
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-1630905119003-329447458f85?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">Start in minutes and get help from a real person whenever you need it.</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-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">Glass bottle</a></h3>
<span class="font-semibold">$23.99</span>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card h-full hp-hit">
<img src="../assets/img/product-4.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">Leather wallet</a></h3>
<span class="font-semibold">$57.99</span>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card h-full 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 no-underline">Rain jacket</a></h3>
<span class="font-semibold">$118.99</span>
</div>
</div>
</div>
</div>6Notification rows
List group items are already positioned, so each row is clickable with one stretched link.
5 days ago
25 min ago
<div class="list-group">
<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">Our favourite tips for busy weeks</a>
<p class="small text-muted mb-0">5 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">Five pieces for a capsule wardrobe</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-chat-left-dots-fill" aria-hidden="true"></i></span>
<div>
<a href="#" class="stretched-link link-body-emphasis no-underline font-semibold small">A three-step skincare routine that works</a>
<p class="small text-muted mb-0">25 min 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-7.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">Isla Haddad</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-3.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">Lea Nguyen</a></h3>
<small class="text-muted">Project Manager</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-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">Mia Patel</a></h3>
<small class="text-muted">Operations Manager</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-1573612664822-d7d347da7b80?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">Styling one piece three different ways</a></h3>
<p class="small mb-0 hidden 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 uppercase text-primary-ink">Starter</h3>
<p class="display-6 mb-0">$9.51</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">Easy exchanges</h3>
<p class="small mb-0">Our team has done this many times, so you never have to guess.</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">Member prices</h3>
<p class="small mb-0">Order before 2 pm and most items leave our warehouse the same day.</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">Member prices</h3>
<p class="small mb-0">We work directly with makers, so prices stay fair for everyone.</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.
Looking back at a busy season
We measure success by how many shoppers come back and tell their friends.
How we choose sustainable materials
Free shipping on orders over $50 and easy returns within 30 days.
A small guide to a calmer home
We listen first, then build a plan around what you actually need.
<div class="vstack gap-4">
<div class="relative">
<small class="text-success-emphasis">pixel-nest.example/routine</small>
<h3 class="h6 mb-1"><a href="#" class="stretched-link">Looking back at a busy season</a></h3>
<p class="small text-muted mb-0">We measure success by how many shoppers come back and tell their friends.</p>
</div>
<div class="relative">
<small class="text-success-emphasis">pixel-nest.example/launch</small>
<h3 class="h6 mb-1"><a href="#" class="stretched-link">How we choose sustainable materials</a></h3>
<p class="small text-muted mb-0">Free shipping on orders over $50 and easy returns within 30 days.</p>
</div>
<div class="relative">
<small class="text-success-emphasis">pixel-nest.example/dashboard</small>
<h3 class="h6 mb-1"><a href="#" class="stretched-link">A small guide to a calmer home</a></h3>
<p class="small text-muted mb-0">We listen first, then build a plan around what you actually need.</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">project-16</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">launch-10</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">plan-2</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">idea-36</a>
</div>
</div>
</div>13Event card with date block
A date badge, title and place in one clickable card.
Our guide to gifts under $50
Prague · 15: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">3</strong>
</div>
<div>
<h3 class="h6 mb-1"><a href="#" class="stretched-link link-body-emphasis no-underline">Our guide to gifts under $50</a></h3>
<small class="text-muted"><i class="bi bi-geo-alt-fill" aria-hidden="true"></i> Prague · 15:30</small>
</div>
</div>
</div>14Inbox rows
Message rows where the sender link stretches across the full row.
- Maya Alvarez11:45
How to choose the right product
- Lucas Varga13:45
How to care for linen so it lasts for years
- Mason Moreau19:00
Meet the makers behind our ceramics
<ul class="list-group">
<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">Maya Alvarez</a><p class="small text-muted mb-0">How to choose the right product</p></div><small class="text-muted whitespace-nowrap">11:45</small></li>
<li class="list-group-item list-group-item-action flex gap-4 items-start"><img src="../assets/img/avatar-2.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 Varga</a><p class="small text-muted mb-0">How to care for linen so it lasts for years</p></div><small class="text-muted whitespace-nowrap">13:45</small></li>
<li class="list-group-item list-group-item-action flex gap-4 items-start"><img src="../assets/img/avatar-4.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">Mason Moreau</a><p class="small text-muted mb-0">Meet the makers behind our ceramics</p></div><small class="text-muted whitespace-nowrap">19: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">Secure checkout</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-1521335629791-ce4aec67dd15?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">Apparel</a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="relative rounded-lg overflow-hidden">
<img src="https://images.unsplash.com/photo-1573612664822-d7d347da7b80?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">Beauty</a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="relative rounded-lg overflow-hidden">
<img src="https://images.unsplash.com/photo-1443884590026-2e4d21aee71c?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">Accessories</a>
</div>
</div>
</div>
</div>17Course card with progress
A learning card that resumes the course from anywhere on the card.
Gift wrapping
<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">Gift wrapping</a></h3>
<div class="progress mb-1" role="progressbar" aria-label="Course progress" aria-valuenow="82" aria-valuemin="0" aria-valuemax="100" style="--ui-progress-height:.5rem">
<div class="progress-bar" style="width:82%">
</div>
</div>
<small class="text-muted">82% 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">
9.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 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.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-ink"><i class="bi bi-chat-square-text-fill" aria-hidden="true"></i></span>
<div>
<div class="text-lg font-bold">
2.8k
</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">Data Analyst</a><span class="badge text-bg-light border">Full time</span>
</div>
<small class="text-muted">Engineering · 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">QA Engineer</a><span class="badge text-bg-light border">Remote</span>
</div>
<small class="text-muted">Engineering · Valencia</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">Finance Lead</a><span class="badge text-bg-light border">Full time</span>
</div>
<small class="text-muted">Legal · 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
Thousands of shoppers already trust us, and we work hard to keep it that way.
#guide<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">Thousands of shoppers already trust us, and we work hard to keep it that way.</p>
<a href="#" class="badge text-bg-primary no-underline relative z-2">#guide</a>
</div>
</div>